RAILS_ENV在哪里?

时间:2017-05-09 07:03:38

标签: ruby-on-rails

我正在看这篇关于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.

5 个答案:

答案 0 :(得分:5)

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

  

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

ENV["RAILS_ENV"]只包含一个字符串,例如“production”,“development”或“test”。这告诉/config/environments中的Rails which configuration file要加载 - 以及database.yml中的哪个哈希键用于数据库。

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

  • 加载/config/environments/foo.rb
  • 在database.yml中查找密钥foo
  • Rails.env.foo?将是真的。

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

另见:

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

默认环境是开发。

答案 3 :(得分:0)

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来决定当前的环境。

答案 4 :(得分:-1)

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