Rails初始化过程

时间:2012-06-26 09:14:37

标签: ruby-on-rails

ENV['RAILS_ENV'] ||= "development"
require File.dirname(__FILE__) + '/../../../config/boot'
require File.join(Rails.root, 'config/environment')

这是我的rails应用程序的初始部分。谁能解释这三条线的目的是什么?

2 个答案:

答案 0 :(得分:2)

如果你想深入了解一下rails在启动时做了什么,请转到rails指南并阅读初始化章节:

http://guides.rubyonrails.org/initialization.html

答案 1 :(得分:1)

#!/ usr / local / ruby​​-current / bin / ruby​​ - 一个shebang评论,它告诉Unix系统如何执行此文件。

ENV ['RAILS_ENV'] || =“development” - 检查所选工作环境是否为开发环境。如果没有,它会将环境设置为开发。

Rails初始化过程:在任何应用程序的/ public目录中,我们都可以找到三个文件,即dispatch.cgi,dispatch.fcgi,dispatch.rb。我们配置服务器以启动rails进程的方式(作为CGI进程,快速CGI进程或Ruby进程)确定将执行三个文件中的哪一个。执行的调度文件将加载Rails环境,并通过调用调度程序来响应来自Web服务器的请求。 boot.rb确保已设置Rails_Root环境变量。如果尚未完成,boot.rb会将其定义为/ config下一级目录。一旦设置了Rails_Root,它就会通过检查vendor / rails中是否存在冻结的rails环境来继续加载rails的过程。如果此文件夹存在,则boot.rb将从那里需要Rails初始化程序。如果我们没有Rails的本地(冻结)副本,boot.rb将加载rubygems库并扫描environment.rb以查看是否已定义RAILS_GEM_VERSION是否为常量。如果它有boot.rb将为该定义版本的Rails加载初始化程序(如果系统上不存在该版本的Rails,则引发错误)。如果未定义RAILS_GEM_VERSION,boot.rb将尝试初始化系统上安装的最新版本的Rails。