我正在尝试为不同的环境初始化不同的宝石。我正在使用初始化程序配置文件(用于Paperclip之类的东西)和环境配置文件(用于我的dev,test,qa,prod环境)。
对于某些上下文,我正在尝试让我的prod和qa服务器为Paperclip使用S3存储,但是使用具有不同目录的本地存储来进行开发和测试。我不知道这些配置文件的加载顺序。
我想知道是否有人可以对加载顺序有所了解,以便我可以确保我有任何依赖关系或覆盖正确。另外,我只想知道这些事情是如何运作的。
我对下面列出的目录/文件特别感兴趣
config/
environments/
develop.rb
test.rb
...env-specific config files
initializers/
paperclip.rb
...gem-specific config files
application.rb
boot.rb
deploy.rb
environment.rb
routes.rb
谢谢!
答案 0 :(得分:46)
2013年9月更新:对于Rails 4,它似乎再次发生了变化。现在有一个Rails-4 Guide on The Rails Initialization Process。您会注意到这个列表 比Rails 3更短。我不确定他们是否删除了一些深度或者什么......没有时间过去这一切:
有关如何配置其中某些文件的更多详细信息,请参阅Rails-4 Guide on Configuring Rails Applications
2013年9月更新:对于Rails 3,它似乎已经发生了很大变化。现在有Rails-3 Guide on The Rails Initialization Process:
有关如何配置其中某些文件的更多详细信息,请参阅Rails-3 Guide on Configuring Rails Applications
最初(2011年12月),我偶然发现了一篇对How the Initialization Process Worked for Rails 2有一个很棒的解释的博客文章。
有关如何配置其中某些文件的更多详细信息,请参阅Rails-2 Guide on Configuring Rails Applications
答案 1 :(得分:12)
这个答案用于补充已接受的答案,当开发.rb和其他init文件加载时,接受的答案没有提及。
在ruby 2.0中,我在bin / rails中插入以下代码,然后运行' bin / rails s'查看本地应用程序文件的加载顺序。在此示例中,我的项目名称为bole_api。
files = []
tp = TracePoint.new(:line) do |tp|
if tp.path =~ /bole_api/
unless files.include? tp.path
puts "#{tp.path}".inspect
files.push(tp.path)
end
end
end
tp.enable
我的本地结果是
"/home/leijing/studio/bole_api/bin/rails"
"/home/leijing/studio/bole_api/config/boot.rb"
"/home/leijing/studio/bole_api/Gemfile"
"/home/leijing/studio/bole_api/config/application.rb"
=> Booting WEBrick
=> Rails 4.1.1 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (--binding option)
=> Ctrl-C to shutdown server
"/home/leijing/studio/bole_api/config.ru"
"/home/leijing/studio/bole_api/config/environment.rb"
"/home/leijing/studio/bole_api/config/environments/development.rb"
"/home/leijing/studio/bole_api/config/initializers/carrierwave.rb"
"/home/leijing/studio/bole_api/config/initializers/cookies_serializer.rb"
"/home/leijing/studio/bole_api/config/initializers/filter_parameter_logging.rb"
"/home/leijing/studio/bole_api/config/initializers/rabl_init.rb"
"/home/leijing/studio/bole_api/config/initializers/session_store.rb"
"/home/leijing/studio/bole_api/config/initializers/wrap_parameters.rb"
"/home/leijing/studio/bole_api/config/routes.rb"
"/home/leijing/studio/bole_api/app/api/bole_app_api.rb"
"/home/leijing/studio/bole_api/app/api/home_api.rb"
"/home/leijing/studio/bole_api/app/api/video_api.rb"
[2014-06-27 11:06:57] INFO WEBrick 1.3.1
[2014-06-27 11:06:57] INFO ruby 2.1.0 (2013-12-25) [x86_64-linux]
[2014-06-27 11:06:57] INFO WEBrick::HTTPServer#start: pid=30157 port=3000
从上面的输出中,您可以获得本地文件加载顺序的视图。并结合http://edgeguides.rubyonrails.org/initialization.html的结论,您可以获得整个初始化过程的视图。