Ruby on Rails:使用凭据.yml.enc

时间:2018-10-05 19:41:11

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

有人能在Rails 5.2中使Backup宝石正常工作并从credentials.yml.enc提取信息吗?

我有一个Rails应用程序,该应用程序是在Rails 5.2中从头开始编写的,并具有支持它的PostgreSQL数据库。我想使用BackupWhenever gems对数据库进行自动备份,这是我目前计划做的。

我安装了backup gem并生成了配置文件:

gem install backup -v5.0.0.beta.2
backup generate:model --trigger=db_backup --databases="postgresql" --storages="local" --compressor="gzip" --notifiers="mail"

然后我将从开发计算机上的根目录生成的备份文件夹移动到应用程序的config文件夹中。

如果我对db_backup.rb文件中的所有参数进行硬编码,则可以通过以下命令行通过命令行成功执行开发数据库的备份:

backup perform -t db_backup --config-file 'my_rails_app/config/Backup/config.rb'

但是,如果我将db_backup.rb中的一行从db.username = my_username调整为db.username = Rails.application.credentials.username,则会出现以下错误:

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

我已经创建了一个非常简单的db_backup.rb作为测试方法-如果值是硬编码的,则下面的代码运行良好,如果它引用了凭据文件,则会出现上述错误:

Model.new(:db_backup, 'Description for db_backup') do
  ##
  # PostgreSQL [Database]
  #
  database PostgreSQL do |db|
    db.username = Rails.application.credentials.username
  end
end

我之前在StackOverflow(Ruby on Rails: Difference between behaviour within the console / in a .rb file)上发表的帖子都指出问题是由backup gem安装在Rails应用程序外部(如其文档中所建议的)引起的。我尝试从rake文件中调用backup脚本,但是此错误NameError: uninitialized constant Model

有人可以建议我如何运行备份脚本以及直接从credentials.yml.enc提取参数值吗?

0 个答案:

没有答案