Развертывание приложения RoR для Heroku с Sqlite3 не выполняется

Я пытаюсь развернуть свое первое приложение в 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'

Что я делаю неправильно?

Ответ 1

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"

Ответ 2

Симона Карлетти правильная, и это тоже Joost. Вам нужно всего лишь объединить камень sqlite3 или полностью удалить его из Gemfile. Heroku просто должен знать, что вы не хотите использовать sqlite3 для производства

Итак, это:

...
group :development, :test do
  gem "sqlite3-ruby", "~> 1.3.0", :require => "sqlite3"
end
...

Или это:

...
#No reference to sqlite3-ruby
...

Если вы полностью удалите ссылку, вы, вероятно, испортите свой локальный db, хотя

Ответ 3

Я застрял на этом часами, глядя на каждый ответ здесь, но я не мог получить достаточно подробностей, чтобы он собрался вместе. Этот пейдж прошел через меня. http://railsapps.github.io/rails-heroku-tutorial.html

Удачи.

Ответ 4

После того, как я ударил головой об этой проблеме, я понял, что подталкиваю основную ветвь моего репо к герою, в то время как я делал все мои изменения postgres в моей ветке развертывания-postgres моего репо!

Я объединил ветку deploy-postgres с моим локальным мастером [ git checkout master; git merge deploy-postgres], а затем смог запустить git push heroku master в соответствии с документацией heroku.

Ответ 6

Я использую 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