web-dev-qa-db-fra.com

Echec du déploiement de l'application RoR sur Heroku avec SQLite 3

J'essaie de déployer ma première application sur Heroku. J'utilise SQLite comme base de données. Autant que je sache, Heroku n'utilise pas SQLite - il passe à Postgres dans le backend.

Lorsque je déploie, j'obtiens l'erreur suivante:

/usr/Ruby1.8.7/lib/Ruby/gems/1.8/gems/bundler-1.0.0/lib/bundler/runtime.rb:64:in `require ': aucun fichier à charger - sqlite3 (LoadError)

Ma Gemfile (ce qui, je suppose, est la cause de ce problème) se présente comme suit:

source 'http://rubygems.org'

gem 'Rails', '3.0.0'        
gem 'sqlite3-Ruby', '1.2.5', :require => 'sqlite3'

Qu'est-ce que je fais mal?

37
Jaco Pretorius

Heroku ne supporte pas les bases de données SQLite. Vous devez utiliser PostgreSQL en production, sous la forme J'ai également expliqué dans cet article .

group :production do
  gem "pg"
end

group :development, :test do
  gem "sqlite3", "~> 1.3.0"
end

En fait, il est recommandé d’utiliser dans un environnement de développement/test un environnement aussi proche que possible de la production. Par conséquent, je vous suggère de basculer tous vos environnements vers PostgreSQL.

# replace gem "sqlite3" with
gem "pg"
53
Simone Carletti

Simone Carletti a raison et Joost aussi. Il vous suffit de grouper la gem sqlite3 ou de la supprimer entièrement de votre Gemfile. Heroku a juste besoin de savoir que vous ne voulez pas utiliser sqlite3 pour la production

Donc ça:

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

Ou ca:

...
#No reference to sqlite3-Ruby
...

Si vous supprimez entièrement la référence, vous risquez de gâcher votre base de données locale si

4
hoitomt

Je suis resté coincé là-dessus pendant des heures à examiner chaque réponse, mais je ne pouvais pas obtenir suffisamment de détails pour que tout soit clair. Ce paginé m'a traversé tout. http://railsapps.github.io/Rails-heroku-tutorial.html

Bonne chance.

0
Sangaku

Après m'être cogné la tête contre ce problème, j'ai réalisé que je poussais la branche maître de mon dépôt vers heroku, alors que je faisais tous mes changements postgres dans mon deploy-postgres branche de mon dépôt! 

J'ai fusionné mon deploy-postgres branch avec mon maître local [git checkout master; git merge deploy-postgres] et pouvais ensuite exécuter git Push heroku master conformément à la documentation heroku.

0
duhaime