Rails从auto/eager load中排除文件夹

Cyr*_*ris 7 ruby-on-rails autoload eager-loading ruby-on-rails-5

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

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

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

例如,

api-v1-production环境应该排除

controllers/api/v[^1]/**/*.rb
Run Code Online (Sandbox Code Playgroud)

api-v2-production环境应该排除

controllers/api/v[^2]/**/*.rb
Run Code Online (Sandbox Code Playgroud)

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

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

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

Joã*_*des 1

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

你可以试试这个:

  • api-v1-生产

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

config.eager_load_paths -= ["#{config.root}/app/controllers/api/v[^2]"]
Run Code Online (Sandbox Code Playgroud)
  • api-v2-生产

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

config.eager_load_paths -= ["#{config.root}/app/controllers/api/v[^2]"]
Run Code Online (Sandbox Code Playgroud)

希望它有效。