1

Я использую PG для моего приложения rails4.Postgres <=> Рельсы. Как автоматически создать пользователя из базы данных.yml

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

Это проблема, когда я делюсь мой код с проектировщиками и т.д., и они должны излишне вдаваться в подробности о настройке пользователей БД и сделать их супер-пользователей и т.д.

Есть ли способ, я могу автоматизировать, учитывая, что я использую жемчужину PG, и Rails уже знают о пользователях, которые мне нужны из моей базы данных.yml

+0

Почему вы не пишете простой сценарий оболочки, который может запускать любой пользователь для создания пользователя postgres? –

ответ

1

Вы не должны этого делать. database.yml не принадлежит к управлению версиями, см. How to manage Rails database.yml.

Вы должны хранить файл шаблон (я использую config/database.yml.example) и каждый человек, который клонирует ваше приложение должно скопировать файл шаблон для config/database.yml, и добавить к нему своим существующему пользователю базы данных и пароль для подключения к их местному развитию экземпляр Postgres.

У ваших дизайнеров также должен быть один пользователь разработки на своих локальных машинах, и до их размещения их учетные данные будут размещены в config/database.yml.

Невозможно создать Rails для создания пользователей базы данных, поскольку предполагается, что ваша задача - указать Rails существующий пользователь базы данных, который он должен использовать. Все ваши приложения в среде разработки должны использовать одного и того же пользователя.

+1

Я не согласен; Я думаю, что хорошо иметь * development * и * test * разделы 'database.yml' в управлении версиями.Нет никакого смысла в том, чтобы заставить разработчиков прыгать через обручи без причины. – Dogweather

0

Если запустить initdb команды с --auth-local trust опции сразу после установки PostgreSQL, он будет обходить все будущие проверки подлинности пользователя базы данных:

initdb /usr/local/var/postgres -E utf8 --auth-local trust 

Конечно, это будет серьезная проблема безопасности при использовании вне среды разработки , Но поскольку вы упомянули о конкретной потребности в быстрой настройке для людей, которые работают над проектом, казалось, что это может быть возможный подход в вашем случае.

0

@meagar правильно относится к сохранению ваших паролей и ключей вне контроля версий, поэтому обязательно держите этот совет в уме.

В наши дни принято использовать переменные среды для хранения информации для входа в систему, поскольку эти данные по своей сути привязаны к среде, в которой вы работаете. Таким образом, вы могли бы, по сути, проверить database.yml на контроль версий, если вы вставляете вызовы в переменные окружения, а не в настоящие секреты.

Например, вы можете положить что-то вроде username: <%= ENV[DB_USER_DEV] %> и password: <%= ENV[DB_PASS_DEV] %> в свой файл database.yml. Затем положите DB_USER_DEV=my_psql_username и DB_PASS_DEV=hashed_gibberish в ~/.profile.

С помощью бродяг, я создаю переменные пользователя и среды при настройке Vagrantfile для базового блока. Все наши проекты используют один и тот же базовый ящик, и добавление этих ENV vars к database.yml более или менее автоматизирует все в dev!

 Смежные вопросы

  • Нет связанных вопросов^_^