Учетные данные Rails возвращают ноль

У меня есть приложение 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[:secret_key_base]? Возможно доступ по символу нарушен. Какую версию рубина вы используете? Возможно, у вас получится Rails.application.credentials.aws.access_key_id.

Vadim 12.03.2019 19:55
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]
BillyBib 12.03.2019 19:57

хм, возможно, у вас есть скрытый символ где-то в вашем файле, который ломает вещи. Я бы удалил все в файле после secret_key_base и попытался бы перепечатать aws часть файла вручную, не копируя ее.

Vadim 12.03.2019 20:00

Я удалил все и снова набрал вручную. Все еще с той же проблемой

BillyBib 12.03.2019 20:06

Для записи у меня точно такая же проблема. Я могу получить secret_key_base, но больше ничего. Это какая-то странная ошибка разрешений?

Nmuta 05.04.2019 04:42

Это все еще не решено? Если да, проверьте, есть ли у вас каталог config/credentials/. Если вы это сделаете, и у него есть файлы учетных данных для конкретной среды, это может быть проблемой.

RedBassett 02.03.2021 23:40
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
6
2 599
6

Ответы 6

Вы пробовали использовать dig?

https://ruby-doc.org/core-2.3.0_preview1/Hash.html#method-i-dig

Что-то вроде этого может сработать:

Rails.application.credentials.dig(:aws, :access_key_id)

Та же история. Возврат nil

BillyBib 12.03.2019 19:38

что вы получите, если запустите bin/rails credentials:show в своем терминале?

vinyl 12.03.2019 19:40

Это работает в том смысле, что я могу видеть все содержимое файла

BillyBib 12.03.2019 19:41

В моем первоначальном ответе была синтаксическая ошибка, теперь вы получаете лучшие результаты?

vinyl 12.03.2019 19:46

Я уже заметил эту синтаксическую ошибку и удалил "." Я боюсь

BillyBib 12.03.2019 19:46

Основываясь на том, что вы написали, я в растерянности... это может быть ошибка в 6.0.0rc2, но это всего лишь предположение.

vinyl 12.03.2019 19:47

У меня такая же проблема с рельсами 5.2

user2012677 24.05.2019 05:37

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

Elias Glyptis 01.04.2021 05:37

Я столкнулся с похожей проблемой, хотя я не уверен, что она такая же, как у вас. Если в вашем ключе доступа есть зарезервированные символы, он не будет правильно проанализирован. Даже такой символ, как "!", вызовет проблемы. В файле учетных данных.yml.enc заключите значения в кавычки. Когда вы получаете доступ к этим значениям, используйте метод дампа, чтобы избежать проблемных символов. Так что в вашем случае Rails.application.credentials[:aws][:access_key_id].dump

Я столкнулся с той же проблемой. Я обновил файл учетных данных, используя возвышенное. Даже при перезапуске сервера я не смог внести изменения. Я закрыл терминал, а затем он начал отражать изменения.

Другие вопросы по теме