Использование Erubis 2.6.2 с Rails 2.2.2 несовместимо?
Предположительно установка erubis так же проста, как:
gem install erubis
# And in environment.rb:
require 'erubis/helpers/rails_helper'
Но я не нашел, что это так. Обратите внимание, что в моем коде нет явных ошибок; с ERB все работает отлично.
- Где я могу поставить эту строку? Сразу после
boot.rb
Включение не удается запустить сервер, и в конце файла я получаю неожиданную ошибку объекта nil (nil.controller). Где лучше? - Известны ли конфликты с данными версиями?
- Есть ли какие-нибудь обходные пути, которые я могу использовать, чтобы заставить работать erubis?
3 ответа
Видимо это сломано:
http://kleinptr.wordpress.com/2009/02/04/erubis-and-rails-222/
и они работают над исправлением:
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/328613
Последние Erubis (2.6.4) и Rails 2.2 (и 2.3) по-прежнему не совместимы. Основная проблема заключается в том, что сгенерированный код ruby из Erubis использует "_buf" в качестве переменной буфера, а Rails 2.2 и 2.3 требуют использования "@output_buffer".
Причиной использования "@output_buffer" является то, что помощники ActionView, такие как CaptureHelper, созданы вокруг "@output_buffer", являющегося основным буфером в сгенерированном коде.
Я создал гем под названием http://github.com/elkinsware/erubis_rails_helper/tree/master, который исправляет эти проблемы и позволяет использовать 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'
И тогда вы можете добавить config/initializers/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
Дайте мне знать, если у вас есть какие-либо проблемы с жемчужиной.
- Либо поместите его в файл bottom или environment.rb, либо поместите в инициализатор (config/initializers/ everything.rb). Когда вы помещаете его перед блоком Rails::Initializer, среда rails еще не полностью загружена, и erubis/helpers/rails_helpers, похоже, предполагает полностью загруженную среду Rails.
- Я никогда не использовал Erubis, поэтому я не могу ответить на это.
- Обходные? Смотри № 1, я думаю.