#ruby #yaml
#ruby #yaml
Вопрос:
У меня в файле env есть переменная среды, которая
SOME_CLIENT_ID= 574536488180.574908975999
и я включил это в свой secrects.yml
файл следующим образом
some_client_id: <%= ENV['SOME_CLIENT_ID'] %>
и когда я получаю это в своем .rb
и rails console
с Rails.application.secrets.some_client_id
помощью этого, дайте мне 574536488180.575
вместо 574536488180.574908975999
и ENV['SOME_CLIENT_ID']
Дает точное значение. Rails.application.secrets.some_client_id
похоже, что это дает мне круглое значение, но мне нужно, чтобы я ввел исходное значение.
как я могу решить эту проблему? пожалуйста, помогите мне. Спасибо
Комментарии:
1. Примечание: эта проблема не имеет ничего общего с Rails , теги обновлены.
Ответ №1:
Проблема в том, что анализатор YAML слишком умен. Скажите им, что это строка:
- some_client_id: <%= ENV['SOME_CLIENT_ID'] %>
some_client_id: "<%= ENV['SOME_CLIENT_ID'] %>"
Ответ №2:
Ruby интерпретирует значение в вашей переменной SOME_CLIENT_ID как значение с плавающей точкой. Если значение не является числом с плавающей запятой, я рекомендую вам установить его в виде строки в вашем файле secrets:
some_client_id: '<%= ENV['SOME_CLIENT_ID'] %>'
Комментарии:
1. Я вижу. Я думаю, что интерполяция в файле secrets все еще интерпретирует его как значение float.
2. Да: ( есть ли какое-либо решение, которое поможет справиться с этой серьезной проблемой??
3. Пытаться устранить проблему на уровне env var не имеет смысла. Переменные среды — это уже все строки .
4. @AlekseiMatiushkin вы правы, я предложил исправить не в том файле. Я отредактировал свой ответ.