简而言之,我有一个包含
的gemfilegroup :assets do
gem 'my_gem'
end
,依赖于my_rake_task
的rake任务:environment
,需要my_gem
的Rails初始化程序,以及以下的Capistrano代码段:
task :run_my_rake_task, :roles => :db do
run "cd #{release_path} && bundle exec rake RAILS_ENV=#{rails_env} my_rake_task"
end
事实上,调用此Capistrano配方会导致初始化程序引发错误,指出my_gem
的常量不可用。如何让rake任务拉入:assets
组gems或将另一个组添加到gemfile中以使此初始化程序停止中断? (请注意,我当然可以将my_gem
移到:assets
组之外,一切正常,但这似乎是我确信可以避免的廉价黑客答案。)
答案 0 :(得分:0)
打开config/application.rb
。看看它的顶部。注释掉这一行:
Bundler.require(*Rails.groups(:assets => %w(development test)))
并取消注释:
Bundler.require(:default, :assets, Rails.env)
因此,当应用加载时,它会加载您的资产组宝石。
但我认为如果您需要在应用程序的初始化程序中使用my_gem
权限,则需要将其从资产组中移出。
您可以从本文获得有关捆绑程序分组的更多信息:http://iain.nl/getting-the-most-out-of-bundler-groups