【发布时间】:2011-04-01 05:59:58
【问题描述】:
我有一个使用 Bundler 进行依赖管理的 Rails 应用程序。我的Gemfile 中有以下内容:
# default group:
gem 'json'
group 'development' do
gem 'my_profiler'
end
group 'test' do
gem 'mocha'
end
group 'deployment' do
gem 'foo'
end
我在初始化程序中调用 Bundler.setup(:default, RAILS_ENV.to_sym) 和 Bundler.require(:default, RAILS_ENV.to_sym)。
问题在于,由于 Bundler 将 gem 放入 vendor/bundle/,Rails 会初始化 所有 具有 init.rb 的 gem,而不仅仅是当前环境中的那些。如何防止 Rails 自动加载 Foo 的 init.rb?
【问题讨论】:
-
请注意,如果您使用的是 bundler,您可能应该使用
Rails.root而不是RAILS_ROOT和Rails.env而不是RAILS_ENV -
清除 vendor/bundle/ 文件夹。或者将 gem 安装在 rvm gemset 中,然后确保您的环境正确。
标签: ruby-on-rails ruby plugins dependencies bundler