Rails: получить имя вызываемой задачи rake в environment.rb? - PullRequest
1 голос
/ 11 ноября 2010

Я попытался отключить автозагрузку плагинов в моей environment.rb для задачи rake " gems: install ", так как это может привести к неразрешенным зависимостям и ошибкам (читай http://blog.joopp.com/2009/01/26/plugin-gem-dependencies-in-your-environmentrb/ для получения дополнительной информации).

При реализации этого «хака» я быстро заметил, что переменная $ rails_gem_installer , которая должна быть установлена ​​в true, если gems: install запущен, не установлен . (== ноль)

Теперь я ищу способ получить информацию о вызываемой задаче рейка или есть какое-то другое рабочее решение?

Я использую Rails 2.3.10 / Ruby 1.8.7

Вот код из моего environment.rb для лучшего понимания:

Rails::Initializer.run do |config|

# fix for plugins dependent on gems
# see http://blog.joopp.com/2009/01/26/plugin-gem-dependencies-in-your-environmentrb/ 

if $rails_gem_installer
 # We stop the initializer to load the files from the /config/initializers dir. This is to disable the usage of plugins or gems in that code.
 puts 'Disabling the application initializers (rails_gem_installer == true)'
 class Rails::Initializer
   def load_application_initializers; end
 end

 # Next, do _only_ load the needed plugins that are not dependent on gems. For example exception_notification since that one is used in application.rb.
 puts 'Not loading all plugins (rails_gem_installer == true)'
 config.plugins = [:exception_notification]
else
 # Otherwise, when we're just loading the environment.. load everything in the right order. So this is YOUR config.plugins = [something]!
 config.plugins = [:all]
end

[... stuff like config.gem and so on]

1 Ответ

1 голос
/ 11 ноября 2010

Вместо того, чтобы заставить rake gems:install работать должным образом, а это, казалось, никогда не срабатывало должным образом в каждой ситуации, может быть лучше вместо этого портировать ваши зависимости на bundler .Хотя именно так Rails 3 настроен по умолчанию, его можно использовать в любом проекте ruby ​​и он делает работу намного лучше.

A Gemfile также служит удобочитаемым манифестом зависимостей, что не таквсегда легко извлекается из файла конфигурации Rails.

Существует пример использования компоновщика с Rails 2.3 на их сайте: http://gembundler.com/rails23.html

...