有没有办法为rails 4.1中的secrets.yml中的所有环境指定一个秘密?

时间:2014-04-09 10:23:20

标签: ruby-on-rails ruby-on-rails-4

就像问题所说的那样,有没有办法让所有3个环境都知道这个秘密,而不会像这样复制和粘贴?

secrets.yml

development:
  secret_key_base: ...
  my_global_secret: foo

test:
  secret_key_base: ...
  my_global_secret: foo

production:
  secret_key_base: ...
  my_global_secret: foo

2 个答案:

答案 0 :(得分:26)

您可以使用&label<<: *label

定义和共享公用密钥
common: &common
  secret_key_base: ...
  my_global_secret: foo

development:
  <<: *common
  something_specific_to_development: ...

test:
  <<: *common
  something_specific_to_test: ...

production:
  <<: *common
  something_specific_to_production: ...

更新:对于Rails 5.1 +

Rails 5.1添加了shared密钥,该密钥自动应用于所有环境:

shared: # Everything nested under this key is automatically shared
  secret_key_base: ...
  my_global_secret: "foo"

development:
  my_global_secret: "override value for dev"

test:
  ...

答案 1 :(得分:1)

使用common: &common对我来说对Rails 5.1不起作用 - shared:但确实如此。