RAILS_ENV在哪里?

我正在看这篇关于rake命令的文章,但是不知道RAILS_ENV在哪里。 那是在特定文件中的某个地方吗?

db:create Creates the database for the current RAILS_ENV environment. If RAILS_ENV is not specified it defaults to the development and test databases. 

RAILS_ENV只是一个环境变量,它在shell或操作系统本身中设置(或在调用进程时)。

环境变量是一组动态命名值,可以影响运行进程在计算机上的行为方式。
它们是进程运行环境的一部分。 例如,正在运行的进程可以查询TEMP环境变量的值以发现存储临时文件的合适位置,或者查找HOMEUSERPROFILE变量以查找运行该进程的用户所拥有的目录结构。
https://en.wikipedia.org/wiki/Environment_variable

ENV["RAILS_ENV"]只包含一个字符串,如“production”,“development”或“test”。 这告诉Rails要加载/config/environments 配置文件 – 以及database.yml哪个哈希键用于数据库。

例如,如果ENV["RAILS_ENV"] == "foo" Rails将:

  • load /config/environments/foo.rb
  • 在database.yml中查找关键foo
  • Rails.env.foo? 将是真的。

因此,Rails环境概念与通用计算概念略有不同–Rails环境是一组设置和数据库的更广泛术语,用于不同目的,如自动化测试或生产。

也可以看看:

  • 在环境中存储配置

它是您可以通过在执行命令之前传递它来设置的环境变量

 RAILS_ENV=production rake db:migrate 

您还可以通过在命令之前传递它们来设置其他一些ENV变量

 MAIL_USERNAME=user MAIL_PASSWORD=password rails server 

或者您可以将它们导出到shell

 export MAIL_USERNAME=user export MAIL_PASSWORD=password rails server 

还有一个名为dotenv的gem可以帮助你轻松设置env变量,方法是将它们保存在.env文件中,该文件不会被git或你使用的任何SVN推送

RAILS_ENV是铁路环境,即开发,生产或升级。

您可以使用RAILS_ENV为不同的环境运行命令,如:

 RAILS_ENV=production rake db:migrate #runs migration in production env RAILS_ENV=test rake db:migrate #runs migration in test env 

默认环境是开发。

RAILS_ENV这只是环境变量的名称。 因此,当您运行任何rake任务或rails命令时,可以使用它。 喜欢:

 RAILS_ENV=test rails c 

但你会想知道如何在Rails中使用这个env变量,这里就是这个地方: https : //github.com/rails/rails/blob/ce4d467f7c2fc812e257a87bd4875c1f1f08a981/railties/lib/rails.rb#L72

这意味着Rails更愿意使用RAILS_ENV来决定当前的环境。

根据我的理解,这个“RAILS_ENV”看起来很像环境变量,可能是操作系统级别(比如在* uix环境下,使用env来检查它的值),或者它可能特定于可能在配置文件中设置的运行时(。属性或其他)。