gpt4 book ai didi

ruby-on-rails - 如何在Rails 4.1中对API_KEYS使用secrets.yml?

转载 作者:行者123 更新时间:2023-12-03 10:06:37 27 4
gpt4 key购买 nike

在我最近的一个项目中,我以.gitignoring开头,其中包含 secret 和环境变量。因此,除了包含第三方 secret (例如Stripe,Twitter API或Facebook Graph的 secret 或内部api_keys以及./config/initializers/secret_token.rb文件)的文件以外,整个项目都将提交到存储库。

现在我正要进行项目开发(激动!),我需要使用Capistrano将所有环境变量移植到生产服务器上,即cap production deploy.
[Edit 4:Yr,2018]
对于initializers / secret_token.rb,很明显,Rails 4.1具有一种处理secrets.yml file的新方法,该方法将:secret_key_base值拉入生产服务器。在这里,我建议使用capistrano-secrets-yml gem,它可以直接使用,并且使用起来非常简单。

剩下的是将其他 secret (如API_KEYS,APP_ID等)带到生产服务器的方式,而无需将任何 secret checkin 存储库。如何做到这一点,最推荐/最安全的方法或最佳做法是什么?

注意:随着问题的进展,我将对其进行编辑/我将更加清楚。

编辑1:服务器是DigitalOcean上的Ubuntu / Linux VPS [Denise的答案,如下]。

EDIT2:env_variables / secrets是否可以通过secrets.yml传递到服务器? session 的Secret_token毕竟不是唯一的 secret ! [在Edit3上回答]

EDIT3:是的!可以根据blog通过secrets.yml发送API_keys。将来会分享我的发现。 :-)

最佳答案

第一条规则:请勿将secrets.yml checkin 存储库。

好的,这是secret.yml的外观:

development:
secret_key_base: 6a1ada9d8e377c8fad5e530d6e0a1daa3d17e43ee...
# Paste output of $ rake secret here for your dev machine.

test:
secret_key_base: _your_secret_ as above

production:
secret_key_base: <%= secure_token %>


STRIPE_PUBLISHABLE_KEY: 'Put your stripe keys for production'
STRIPE_SECRET_KEY: 'Put actual keys for production here'
FB_APP_SECRET: 'same as above'
FB_CALLBACK_URL: 'FB url here'
FB_CALLBACK_UPDATE_URL: 'FB url here'
GOOGLE_KEY: 'Put your keys for production'
GOOGLE_SECRET: 'same as above'
TWITTER_KEY: 'same as above'
TWITTER_SECRET: 'same as above'
TWITTER_USERNAME: 'same as above'
LINKEDIN_KEY: 'same as above'
LINKEDIN_SECRET: 'same as above'

注意 secure_token块中的 production:。在生产服务器上,我正在使用初始化程序即时 dynamically generate secret_tokens

sidenote: be careful about spaces and tabs inside the .yml file. It must be properly formatted and spaced (such as having a space after the ':' symbol).



要在生产环境中进行设置,您可以直接从本地本地文件或使用 capistrano-secrets-yml gem。

This will not work. See an updated method as per @OddityOverseer's answer below.



要在您的应用程序 environments/production.rb中访问环境变量,请使用:
FB_APP_SECRET            = ENV['FB_APP_SECRET']
FB_CALLBACK_URL = ENV['FB_CALLBACK_URL']
FB_CALLBACK_UPDATE_URL = ENV['FB_CALLBACK_UPDATE_URL']
GOOGLE_KEY = ENV['GOOGLE_KEY']
GOOGLE_SECRET = ENV['GOOGLE_SECRET']
TWITTER_KEY = ENV['TWITTER_KEY']
TWITTER_SECRET = ENV['TWITTER_SECRET']
TWITTER_USERNAME = ENV['TWITTER_USERNAME']
LINKEDIN_KEY = ENV['LINKEDIN_KEY']
LINKEDIN_SECRET = ENV['LINKEDIN_SECRET']

UPDATED August-2016:



要在您的应用程序 environments/production.rb中访问环境变量,请使用:
FB_APP_SECRET            = Rails.application.secrets.FB_APP_SECRET
FB_CALLBACK_URL = Rails.application.secrets.FB_CALLBACK_URL
FB_CALLBACK_UPDATE_URL = Rails.application.secrets.FB_CALLBACK_UPDATE_URL
GOOGLE_KEY = Rails.application.secrets.GOOGLE_KEY
GOOGLE_SECRET = Rails.application.secrets.GOOGLE_SECRET
TWITTER_KEY = Rails.application.secrets.TWITTER_KEY
TWITTER_SECRET = Rails.application.secrets.TWITTER_SECRET
TWITTER_USERNAME = Rails.application.secrets.TWITTER_USERNAME
LINKEDIN_KEY = Rails.application.secrets.LINKEDIN_KEY
LINKEDIN_SECRET = Rails.application.secrets.LINKEDIN_SECRET

就是这样

关于ruby-on-rails - 如何在Rails 4.1中对API_KEYS使用secrets.yml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26498357/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com