Установить переменную окружения (ENV) для использования в рельсах
экспериментируя с MongoID на сервере Rails и запутавшись в том, как/где установить переменные среды.
config/mongoid.yml
шаблон по умолчанию:
defaults: &defaults
host: localhost
...
# set these environment variables on your prod server
production:
host: <%= ENV['MONGOID_HOST'] %>
port: <%= ENV['MONGOID_PORT'] %>
username: <%= ENV['MONGOID_USERNAME'] %>
password: <%= ENV['MONGOID_PASSWORD'] %>
database: <%= ENV['MONGOID_DATABASE'] %>
мой вопрос в том, установлены ли они где-нибудь в рельсах? или они на системном уровне? и если да, то где / как установить, чтобы учетная запись пользователя не должна быть зарегистрирована для их действительности?
2 ответов
хэш ENV будет иметь значения из системной среды с момента запуска процесса rails.
Они могут быть установлены в командной строке перед запуском сервера или программы. Например в bash:
export MONGOID_USERNAME='username'
Они хороши только для жизни вашей оболочки, если вы не добавите их в свой профиль, но вполне вероятно, что ваш веб-сервер не будет использовать этот профиль, поэтому он полезен только для локальной разработки.
их также можно установить, например, в Apache с SetEnv. Например:
<Location /app >
SetEnv MONGOID_HOST 'localhost'
SetEnv MONGOID_PORT '8883'
SetEnv MONGOID_USERNAME 'username'
</Location>
Это может быть где угодно SetEnv является законным в вашей конфигурации apache, и это тот же контекст, что и ваше приложение.
Что касается вашего комментария о лучших практиках, некоторые люди помещают пример файла конфигурации yml в систему управления версиями и игнорируют config/*.yml
файлы из системы управления версиями. При клонировании репозитория копирование и исправление примеров до правильных значений является частью установки, например запуск rake tmp: создать, чтобы создать структуру папок tmp.
Я хотел добавить еще один вариант. При загрузке Rails попытается прочитать DATABASE_URL
как url-адрес и подключение к базе данных из этой переменной env (игнорирование базы данных.в формате YML). Вы должны указать базу данных, как:
DATABASE_URL="mysql2://user:pass@localhost/app_development" rails server
и вы можете проверить это через:
DATABASE_URL="..." rails runner "p ActiveRecord::Base.connection_config"
Это просто еще один вариант вместо того, чтобы ставить настройки erb в database.yml
.