2008-12-23 72 views
2

據說安裝erubis是簡單的:在Rails 2.2.2中使用Erubis 2.6.2是不兼容的?

gem install erubis 

# And in environment.rb: 
require 'erubis/helpers/rails_helper' 

但我還沒有發現這是如此。請注意,我的代碼中沒有明顯的錯誤;它與ERB一起運行得很好。

  1. 我在哪裏放這條線?直接在boot.rb包含之後,它無法啓動服務器,並且在文件結尾處,我收到一個意外的無對象錯誤(nil.controller)。哪裏最好?
  2. 與給定版本有衝突嗎?
  3. 是否有任何解決方法可以用來獲得erubis的功能?
+0

Erubis 2.6.4支持Rails 2.2 - 最近剛剛推出。 – 2009-02-27 01:51:51

回答

1
  1. 要麼把它在底部或environment.rb中,或把它放在一個初始化(配置/初始化/ anything.rb)。當你把它放在Rails :: Initializer塊之前時,rails環境還沒有完全加載,而erubis/helpers/rails_helpers似乎假定一個完全加載的Rails環境。
  2. 我從未使用erubis,所以我無法回答。
  3. 解決方法?請參閱#1,我猜。
+0

謝謝,但仍然有那個煩人的零對象錯誤擺脫。 :/ – 2008-12-25 20:03:41

+0

無法看到是什麼原因造成的,沒有看到完整的堆棧跟蹤以及堆棧跟蹤指向的任何相關自定義代碼。 – 2008-12-26 16:30:50

1

最新Erubis(2.6.4)和Rails 2.2(和2.3)仍然不兼容。主要問題是Erubis生成的ruby代碼使用「_buf」作爲緩衝區變量,Rails 2.2和2.3需要使用「@output_buffer」。

使用「@output_buffer」的原因是,像CaptureHelper這樣的ActionView助手是圍繞「@output_buffer」設計的,它是生成的代碼中的主要緩衝區。

我已經創建了一個叫做elkinsware-erubis_rails_helper的gem,它修復了這些問題,並允許Erubis和Rails 2.3(當然,但它應該可以用於2.2)。

在你的environment.rb文件中加入:

config.gem 'erubis' , :version => '2.6.4' 
config.gem 'elkinsware-erubis_rails_helper', :lib => 'erubis_rails_helper', :source => 'http://gems.github.com' 

然後你就可以添加一個配置/初始化/ erubis_config.rb在那裏你可以調整Erubis/Rails的選項。

#Erubis::Helpers::RailsHelper.engine_class = Erubis::Eruby # or Erubis::FastEruby 
#Erubis::Helpers::RailsHelper.init_properties = {} 
#Erubis::Helpers::RailsHelper.show_src = false 
#Erubis::Helpers::RailsHelper.preprocessing = true 

源是http://github.com/elkinsware/erubis_rails_helper/tree/master

讓我知道,如果你有創業板的任何問題。