[#47529] ruby1.9.2 にて、 IO#reopen で第2引数を省略したときにモードが引き継がれない — jugyo kohno <kkohno@...>

jugyo と申します

11 messages 2010/10/08
[#47562] Re: ruby1.9.2 にて、 IO#reopen で第2引数を省略したときにモードが引き継がれない — "Y. NOBUOKA" <nobuoka@...> 2010/10/15

信岡です。

[#47537] Excel用のxmlssファイルを作成するライブラリ exlap_c — "YOSHIIZUMI" <t-yoshiizumi@...>

 吉泉といいます。

11 messages 2010/10/10

[ruby-list:47507] Re: eRuby における % 行

From: Makoto Kuwata <kwa@...>
Date: 2010-10-01 17:29:23 UTC
List: ruby-list #47507
桑田といいます。

2010/9/28 5.5 <5.5@moji.gr.jp>:
>
> お尋ねしたいのは
> ・なぜ % 行記法がダメなのか

推測しますと、「%」は行頭にないとだめでインデントはできないから、
インデントしまくりのHTMLとは相性が悪いからじゃないでしょうか。

> module Erubis
>  class Eruby
>    include PercentLineEnhancer
>  end
> end

これはうまくいかないでしょう。
Erubis::Erubyのサブクラスを作って、そこにincludeしないとだめなはず。
理由:PercentLineEnhancerは、Erubyクラスのメソッドを上書きすることで
機能を実現しています。しかしErubyクラスに直接includeしても
Erubyクラスのメソッドを上書きすることにはなりません。
(逆に、PercentLineEnhancerのメソッドをErubyクラスが上書きする格好になる。)

> ・Rails 3(というか Rails の Erubis)で % 行記法を使う方法
> の二点です。

具体的なやり方は自分も分かりませんが、Rails3は内部でErubisを
カスタマイズしてるので、それを考慮すればできるかもしれません。
今、Rails3のソースにgrepをかけると
actionpack/lib/action_view/template/handlers/erb.rb
actionpack/test/template/erb/helper.rb
にErubisをカスタマイズしているコードがありました。

あんまり役にたたないリプライですね。すみません。

--
makoto kuwata


> 5.5 です。
>
> Erb でも Erubis でも,デフォルトでは「%」で始まる行をスクリプト片とは
> みません。
> 私は以下のAよりもBのほうが格段に読みやすく,書きやすいと感じます。
> ※後者を仮に「% 行記法」と呼ぶことにします。(正式には何というのでし
> ょうか?)
>
> —A————————————————
> <% unless @books.empty? -%>
> <ul>
> <%   @books.each do |book| -%>
>  <li><%=h book.title %></li>
> <%   end -%>
> </ul>
> <% end -%>
> ——————————————————
>
> —B————————————————
> % unless @books.empty?
> <ul>
> %   @books.each do |book|
>  <li><%=h book.title %></li>
> %   end
> </ul>
> % end
> ——————————————————
>
> しかし,% 行記法はあまり使われていないように思います。
> なぜでしょうか? 何か重大な欠点があるのでしょうか?
>
> Rails では,config/initializers の下に
>
> ActionView::TemplateHandlers::ERB.erb_trim_mode.sub! /.+/, "%-"
>
> と書けばトリムモードが "%-" になりますが,いかにも面倒です。
> ※代入じゃなくて sub! してるのは凍結されているから。
>
> オプション設定とかでできないところを見ると,Rails 開発陣は,
> %行記法を良いとは思っていないのですよね?
>
> また,Rails 3.0 からは Erubis が標準になりましたが,Rails の
> Erubis で % 行記法を使う方法が見つかりませんでした。
> config/initializers の下に
>
> module Erubis
>  class Eruby
>    include PercentLineEnhancer
>  end
> end
>
> と書いても効きません。
>
> お尋ねしたいのは
> ・なぜ % 行記法がダメなのか
> ・Rails 3(というか Rails の Erubis)で % 行記法を使う方法
> の二点です。
>
> --
> 5.5@moji.gr.jp
>
>

In This Thread