Я пытаюсь развернуть свое первое приложение в Heroku. Я использую Sqlite как базу данных. Насколько я знаю, Heroku не использует Sqlite - он переключается на Postgres в бэкэнд.
При развертывании я получаю следующую ошибку:
/usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.0/lib/bundler/runtime.rb:64:in `require ': нет такого файла для загрузки - sqlite3 (LoadError)
Мой gemfile (который, как я полагаю, вызывает эту проблему) выглядит следующим образом:
source 'http://rubygems.org'
gem 'rails', '3.0.0'
gem 'sqlite3-ruby', '1.2.5', :require => 'sqlite3'
Что я делаю неправильно?
Heroku не поддерживает базы данных SQLite. Вам нужно использовать PostgreSQL для производства, поскольку Я также объяснил в этом сообщении.
group :production do
gem "pg"
end
group :development, :test do
gem "sqlite3", "~> 1.3.0"
end
Собственно, он рекомендовал использовать в разработке/тестировании среду как можно ближе к производству. Поэтому я предлагаю вам переключить все среды на PostgreSQL.
# replace gem "sqlite3" with
gem "pg"
Симона Карлетти правильная, и это тоже Joost. Вам нужно всего лишь объединить камень sqlite3 или полностью удалить его из Gemfile. Heroku просто должен знать, что вы не хотите использовать sqlite3 для производства
Итак, это:
...
group :development, :test do
gem "sqlite3-ruby", "~> 1.3.0", :require => "sqlite3"
end
...
Или это:
...
#No reference to sqlite3-ruby
...
Если вы полностью удалите ссылку, вы, вероятно, испортите свой локальный db, хотя
После того, как я ударил головой об этой проблеме, я понял, что подталкиваю основную ветвь моего репо к герою, в то время как я делал все мои изменения postgres в моей ветке развертывания-postgres моего репо!
Я объединил ветку deploy-postgres с моим локальным мастером [ git checkout master; git merge deploy-postgres
], а затем смог запустить git push heroku master
в соответствии с документацией heroku.
Я застрял на этом часами, глядя на каждый ответ здесь, но я не мог получить достаточно подробностей, чтобы он собрался вместе. Этот пейдж прошел через меня. http://railsapps.github.io/rails-heroku-tutorial.html
Удачи.
Вы можете использовать дополнение clearDB
и gem 'mysql2'
вместо gem 'sqlite3'
Я использую sqlite3 и развертываю в Heroku никаких проблем. Вот моя database.yml
# SQLite version 3.x
# gem install sqlite3-ruby (not necessary on OS X Leopard)
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
# 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: sqlite3
database: db/production.sqlite3
pool: 5
timeout: 5000