我正在看这篇关于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.
答案 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
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或其他)。