2017-05-09 42 views
0

我在看这篇关于rake命令的文章,但不要在RAILS_ENV的位置。这是在某个特定的文件吗?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. 

回答

3

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

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

ENV["RAILS_ENV"]只包含一个字符串,如 “生产”, “发展” 或 “测试”。这告诉Rails which configuration file/config/environments中加载 - 以及database.yml中哪个散列键用于数据库。

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

  • 负载/config/environments/foo.rb
  • 寻找在database.yml中的关键foo
  • Rails.env.foo?将是真实的。

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

参见:

+0

设置ENV变量的确切程度取决于shell使用和操作系统。尽管大多数操作系统:es(甚至是windows)都有env vars。 – max

1

它的环境变量,您可以通过在命令前通过它设置您正在执行

RAILS_ENV=production rake db:migrate 

您也可以通过在命令

MAIL_USERNAME=user MAIL_PASSWORD=password rails server 
之前将它们设置一些其他ENV变量

或者您可以将它们导出到外壳

export MAIL_USERNAME=user 
export MAIL_PASSWORD=password 
rails server 

还有一个叫dotenv,帮助您轻松地将其储存在一个.env文件,该文件将不会被推倒git或任何SVN使用

+0

所以RAILS_ENV用作容器为您打造一个数据库来测试的东西出来?那么你可以有多个RAILS_ENV来尝试在里面使用不同的表格?或者你会不停地在你的开发环境中丢弃和重新设置表格? – stackjlei

+0

不完全是你在想什么.. 但是你可以根据你的需要有不同的环境,如'test','demo','development'和'production' –

+0

你也可以创建你想要的任何环境,只要确保你有'config/environments /#{environment_name} .env' –

-1

据我理解ENV变量宝石,这个“RAILS_ENV”似乎很像环境变量可能是操作系统级别(例如在* uix环境下,使用env检查其值),或者可能是特定于可能在配置文件(.propertie或其他)中设置的运行时。

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 

默认情况下,环境是发展。