Я развернул приложение в digitalocean, используя образ Ruby on Rails .По умолчанию он настроен для пользователя с именем rails
.Мой rails.service
файл выглядит так:
[Unit]
Description=OneMathsExamQuestions
Requires=network.target
[Service]
Type=simple
User=rails
Group=rails
WorkingDirectory=/home/rails/one_maths_exam_questions/
ExecStart=/bin/bash -lc 'bundle exec puma'
TimeoutSec=30s
RestartSec=30s
Restart=always
[Install]
WantedBy=multi-user.target
Мне нужно использовать некоторые переменные окружения в моем приложении.Поэтому я добавил несколько строк в мои /home/rails/.bashrc
и /root/.bashrc
файлы (я подозреваю, что необходим только первый, но ни один из них не работает):
export A="val1"
export B="val2"
...
Теперь: если я позвоню echo $A
в терминале я получаю ожидаемый результат.Если я захожу в консоль Rails и выполняю ENV["A"]
, я получаю ожидаемый результат.Но мое приложение не работает должным образом (желаемое поведение - подключение к Amazon S3; точная ошибка не важна).
Если я захожу в свой контроллер и явно регистрирую переменные env с помощью Rails.logger.debug ENV
, я просто получаю ENV
, а Rails.logger.debug ENV["A"]
возвращает пустую строку (я думаю, nil
).Точно так же, если я пытаюсь сделать ENV["RAILS_ENV"]
, который обязательно должен работать, я получаю то же самое.Но Rails.env
возвращает "development"
, как и ожидалось.
Более того, если я явно напишу
ENV["A"] = "val1"
ENV["B"] = "val2"
...
в моем config/application.rb
, приложение будет работать правильно.Но это, очевидно, не постоянное решение, так как я не могу зафиксировать это для контроля версий.
Я не использую драгоценный камень figaro
, который, как мне кажется, предлагают многие места, но я не понимаю, почему я должен это делать, так как он отлично работает на моей локальной машине.