Проблема с получением переменной Rails ENV в файле yml, она выдает float вместо целой строки

#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 вы правы, я предложил исправить не в том файле. Я отредактировал свой ответ.