40 votes

Le déploiement de l'application RoR sur Heroku avec Sqlite3 échoue

Je suis en train de déployer ma première application pour Heroku. Je suis en utilisant Sqlite comme base de données. Autant que je sache, Heroku ne pas utiliser Sqlite - il passe de Postgres dans le backend.

Quand je suis déploiement j'obtiens l'erreur suivante:

/usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.0/lib/bundler/runtime.rb:64:dans `besoin': aucun fichier à charger -- sqlite3 (LoadError)

Mon gemfile (qui est ce que je suppose est à l'origine 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'

Ce que je fais mal?

53voto

Simone Carletti Points 77653

Heroku ne prend pas en charge les bases de données SQLite. Vous devez utiliser PostgreSQL sur la production.

 group :production, :staging do
  gem "pg"
end

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

4voto

hoitomt Points 31

Simone Carletti a raison, tout comme Joost. Il vous suffit de regrouper la gemme 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 complètement la référence, vous allez probablement gâcher votre base de données locale

0voto

Sangaku Points 20

Je suis resté coincé là-dessus pendant des heures à regarder chaque réponse ici, mais je n'ai pas pu obtenir suffisamment de détails pour que tout se passe. Cette pagination m'a guidé à travers tout. http://railsapps.github.io/rails-heroku-tutorial.html

Bonne chance.

-5voto

user471634 Points 1

J'utilise sqlite3 et je déploie sur Heroku sans problème. Voici mon 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
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X