Как использовать переменную окружения на маршруте в рельсах 5 - PullRequest
1 голос
/ 25 мая 2019

Я могу сделать переменные среды доступными для приложения локально с помощью .env файла

Проблема в том, что я не могу понять, как использовать переменную в маршруте

Я пробовал варианты

get 'v1/packages<%= ENV["key1"] %>' => 'flatfiles#raw'

К сожалению, это не работает (браузер сообщает, что не найдено ни одного маршрута, но я также могу сказать, что при запуске rake routes, который дает

GET  /v1/packages%3C%25=%20ENV[%22key1%22]%20%25%3E(.:format)

Я тоже пытался

get 'v1/packages#{ENV["key1"]}' => 'flatfiles#raw'

который делает маршрут

GET  /v1/packages%23%7BENV[%22key1%22]%7D

Кажется, что ни один из методов не вставляет переменную 'key1' в маршрут, как я надеюсь сделать

Для удобства я также попытался создать модель Key и получил к ней доступ таким образом, но маршрут по-прежнему интерпретирует переменную буквально

  @key1 = Key.find(1).private_key
  get 'v1/packages#{@key1}'  => 'flatfiles#raw'
GET /v1/packages_and_functions%23%7B@key1%7D

1 Ответ

2 голосов
/ 26 мая 2019

Я считаю, что ваша ошибка - попытаться использовать строки формата в одной строке в кавычках:

get 'v1/packages#{ENV["key1"]}' => 'flatfiles#raw'

, что означает, что строка берется как есть. Вместо этого вы должны использовать двойные кавычки, чтобы ruby ​​мог понять, что вам действительно нужен формат в строке:

get "v1/packages#{ENV['key1']}" => 'flatfiles#raw'

Если ваш редактор имеет надлежащую поддержку окраски синтаксиса, вы заметите, что первый будет отображаться как один цвет, тогда как у второго будет выделена часть формата (#{}).

Наконец, синтаксис <%= ... %> используется только в шаблонах ERB, которые Rails обрабатывает для вас, когда вы редактируете некоторые файлы .yml или html.erb или явно используете ERB.new(...) в своем коде.

НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...