访问存储在 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
文件
的顶部
我目前正在尝试访问存储在我的 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
文件