如何在Ruby on Rails中创建新环境?

ZX1*_*12R 52 ruby-on-rails

我正在尝试创建一个与hudson一起使用它的新环境(build).

我这样做是因为我不想将我的测试数据库与哈德森测试数据库混淆.

Sim*_*tti 81

假设你想创造hudson环境.

  1. 在中创建一个新的环境文件config/environments/hudson.rb.例如,您可以先克隆现有的一个config/environments/test.rb.
  2. config/database.yml为您的环境添加新的配置块.
  3. config使用新环境更新文件夹下可能包含的任何其他配置文件,某些gem会ymls在该config文件夹下创建自己的配置文件.
  4. 就这样.

现在您可以启动服务器了

rails server -e hudson
Run Code Online (Sandbox Code Playgroud)

或运行控制台

rails console hudson
Run Code Online (Sandbox Code Playgroud)

等等.

如果您使用的是旧版本的Rails,则命令为

ruby script/server -e hudson
ruby script/console hudson
Run Code Online (Sandbox Code Playgroud)

  • 您忘了指定您还必须检查您的gemfile并为该环境中的宝石创建一个组 (7认同)
  • 您还需要在secrets.yml文件中为新环境设置secret_key_base (5认同)
  • 此外,如果您有使用相同配置/环境设置的不同环境,例如生产,您可以将此行添加到您的新环境/hudson.rb 文件中以消除冗余([请参阅此了解更多信息](https://signalvnoise .com/posts/3535-beyond-the-default-rails-environments))。需要 Rails.root.join("config/environments/production") (2认同)
  • 我们不需要在 `secrets.yml` 文件中也有一个条目吗? (2认同)

Sha*_*nak 15

更新了Rails 5的答案

创建新的环境文件:

config/environments/staging.rb
Run Code Online (Sandbox Code Playgroud)

修改以下文件以添加环境密钥"staging"

config/cable.yml
config/database.yml
config/secrets.yml
Gemfile (incase you have stage dependent gems)
Run Code Online (Sandbox Code Playgroud)

现在可以像往常一样使用新环境,例如:

rails server -e staging

rails console staging

或者做条件检查:

rails console staging, Rails.env.staging?
Run Code Online (Sandbox Code Playgroud)

创建新环境和修改这些文件的好地方是复制生产设置.

  • 在 Rails 6 中 > 不要忘记 `config/webpacker.yml` (3认同)