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

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

4

2 回答 2

2

如果您想深入了解 rails 在启动时的作用,请转到 rails 指南并阅读初始化章节:

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

于 2012-06-26T12:51:46.013 回答
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 将加载 ruby​​gems 库并扫描 environment.rb 以查看是否已定义 RAILS_GEM_VERSION 常量。如果它有 boot.rb 将为该定义的 Rails 版本加载初始化程序(如果系统上不存在该版本的 Rails,则会引发错误)。如果未定义 RAILS_GEM_VERSION,boot.rb 将尝试初始化系统上安装的最新版本的 Rails。

于 2012-08-08T10:55:12.843 回答