我将在Google App-Engine中托管RoR API-App。
到目前为止,一切正常,但是我必须以纯文本格式存储用户名,密码和密钥(例如,数据库用户/密码)app.yaml
。这只是愚蠢的,所以我将永远无法将其推送到我的git repo!通常,我将这样的东西存储在一个env变量中,并在我的应用程序中使用它们。
但是我没有找到设置或访问环境变量的方法。
有没有办法做到这一点?
我做的!
对于本地开发,我只是像往常一样设置环境。
如果模式为生产模式,我将从Google数据存储区中加载所有键值对并将它们设置为环境变量。
我在初始化器中执行此操作,只需在其中创建文件YourApp/config/initializers/
并将代码放入其中即可!只需创建新实体,即可在代码中复制Kind名称并设置您的项目ID。由于您的应用托管在Google中,因此它应该有权访问数据存储(您需要在IAM管理器中设置权限)
require "google/cloud/datastore"
# Load the enviroment variables from the google datastore!
if Rails.env == "production"
data_store = Google::Cloud::Datastore.new(
project_id: 'YOUR_PROJECT_ID'
)
query = data_store.query "YOUR_KIND_NAME"
results = data_store.run query
puts "Set custom env variables!"
# Set each result as an env variable
results[0].properties.to_h.each do |key, value|
ENV[key]= value
end
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句