La implementación de la aplicación RoR en Heroku con SQLite 3 falla
Estoy intentando implementar mi primera aplicación en Heroku. Estoy usando SQLite como base de datos. Hasta donde yo sé, Heroku no usa SQLite, cambia a Postgres en el backend.
Cuando estoy implementando me sale el siguiente error:
/usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.0/lib/bundler/runtime.rb:64:in `require': no existe ese archivo para cargar - sqlite3 (LoadError)
Mi Gemfile
(que es lo que supongo que está causando este problema) tiene el siguiente aspecto:
source 'http://rubygems.org'
gem 'rails', '3.0.0'
gem 'sqlite3-ruby', '1.2.5', :require => 'sqlite3'
¿Qué estoy haciendo mal?
Heroku no admite bases de datos SQLite. Necesitas usar PostgreSQL en producción, como también lo expliqué en esta publicación .
group :production do
gem "pg"
end
group :development, :test do
gem "sqlite3", "~> 1.3.0"
end
En realidad, se recomienda utilizar en desarrollo/prueba un entorno lo más cercano posible a producción. Por lo tanto, le sugiero que cambie todos sus entornos a PostgreSQL.
# replace gem "sqlite3" with
gem "pg"
Simone Carletti tiene razón y Joost también. Sólo necesita agrupar la gema sqlite3 o eliminarla por completo de su Gemfile. Heroku solo necesita saber que no desea utilizar sqlite3 para producción.
Así que esto:
...
group :development, :test do
gem "sqlite3-ruby", "~> 1.3.0", :require => "sqlite3"
end
...
O esto:
...
#No reference to sqlite3-ruby
...
Sin embargo, si eliminas la referencia por completo, probablemente arruinarás tu base de datos local.
Después de golpearme la cabeza con este problema, me di cuenta de que estaba empujando la rama maestra de mi repositorio a heroku, mientras hacía todos mis cambios de postgres en mi rama de implementación-postgres de mi repositorio.
Fusioné mi rama de implementación de postgres con mi maestro local [ git checkout master; git merge deploy-postgres
] y luego pude ejecutar git push heroku master
según la documentación de heroku.