GCloud Rails 应用程序并将 Redis 密码保存在 .env 文件中
GCloud Rails application and keeping Redis password in an .env file
我有一个 Rails 5.2.3 (Ruby 2.6.3) 项目托管在 Google Cloud 上。
我目前正在根据 this guide from Google's docs.
设置 Sidekiq 和 Redis
我决定使用文档 Deploying to App Engine flexible environment
部分中的 foreman
选项,并且一直在寻找 app.yaml
文件。具体来说,我坚持如何提供 Redis URL、Redis 密码和 Rails 密钥,而不会在我的 git 历史记录中以明文形式公开它。
我在 GCloud 网站上找不到任何相关信息。我发现的唯一提到的 ENV 文件是 these pages of the GCloud docs,但这些只是为了让我可以指定特定的 ENV 变量以供我在 GCloud 上的应用程序使用,这在这种情况下不适用于我。
有什么方法可以让我从我的 .env
文件中读取 app.yaml
文件,或者更好的是,从我的 secrets.yaml
文件中读取文件?
我今天才真正意识到我误解了文档,尽管 Google 一开始并没有很好地说明这一点。
如果您查看我的 OP 中的 docs I referenced,他们会明确说明 environment_variables
只是让您能够通过 app.yaml
文件将 ENV 变量传递到应用程序中。我实际上不需要从文档中提供这一部分
env_variables:
REDIS_URL: redis://[REDIS_IP_ADDRESS]:6379
REDIS_PASSWORD: [PASSWORD]
SECRET_KEY_BASE: [SECRET_KEY]
以上内容可以简单地在 sidekiq.rb
初始值设定项中使用 .env
或 credentials.yml
文件提供,以确保安全。
# initializers/sidekiq.rb
Sidekiq.configure_server do |config|
Rails.env.production? ?
config.redis = { url: Rails.application.credentials.redis_url,
password: Rails.application.credentials.redis_password
} :
config.redis = { url: 'redis://localhost:6379/1' }
end
Sidekiq.configure_client do |config|
Rails.env.production? ?
config.redis = { url: Rails.application.credentials.redis_url,
password: Rails.application.credentials.redis_password
} :
config.redis = { url: 'redis://localhost:6379/1' }
end
我已经向文档推送了一个 PR,让未来的用户更清楚地了解这个选项。
我有一个 Rails 5.2.3 (Ruby 2.6.3) 项目托管在 Google Cloud 上。
我目前正在根据 this guide from Google's docs.
设置 Sidekiq 和 Redis我决定使用文档 Deploying to App Engine flexible environment
部分中的 foreman
选项,并且一直在寻找 app.yaml
文件。具体来说,我坚持如何提供 Redis URL、Redis 密码和 Rails 密钥,而不会在我的 git 历史记录中以明文形式公开它。
我在 GCloud 网站上找不到任何相关信息。我发现的唯一提到的 ENV 文件是 these pages of the GCloud docs,但这些只是为了让我可以指定特定的 ENV 变量以供我在 GCloud 上的应用程序使用,这在这种情况下不适用于我。
有什么方法可以让我从我的 .env
文件中读取 app.yaml
文件,或者更好的是,从我的 secrets.yaml
文件中读取文件?
我今天才真正意识到我误解了文档,尽管 Google 一开始并没有很好地说明这一点。
如果您查看我的 OP 中的 docs I referenced,他们会明确说明 environment_variables
只是让您能够通过 app.yaml
文件将 ENV 变量传递到应用程序中。我实际上不需要从文档中提供这一部分
env_variables:
REDIS_URL: redis://[REDIS_IP_ADDRESS]:6379
REDIS_PASSWORD: [PASSWORD]
SECRET_KEY_BASE: [SECRET_KEY]
以上内容可以简单地在 sidekiq.rb
初始值设定项中使用 .env
或 credentials.yml
文件提供,以确保安全。
# initializers/sidekiq.rb
Sidekiq.configure_server do |config|
Rails.env.production? ?
config.redis = { url: Rails.application.credentials.redis_url,
password: Rails.application.credentials.redis_password
} :
config.redis = { url: 'redis://localhost:6379/1' }
end
Sidekiq.configure_client do |config|
Rails.env.production? ?
config.redis = { url: Rails.application.credentials.redis_url,
password: Rails.application.credentials.redis_password
} :
config.redis = { url: 'redis://localhost:6379/1' }
end
我已经向文档推送了一个 PR,让未来的用户更清楚地了解这个选项。