Rails从auto / eager load

时间:2017-05-24 10:47:59

标签: ruby-on-rails ruby-on-rails-5 autoload eager-loading

我想单独扩展我的rails应用程序的一些子部分,并避免加载整个代码库。

为了举例,让我们考虑APIv1与APIv2,但我也想扩展这个任何类/服务

是否可以从预先加载(生产)或自动加载(在开发中)排除特定文件夹?

例如,

api-v1-production环境应排除

controllers/api/v[^1]/**/*.rb

api-v2-production环境应排除

controllers/api/v[^2]/**/*.rb

为了示例,我正在编写[^ x]作为除x之外的所有内容的方便表示法

我知道可以添加一些自动加载/热切的加载文件夹,但是排除一些呢? (特别是如果它们在app/内,默认情况下是自动加载/急切加载的)

我想避免在内存中加载过多的类/服务等等,我知道它们没用;

1 个答案:

答案 0 :(得分:0)

我希望3年后您可能已经找到了解决方案。反正...

您可以尝试以下方法:

  • api-v1-production

将此添加到您的config/environments/api-v1-production

config.eager_load_paths -= ["#{config.root}/app/controllers/api/v[^2]"]
  • api-v2-production

将此添加到您的config/environments/api-v2-production

config.eager_load_paths -= ["#{config.root}/app/controllers/api/v[^2]"]

希望它能起作用。