Доступ к информации, хранящейся в credentials.yml.enc - PullRequest
0 голосов
/ 02 октября 2018

Я сейчас пытаюсь получить доступ к информации, которая хранится в моем 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 голосов
/ 11 октября 2018

В случае использования другим оказалось, что мне просто нужно было добавить строку require './config/environment' в начало моего db_backup.rb файла

0 голосов
/ 02 октября 2018

Пробовали ли вы прочитать учетные данные, как в этом примере:

Чтение учетных данных Предположим, что незашифрованная версия вашего 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 sample, так что я думаю, у вас должно быть что-то похожее, если не попытаться объединить.

Более подробную информацию вы можете найти здесь: https://medium.com/cedarcode/rails-5-2-credentials-9b3324851336

...