2016-05-20 4 views
1

Я новичок в Rails. Я оттолкнула мою игрушку приложение от cloud9 к Heroku и волшебно мое Heroku приложение использует PostgreSQL, хотя мой database.yml из получений Heroku для моего приложения на Heroku выглядит следующим образом:Как Heroku или Rails настраивают базу данных?

# SQLite version 3.x 
# gem install sqlite3 
# 
# Ensure the SQLite 3 gem is defined in your Gemfile 
# gem 'sqlite3' 
# 
default: &default 
    adapter: sqlite3 
    pool: 5 
    timeout: 5000 

development: 
    <<: *default 
    database: db/development.sqlite3 

# 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: 
    <<: *default 
    database: db/test.sqlite3 

production: 
    <<: *default 
    database: db/production.sqlite3 

Я знаю, что он использует PostgreSQL потому что я могу удаленно обращаться к БД с помощью pgAdmin III.

Так что происходит внутри Heroku?

+0

Покажите свой Gemfile – Nirupa

+0

dreamfly, вы нашли решение или у вас возникли проблемы? – sonnyhe2002

+0

Теперь я знаю, почему. Благодаря! – dreamfly

ответ

1

При использовании Heroku сервер Heroku будет вводить свой собственный файл yml базы данных (который будет использовать URL-адрес базы данных). Вот почему database.yml в вашем коде не будет иметь никакого эффекта.

Вы можете прочитать здесь https://devcenter.heroku.com/articles/rails-database-connection-behavior

1

Heroku не позволяет использовать SQLite. Он будет использовать PostgreSQL и автоматически создаст его для вас при загрузке приложения.

SQLite на самом деле не является производственной базой данных. Поскольку SQLite работает в памяти, если вы использовали его в качестве базы данных на Heroku, вся ваша база данных будет очищаться один раз в день. Существует дополнительная информация here.

Я действительно удивлен, что вы не получили никаких ошибок при развертывании. В прошлом, когда я случайно покинул SQLite, мне всегда приходилось «провал». Heroku имеет действительно хорошее tutorial для смены базы данных из SQLite в PostgreSQL.

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