La distribuzione dell’app RoR su Heroku con SQLite 3 non riesce

Sto provando a distribuire la mia prima app su Heroku. Sto usando SQLite come database. Per quanto ne so, Heroku non usa SQLite – passa a Postgres nel backend.

Quando eseguo il deployment ricevo il seguente errore:

/usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.0/lib/bundler/runtime.rb:64:in `require ‘: nessun file da caricare – sqlite3 (LoadError)

Il mio Gemfile (che è quello che presumo sta causando questo problema) si presenta come segue:

 source 'http://rubygems.org' gem 'rails', '3.0.0' gem 'sqlite3-ruby', '1.2.5', :require => 'sqlite3' 

Che cosa sto facendo di sbagliato?

Heroku non supporta i database SQLite. Devi usare PostgreSQL in produzione, come ho spiegato anche in questo post .

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

In realtà, si raccomanda di utilizzare nello sviluppo / testare un ambiente il più vicino ansible alla produzione. Pertanto, ti suggerisco di passare tutti i tuoi ambienti a PostgreSQL.

 # replace gem "sqlite3" with gem "pg" 

Simone Carletti ha ragione e così è Joost. Devi solo raggruppare la gem sqlite3 o rimuoverla interamente dal tuo Gemfile. Heroku ha solo bisogno di sapere che non vuoi usare sqlite3 per la produzione

Così questo:

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

O questo:

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

Se rimuovi completamente il riferimento, probabilmente però rovinerai il tuo db locale

Sono rimasto bloccato per ore a guardare ogni risposta qui, ma non ho potuto ottenere dettagli sufficienti per farlo venire insieme. Questo paginato mi ha attraversato tutto. http://railsapps.github.io/rails-heroku-tutorial.html

In bocca al lupo.

Dopo aver sbattuto la testa contro questo problema, mi sono reso conto che stavo spingendo il ramo principale del mio repository su heroku, mentre stavo apportando tutti i miei cambiamenti postgres nel mio deploy-postgres del mio repository!

Ho unito il mio ramo deploy-postgres al mio master locale [ git checkout master; git merge deploy-postgres git checkout master; git merge deploy-postgres ] e quindi eseguire git push heroku master secondo la documentazione di heroku.

È ansible utilizzare l’addon clearDB

e gem 'mysql2' invece di gem 'sqlite3'

Sto usando sqlite3 e distribuito su Heroku senza problemi. Ecco il mio 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