当Gemfile
Rails中有很多宝石时,启动时间是非常糟糕的。
但问题是我们并不总是需要装载所有的宝石。
rake db:migrate
(和朋友)实际上并不需要任何与ActiveRecord无关的东西(可能甚至不需要)。rails c
可能需要其中的大部分。rake assets:precompile
可能根本不需要太多。不幸的是,initializers
与gems非常紧密地结合在一起(例如,当需要simple_form时,应该进行simple_form配置,这样就会影响gem 'simple_form', require: false
)。
因此,问题是,执行所有初始化器的最佳方法是什么,以提高启动时间,但仍然不会中断任何操作。
发布于 2012-10-07 20:47:34
您可以完全控制邦德勒在启动时加载的宝石。在您的application.rb中可以找到以下内容:
if defined?(Bundler)
Bundler.require *Rails.groups(:assets => %w(development test))
end
您可以稍微修改它以响应ENV变量,以便告诉邦德勒加载简化的gems子集。
if defined?(Bundler)
if ENV['RAKE_ENV']
Bundler.require :rake
else
Bundler.require *Rails.groups(:assets => %w(development test))
end
end
现在,您可以通过检查是否设置了环境变量来切换初始化器。
在Gemfile中,您必须创建一个名为“rake”的组,就像创建“开发”和“测试”组一样。
https://stackoverflow.com/questions/12774435
复制相似问题