Развертывание приложения RoR в Heroku с SQLite 3 завершается неудачно

35

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

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

  • 0
    А как насчет того, чтобы запустить его локально? У меня есть sqlite во всех моих драгоценных файлах и у меня нет проблем с heroku. Вы связали?
  • 0
    Я не думаю, что я понимаю концепцию комплектации. Что делает комплектация? (Ссылка будет делать)
Показать ещё 1 комментарий
Теги:
sqlite3
deployment
heroku

6 ответов

52
Лучший ответ

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"
  • 0
    Уверены ли вы? Я следую в RailsTutorial.org - автор развертывается в Heroku, ничего не меняя
  • 0
    Читайте здесь docs.heroku.com/database
Показать ещё 5 комментариев
3

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

Итак, это:

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

Или это:

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

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

0

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

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

0

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

Удачи.

-3

Вы можете использовать дополнение clearDB

и gem 'mysql2' вместо gem 'sqlite3'

-5

Я использую 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
  • 7
    Файл database.yml не имеет значения - «Чтобы упростить развертывание типичных приложений Rails, Heroku автоматически создает новый файл database.yml при развертывании»

Ещё вопросы

Сообщество Overcoder
Наверх
Меню