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

时间:2018-10-01 22:37:57

标签: ruby-on-rails ruby-on-rails-5 credentials

我当前正在尝试访问存储在我的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

在线上看过很多教程,看来上面的语法应该是正确的,但是,我想我必须将其放在代码的错误位置了吗?任何指导都很棒

预先感谢

2 个答案:

答案 0 :(得分:0)

您是否尝试过读取此示例中的凭据:

读取凭证 假设您的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

答案 1 :(得分:0)

如果要被他人使用,原来我只需要在require './config/environment'文件的顶部添加行db_backup.rb