Rails Rails 启动文件加载顺序

zhenjunluo · 2013年03月24日 · 最后由 zhenjunluo 回复于 2013年03月28日 · 4855 次阅读

如果大家想在 rails 启动的时候做点额外的事,可以参考下面的方法,在合适的文件中加入代码。 在 config/boot.rb 中加入以下代码,基本思想是重写 require 函数

# config/boot.rb
alias :origin_require :require
def require_out(file)
  puts file if file.include?("html-demo")  #参数为项目的名称
  origin_require(file)
end
alias :require :require_out

运行 rails s 输出的结果

/home/lzj/workspace/rails/html-demo/config/application
/home/lzj/workspace/rails/html-demo/config/boot
=> Booting Thin
=> Rails 3.2.11 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
/home/lzj/workspace/rails/html-demo/config/environment
/home/lzj/workspace/rails/html-demo/config/application
/home/lzj/workspace/rails/html-demo/config/environments/development.rb
>> Thin web server (v1.5.0 codename Knife)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:3000, CTRL+C to stop

运行 rails s -e production 输出的结果

/home/lzj/workspace/rails/html-demo/config/application
/home/lzj/workspace/rails/html-demo/config/boot
=> Booting Thin
=> Rails 3.2.11 application starting in production on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
/home/lzj/workspace/rails/html-demo/config/environment
/home/lzj/workspace/rails/html-demo/config/application
/home/lzj/workspace/rails/html-demo/config/environments/production.rb
/home/lzj/workspace/rails/html-demo/app/controllers/application_controller
/home/lzj/workspace/rails/html-demo/app/helpers/application_helper
/home/lzj/workspace/rails/html-demo/app/helpers/demo_helper
/home/lzj/workspace/rails/html-demo/app/controllers/demo_controller
/home/lzj/workspace/rails/html-demo/app/models/user
>> Thin web server (v1.5.0 codename Knife)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:3000, CTRL+C to stop

为什么不在 config/initialize 里面加入你的代码?

看到这里,我想到一个问题:如何设置只在 Rails server 启动时才执行的初始化代码?目前放在 config/initialize 里,不管是 rake 任务,还是其它的需要依赖 Rails 环境的,都将执行 config/initialize 里的代码?Rails 没有提供这方面的选择配置。

#1 楼 @zlx_star 对喔,多谢提醒

#2 楼 @qichunren 可以在项目根目录下面的 Rakefile 中指定加载哪些文件,Rails.env 可以确定 rails 启动的是什么环境

需要 登录 后方可回复, 如果你还没有账号请 注册新账号