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
环境变量的值以发现存储临时文件的合适位置,或者查找HOME
或USERPROFILE
变量以查找运行该进程的用户所拥有的目录结构。
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来检查它的值),或者它可能特定于可能在配置文件中设置的运行时(。属性或其他)。