访问存储在 credentials.yml.enc 中的信息

Accessing information stored within credentials.yml.enc

我目前正在尝试访问存储在我的 credentials.yml.enc 文件中的信息

当我 运行 Rails console 时,我得到 Rails.application.credentials.email_password

返回的期望值

我现在想将这个相同的值读入 db_backup.rb,其中包含行(我目前 运行 在本地开发机器上编写代码)

mail.password = Rails.application.credentials.email_password

但是,引发了以下错误:

NameError: uninitialized constant #<Class:#<Backup::Config::DSL:0x00007fb0db941d10>>::Rails

请你告诉我在 .rb 文件中应该如何调整这个语句,或者在这个命令之前我应该​​做些什么?

我已经阅读了许多指南,包括以下通常有用的指南,但它们似乎没有提供此信息:

https://medium.com/cedarcode/rails-5-2-credentials-9b3324851336

https://blog.eq8.eu/til/rails-52-credentials-tricks.html

附加信息

我的 db_backup.rb 文件的结构是:

Model.new(:db_backup, 'Description for db_backup') do

  ##
  # PostgreSQL [Database]
  #
  database PostgreSQL do |db|
    # To dump all databases, set `db.name = :all` (or leave blank)
    db.name               = "my_db_name"
    db.username           = Rails.application.credentials.production[:username]
    db.password           = Rails.application.credentials.production[:password]
    db.host               = "localhost"
    db.port               = 5432
    db.socket             = "/tmp"
    # When dumping all databases, `skip_tables` and `only_tables` are ignored.
    # db.skip_tables        = ["skip", "these", "tables"]
    # db.only_tables        = ["only", "these", "tables"]
    # db.additional_options = ["-xc", "-E=utf8"]
  end
end

网上看了很多教程,上面的语法应该是正确的,但是,我想我一定是把它放在了错误的代码位置?任何指导都会很棒

提前致谢

您是否尝试过像此示例中那样读取凭据:

正在读取凭据 假设您的 config/credentials.yml.enc 文件的未加密版本如下所示:

aws:
  access_key_id: 123
  secret_access_key: 345
  secret_key_base: 2fdea1259c6660852864f9726616df64c8cd

然后,您应该能够像这样以编程方式访问配置:

Rails.application.credentials.aws[:access_key_id]     # => "123"
Rails.application.credentials.aws[:secret_access_key] # => "345"
Rails.application.credentials.secret_key_base         # => "2fdea...

在您的情况下,您应该像这样获取电子邮件密码:

Rails.application.credentials.somerootelementinyourfile[:email_password]

你看到 aws: 是 config/credentials.yml.enc 示例中的根元素,所以我认为如果不尝试一些组合,你应该有类似的东西。

您可以在此处找到更多信息:https://medium.com/cedarcode/rails-5-2-credentials-9b3324851336

为了让其他人使用,结果我只需要将行 require './config/environment' 添加到我的 db_backup.rb 文件

的顶部