我应该将 rails 应用程序的密钥放在哪里?

Where should I put keys at my rails app?

我正在尝试使用 gem webpush 在我的 rails 应用程序中创建推送通知。

this part at tutorial 他说:

"Use webpush to generate a VAPID key that has both a public_key and private_key attribute to be saved on the server side."

# One-time, on the server
vapid_key = Webpush.generate_key

# Save these in your application server settings
vapid_key.public_key
vapid_key.private_key

我的疑问是:"application server settings"到底是什么?我应该将这些密钥放在我的 rails 应用程序的什么位置?

理想情况下,它应该存储在 environment variables 中(取决于您使用的 OS)。 如果您正在使用 dotenv gem 并且发现在生产中使用 dotenv 很方便,您可以将其存储在 .env 文件中。 要使用变量,请使用 ENV['NAME']

此外,您还可以使用默认 rails config/secrets.yml 文件。要使用变量,请使用 Rails.application.secrets.name.

您还可以将 env 变量与 secrets.yml 文件结合起来,例如:

secrets.yml

...
 key: ENV['NAME']

好处:使用独立于 rails 环境的变量。

注意:切勿将您的凭据文件共享到 git 或任何 public 存储库!如果您需要与其他开发人员共享此文件,只需将带有开发密钥的副本发送给他们即可。

链接:

dotenv

environment variables

secrets.yml

由于 Rails 不再支持 secrets.yml.

,我写了 a gem 来帮助解决这个问题

提醒:您永远不应将私钥或任何其他秘密变量存储在提交给您的版本控制的文件中 - 为此请使用环境变量。