我当前正在尝试访问存储在我的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
在线上看过很多教程,看来上面的语法应该是正确的,但是,我想我必须将其放在代码的错误位置了吗?任何指导都很棒
预先感谢
答案 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