У меня есть приложение Rails 6.0.0rc2, и я не могу прочитать свои учетные данные.
Когда я это делаю rails credentials:edit, я могу добавить учетные данные, и они прекрасно сохраняются.
aws:
access_key_id: 123
secret_access_key: 345
Однако, когда я запускаю консоль и пытаюсь прочитать учетные данные, я получаю следующее:
Rails.application.credentials[:aws]
=> nil
или
Rails.application.credentials.aws[:access_key_id]
Traceback (most recent call last):
1: from (irb):2
NoMethodError (undefined method `[]' for nil:NilClass)
или
Rails.application.credentials[:aws][:access_key_id]
Traceback (most recent call last):
1: from (irb):3
NoMethodError (undefined method `[]' for nil:NilClass)
Что бы я ни пробовал, мои учетные данные всегда кажутся nil.
Если я запускаю Rails.application.credentials.secret_key_base, я получаю правильный результат, поэтому файл можно прочитать просто отлично.
Rails.application.credentials[:secret_key_base] работает нормально. Rails.application.credentials.aws.access_key_id дает мне undefined method результат, как указано выше. Версия Ruby: ruby 2.5.1p57 (версия 63029 2018-03-29) [x86_64-darwin17]
хм, возможно, у вас есть скрытый символ где-то в вашем файле, который ломает вещи. Я бы удалил все в файле после secret_key_base и попытался бы перепечатать aws часть файла вручную, не копируя ее.
Я удалил все и снова набрал вручную. Все еще с той же проблемой
Для записи у меня точно такая же проблема. Я могу получить secret_key_base, но больше ничего. Это какая-то странная ошибка разрешений?
Это все еще не решено? Если да, проверьте, есть ли у вас каталог config/credentials/. Если вы это сделаете, и у него есть файлы учетных данных для конкретной среды, это может быть проблемой.





Вы пробовали использовать dig?
https://ruby-doc.org/core-2.3.0_preview1/Hash.html#method-i-dig
Что-то вроде этого может сработать:
Rails.application.credentials.dig(:aws, :access_key_id)
Та же история. Возврат nil
что вы получите, если запустите bin/rails credentials:show в своем терминале?
Это работает в том смысле, что я могу видеть все содержимое файла
В моем первоначальном ответе была синтаксическая ошибка, теперь вы получаете лучшие результаты?
Я уже заметил эту синтаксическую ошибку и удалил "." Я боюсь
Основываясь на том, что вы написали, я в растерянности... это может быть ошибка в 6.0.0rc2, но это всего лишь предположение.
У меня такая же проблема с рельсами 5.2
Я обнаружил, что Rails.application.credentials.dig(:aws, :access_key_id) не работает, однако, если вы удалите ':aws,' и используете Rails.application.credentials.dig(:access_key_id), он потянет значение для элемента в файле секретов с именем «access_key_id:».
Я только что столкнулся с этим сам, и способ, которым я смог получить доступ к данным, состоял в том, чтобы создать вспомогательный метод, такой как:
def credentials
Rails.application.credentials[:aws]&.with_indifferent_access
end
Затем с помощью credentials[:access_key_id] я смог получить доступ к внутренним клавишам. Если бы я попытался сделать Rails.application.credentials[:aws] из контроллера, в котором я находился, это не сработало, но если бы я использовал вспомогательный метод, это сработало. ??♀️
Может быть, это кому-то поможет, а может, это просто мне так повезло. Я билась головой об это около 4 часов.
Я тоже столкнулся с той же проблемой. Для меня я перезапуск сервера Rails решил проблему.
Скорее всего, сервер либо не принимает изменения автоматически, либо сервер необходимо перезапускать всякий раз, когда вы создаете новый файл учетных данных.yml.enc.
Я думаю, что это проблема с кодовой базой рельсов. github.com/rails/rails/issues/32947 похоже, что необходимо предоставить всю информацию, необходимую для загрузки приложения, включая учетные данные.
Я столкнулся с похожей проблемой, хотя я не уверен, что она такая же, как у вас. Если в вашем ключе доступа есть зарезервированные символы, он не будет правильно проанализирован. Даже такой символ, как "!", вызовет проблемы. В файле учетных данных.yml.enc заключите значения в кавычки. Когда вы получаете доступ к этим значениям, используйте метод дампа, чтобы избежать проблемных символов. Так что в вашем случае Rails.application.credentials[:aws][:access_key_id].dump
Я столкнулся с той же проблемой. Я обновил файл учетных данных, используя возвышенное. Даже при перезапуске сервера я не смог внести изменения. Я закрыл терминал, а затем он начал отражать изменения.
Вы упомянули, что
Rails.application.credentials.secret_key_baseработает. А как насчетRails.application.credentials[:secret_key_base]? Возможно доступ по символу нарушен. Какую версию рубина вы используете? Возможно, у вас получитсяRails.application.credentials.aws.access_key_id.