2010-10-09 19 views
37

Estoy intentando implementar mi primera aplicación en Heroku. Estoy usando Sqlite como la base de datos. Por lo que sé, Heroku no usa Sqlite: cambia a Postgres en el back-end.Despliegue de la aplicación RoR en Heroku con Sqlite3 falla

cuando estoy desplegando 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 such file to load -- sqlite3 (LoadError)

Mi Gemfile (que es lo que supongo que está causando este problema) es el siguiente:

source 'http://rubygems.org' 

gem 'rails', '3.0.0'   
gem 'sqlite3-ruby', '1.2.5', :require => 'sqlite3' 

¿Qué estoy haciendo ¿incorrecto?

+0

¿Y qué hay de ejecutarlo localmente? Tengo sqlite en todos mis archivos gem y no tengo problemas con heroku. ¿Hiciste un paquete? –

+0

No creo entender del todo el concepto de agrupar. ¿Qué hace la agrupación? (Un enlace lo hará) –

+0

Duplicar de [Empujar los rieles con SQLite3 a Heroku falla] (http: // stackoverflow.com/questions/3747002/pushing-rails-with-sqlite3-to-heroku-failed) –

Respuesta

53

Heroku no es compatible con bases de datos SQLite. Necesita utilizar PostgreSQL en producción, como I also explained in this post.

group :production do 
    gem "pg" 
end 

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

En realidad, se recomienda utilizar en desarrollo/pruebas un entorno lo más cercano posible a la producción. Por lo tanto, sugiero que cambie todos sus entornos a PostgreSQL.

# replace gem "sqlite3" with 
gem "pg" 
+0

¿Estás seguro? Estoy siguiendo en RailsTutorial.org - el autor implementa a Heroku sin cambiar nada –

+0

Lea aquí http://docs.heroku.com/database –

+4

Gracias, no tengo idea de por qué el estúpido tutorial no menciona que –

-4

Estoy usando sqlite3 y despliego a Heroku sin problema. Aquí está mi 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

El archivo database.yml no importa: "Para facilitar la implementación de las aplicaciones típicas de Rails, Heroku genera automáticamente un nuevo archivo database.yml en la implementación" –

3

Simone Carletti es correcta, al igual que Joost. Solo necesita agrupar la gema sqlite3 o eliminarla por completo de su Gemfile. Heroku sólo necesita saber que usted no desea utilizar sqlite3 para la 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 
... 

Si se quita la referencia en su totalidad es probable desastre hasta su db local a través de

0

Después de golpearse la cabeza contra este problema, me di cuenta que estaba empujando el maestro rama de mi repo a heroku, que tenía de todo de mis cambios de postgres en mi rama deploy-postgres de mi repositorio!

que se fusionó mis deploy-postgres rama con mi maestro local [git checkout master; git merge deploy-postgres] y luego podría funcionar git push heroku master conforme a la documentación heroku.

Cuestiones relacionadas