hel*_*llo 4 ruby ruby-on-rails ruby-on-rails-4
如果我将 API 密钥存储到secrets.yml 中,有人可以帮助我了解如何检索 API 密钥吗?
如果我有某种谷歌 API 密钥'yt_key':
秘密.yml
development:
secret_key_base: 390257802398523094820 #some key
yt_key: A423092389042430 #some key
test:
secret_key_base: 43208947502938530298525#some key
yt_key: A423092389042430 #some key
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
yt_key: <%= ENV["YT_KEY"] %>
Run Code Online (Sandbox Code Playgroud)
我只是按照示例进行操作,这就是我的设置方式吗?
因此,如果我将其发布到生产环境中,我会将其保存A423092389042430在 heroku 和 under 中YT_KEY,对吗?
但是在开发中,我会不会这样做来检索数据:
在/config/application.rb
Yt.configure do |config|
config.api_key = '<%= ENV["YT_KEY"] %>'
end
Run Code Online (Sandbox Code Playgroud)
或者这应该在课堂上:
module Sample
class Application < Rails::Application
Yt.configure do |config|
config.api_key = '<%= ENV["YT_KEY"] %>'
end
config.active_record.raise_in_transactional_callbacks = true
end
end
Run Code Online (Sandbox Code Playgroud)
还是我设置错了?
ENV["YT_KEY"]引用 'YT_KEY'环境变量,您必须使用Heroku 配置变量设置该变量。
在您的应用程序中,您可以像这样访问您的机密:
Rails.application.secrets.key_name
Run Code Online (Sandbox Code Playgroud)
由于您仅在生产中将“YT_KEY”存储为环境变量,因此您应该像这样配置 Yt:
(您可以在位于 的初始化文件中执行此操作app/initializers/yt.rb)
Yt.configure do |config|
config.api_key = Rails.application.secrets.yt_key
end
Run Code Online (Sandbox Code Playgroud)
这样,将在每个环境中设置正确的密钥。
为每个环境使用不同的密钥是一种很好的做法,因此应该为您的生产环境获取另一个密钥。此外,您应该避免在代码中存储秘密的生产环境密钥。这就是为什么将 ENV 变量用于生产密钥很常见的原因。
如果您需要任何说明,请告诉我!