0

В настоящее время у меня есть проект рельсов, который я развертываю на производственный сервер, который использует базу данных postgres. Я разрабатываю проект rails в Windows, а это означает, что если я хочу протестировать локально, я должен изменить все базы данных в моем файле database.yml от postgres до sqlite3 (поскольку настройка Windows для запуска сервера postgres, похоже, боль).Использование тестовой базы данных Sqlite3 и базы данных Postgres dev/production в Rails

То, что я хотел бы быть в состоянии сделать это отформатировать database.yml что-то вроде этого:

development: 
    adapter: postgresql 
    encoding: utf8 
    database: <%= begin IO.read("/home/www-data/.db/.dev_name") rescue "" end %> 
    pool: 5 
    username: <%= begin IO.read("/home/www-data/.db/.user") rescue "" end %> 
    password: <%= begin IO.read("/home/www-data/.db/.pass") rescue "" end %> 

# Warning: The database defined as "test" will be erased and 
# re-generated from your development database when you run "rake". 
# Do not set this db to the same as development or production. 
test: 
    adapter: sqlite3 
    database: db/test.sqlite3 
    pool: 5 
    timeout: 5000 

production: 
    adapter: postgresql 
    encoding: utf8 
    database: <%= begin IO.read("/home/www-data/.db/.prod_name") rescue "" end %> 
    pool: 5 
    username: <%= begin IO.read("/home/www-data/.db/.user") rescue "" end %> 
    password: <%= begin IO.read("/home/www-data/.db/.pass") rescue "" end %> 

Таким образом, я могу запустить rails s -e test локально и тест с базой данных sqlite3, но когда я раскрываю к моему серверы разработки и производства Я могу использовать postgres.

Проблема, с которой я сталкиваюсь, заключается в том, что с изменениями в моей базе данных.yml, показанной выше, при запуске rails s -e test локально я получаю сообщение об ошибке, указывающее, что рельсы не смогли найти жемчуг pg, который, по-видимому, подразумевает, что он все еще пытается использовать либо сервер разработки, либо производственный сервер.

+1

Настройка Postgres Oin Windows, не должно быть боли. Развиваясь с SQLite, но используя Postgres в производстве, теперь это боль, и большая. Я бы рекомендовал использовать ту же СУБД для обоих. –

+0

Разработка в одном и переключение на другое было очень легко для меня; всего несколько изменений в моей базе данных.yml и добавление «gem» pg '' в мой gemfile. То, что я действительно ищу, - это решение не изменять эти изменения каждый раз, когда я хочу развернуть. – Alex

+0

Это все очень хорошо - пока это не так. Есть тонкие различия, которые могут нарушить ваш код или изменить поведение немного, и вы даже не осознаете его (пока кто-то не жалуется). [Как в этом связанном вопросе.] (Http://stackoverflow.com/questions/11249059/generic-ruby-solution-for-sqlite3-like-or-postgresql-ilike) –

ответ

2

со всеми предупреждениями признали, что ответ на этот вопрос будет использовать group in your Gemfile как

gem 'pg', group: [:development, :production] 
gem 'sqlite3', group: :test 
+0

Только то, что я искал! огромное спасибо – Alex