2009-06-11 15 views

cevap

25

Ruby/bin dizininizde ihtiyacınız olan her şeye sahip olmalısınız. Benim (WinXP, Ruby 1.8.6) sisteminde, çok erb your_erb_file.erb STDOUT sonucu yazmalı ruby/bin/erb.bat

erb.bat [switches] [inputfile] 
    -x    print ruby script 
    -n    print ruby script with line number 
    -v    enable verbose mode 
    -d    set $DEBUG to true 
    -r [library]  load a library 
    -K [kcode]  specify KANJI code-set 
    -S [safe_level] set $SAFE (0..4) 
    -T [trim_mode] specify trim_mode (0..2, -) 
    -P    ignore lines which start with "%" 

var.

:

(DÜZENLEME. Pencere erb.bat ve sadece düz "erb" vardır .bat dosyası sadece ben herhangi bir işletim sistemi üzerinde aynı hemen hemen aynı komut çalışması gerektiğini tahmin erb için bir sarıcı olduğunu)

prag prog book tartışmasına bakın (sayfanın yaklaşık yarısında başlar).

Ayrıca Jack Herrington'un Ruby/ERB kullanan kod oluşturma hakkında a whole book yazdığını da unutmayın.

+1

Harika! I **, (doğru olup olmadığını bilmeden) erb'yi çalıştırmaya çalışıyordu, ancak başarısız oldu, bu yüzden bunun doğrudan yapılamayacağını düşündüm, ancak bunun yerine bir dış kütüphaneye gereksinim duydum. Cevabınızdan sonra fark ettim ki, sadece sistem yolunda olmayan özel bir rubyum vardı;) Teşekkürler! –

+0

Bir karınca komut dosyasına ihtiyacım var (tüm platformlarda çalışması gerekiyor). Burada linux altında erb (uzantısız) olduğumu fark ettim, fakat erb.bat'tan bahsettiniz (bu yüzden windows altında uzatma olmadan erb'in bulunmadığını varsayalım). Erb'i nasıl çoklu platformda başlatacağımı önerebilir misin? –

+0

Bu, ve bir patron gibi değişkenleri enjekte edebilirsiniz: erb <(echo -n '<% somevar = "yay"%>'; cat your.erb) –

23

Bunu yapan bir ruby ​​komut dosyası yazın. API belgelerine burada: Örneğin http://www.ruby-doc.org/stdlib/libdoc/erb/rdoc/

:

template = ERB.new File.read("path/to/template.erb"), nil, "%" 
template.result(binding) 

(bağlayıcı bir şablon ihtiyaçları olduğunu @vars ile bağlayıcıdır.)

+0

Uyarı - bazı Ruby sürümleri, Rails ERB'nin çeşitli özelliklerini desteklemez (örneğin boş satır sonlarını atlar). – lzap

14

Başka bir seçenek yakut kullanmak olacaktır - e, ERB itslef çok basit olduğu için.

şey gibi. Ancak

ruby -rerb -e "puts ERB.new(File.read(<file name here>)).result" 

, ben nasıl o bağlamı almak için bekliyoruz size şablonu görüntülenmesini istediğiniz bir bağlama sahip varsayalım? Bir örnek olarak, check out:

ruby -rerb -e "hello = 'hello'; puts ERB.new('<%= hello %> world').result(binding)" 

"merhaba dünya" çıktısını edecek olan bağlanma gibi, sen hello değişkeni tanımlı üst düzey kullanarak.

0

Bu konuda yorum yapmayı denedim, ancak yorumlar bağlantısı mevcut değil.

Bunu kullanıyorum: Yukarıdaki gönderme itibaren

template = ERB.new File.new("path/to/template.erb").read, nil, "%" 
template.result(binding) 

:

ben gibi DOS PARTİ dosyaları oluşturmak ediyorum:

ve ben bunun bir sorun olabilir ne düşündüğünüzü bulundu
%JAVA_HOME%\bin\jar -xvf <%=inputfile%>... 

Ve garip şey sorun buldum - yukarıdaki kod ile çalıştırdığınızda bu alın:

Processing Template test.txt 
erb):2:in `render': compile error (SyntaxError) 
erb):2: syntax error, unexpected tSTRING_BEG, expecting $end 
erbout.concat "\n" 
      ^
     from DBUser.rb:49:in `render' 
     from DBUser.rb:43:in `each' 
     from DBUser.rb:43:in `render' 
     from DBUser.rb:81 

aşağıdaki çalıştı ve benim özel sorun bitmedi - Bu herkes için doğru cevaptır eğer Erubis için ERB geçiş yapabilirsiniz olursa, problem çözme kadar basittir

template = ERB.new File.new("path/to/template.erb").read 
template.result(binding) 
12

... Emin :

require 'erubis' 
template = File.read("sample_file.erb") 
template = Erubis::Eruby.new(template) 
template.result(:your_variable => "sample") 
3

te çalışırken bu soruyu bulundu benim kukla şablonum.

bu çözüm ile Sona Erdi: Boyunca

  1. senin foo.erb
  2. foo.vars.erb yeni dosya içine tüm şablon değişkenlerini koyun bir dosya, örneğin oluşturun:

    <% @my_param="foo bar" %> 
    <% @another_param=123 %> 
    

    veya (eşdeğer):

    <% 
    @my_param="foo bar" 
    @another_param=123 
    %> 
    
  3. komut satırında bu çalıştırın:

    cat foo.vars.erb foo.erb | erb 
    

Kişisel tamamen oluşturulduktan şablonu artık std-out basılmalıdır. Buradan çıkışı el ile kontrol edersiniz ya da önceden oluşturulmuş bir çıktıyla karşılaştırmak için farklı (ya da başka araçlar) alabilirsiniz.

+0

Mükemmel/teşekkürler. Bu tam olarak aradığım kullanım vakasıydı (kukla testi) – JDS

İlgili konular