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

nhj*_*hjk 11 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
Run Code Online (Sandbox Code Playgroud)

小智 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: ...
Run Code Online (Sandbox Code Playgroud)

更新:对于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:
  ...
Run Code Online (Sandbox Code Playgroud)

  • Rails 5.1 添加了新的“shared”部分,该部分会自动应用于所有环境。(不需要像`&lt;&lt;: *common`那样命名或继承) (3认同)