在rails配置中,当面临冲突的配置选项时,您可以将配置设置放在config/application.rb或config/environments/#{production|staging|development}.rb中,哪个文件的配置选项是赢家?
发布于 2021-08-12 13:44:23
特定于环境的配置优先于application.rb。您可以在Rails::Application的文档中看到这一点。初始加载(点3)发生在application.rb中,环境有机会覆盖点5中的负载。
Booting process
The application is also responsible for setting up and executing the booting process. From the moment you require “config/application.rb” in your app, the booting process goes like this:
1) require "config/boot.rb" to set up load paths
2) require railties and engines
3) Define Rails.application as "class MyApp::Application < Rails::Application"
4) Run config.before_configuration callbacks
5) Load config/environments/ENV.rb
6) Run config.before_initialize callbacks
7) Run Railtie#initializer defined by railties, engines and application.
One by one, each engine sets up its load paths, routes and runs its config/initializers/* files.
8) Custom Railtie#initializers added by railties, engines and applications are executed
9) Build the middleware stack and run to_prepare callbacks
10) Run config.before_eager_load and eager_load! if eager_load is true
11) Run config.after_initialize callbacks来源:https://api.rubyonrails.org/classes/Rails/Application.html
发布于 2020-06-04 23:28:47
config/application.rb胜过所有配置选项。我做了一个快速测试,pp "application"在config/application.rb中,pp "environment"在config/environments/development.rb中。还设置了2个冲突的配置选项。
发现首先加载环境配置文件,从而允许application.rb中的配置被覆盖并成为配置的最终结果。
https://stackoverflow.com/questions/62198408
复制相似问题