2012-01-18 36 views
5

Por alguna razón, heroku intenta requerir dm-sqlite-adapter, aunque debería usar Postgres aquí. Tenga en cuenta que esto sucede cuando abro cualquier URL, no durante el mismo git push.Sinatra + Heroku + Datamapper despliega problemas con dm-sqlite-adapter

Creé una aplicación de Facebook predeterminada.

El Gemfile:

source :gemcutter 

gem "foreman" 

gem "sinatra" 
gem "mogli" 
gem "json" 
gem "httparty" 
gem "thin" 
gem "data_mapper" 
gem "heroku" 

group :production do 
    gem "pg" 
    gem "dm-postgres-adapter" 
end 

group :development, :test do 
    gem "sqlite3" 
    gem "dm-sqlite-adapter" 
end 

DataMapper configuración:

# Setting up the database 
DataMapper.setup(:default, ENV['DATABASE_URL'] || "sqlite3://#{Dir.pwd}/data/mydatabase.db") 

fragmento de registro pertinente, cuando se abre cualquier URL:

Starting process with command `bundle exec thin -R config.ru start -p 34984` 
2012-01-18T15:11:55+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/dm-core-1.2.0/lib/dm-core/adapters.rb:163:in `require': no such file to load -- dm-sqlite-adapter (LoadError) 
2012-01-18T15:11:55+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/dm-core-1.2.0/lib/dm-core/adapters.rb:163:in `load_adapter' 

Probamos soluciones relacionadas, pero sin ayuda por lo lejos.

BTW: bundle install dice Using do_postgres y Using dm-postgres-adapter. ¿Me estoy perdiendo algo sobre la configuración de Datamapper?

+0

intente configurar una configuración de 'var BUNDLE_WITHOUT' con el valor de' desarrollo: test' y ver qué pasa –

+0

supongo que es ya correr cuando expido 'git push heroku master ':' de reproducción: bundle install --sin desarrollo: prueba --transportista/paquete --binstubs bin/--deployment' – LordTwaroog

+0

¿Se puede usar Postgres localmente? Es realmente una buena idea: http://www.12factor.net/dev-prod-parity –

Respuesta

9

Bueno, demasiadas aplicaciones de Rails en Heroku, tomé la presencia de db compartida por sentado. heroku config no mostró ni DATABASE_URL ni SHARED_DATABASE_URL conjunto.

Emisión heroku addons:add shared-database:5mb ha solucionado el problema.

Extraño, que el db no se agregó automáticamente, a pesar de tener la gema 'pg' en Gemfile.

Presupuesto de http://devcenter.heroku.com/articles/cedar:

Un Heroku comparte la base de datos PostgreSQL (shared-database:5mb) será añade automáticamente a su aplicación en cualquiera de los siguientes casos:

  • la aplicación es una aplicación Rails
  • La gema pg se especifica en el Gemfile
+0

Extraño, he visto esto una vez, pero nunca he podido replicarlo –

+1

Hola chicos, esto no me pasó cuando usé Active Record, pero sucedió cuando usaba DataMapper.También estoy en una cuenta gratuita, así que tuve que usar 'heroku addons: agregar heroku-postgresql' – christoshrousis

3

En su lugar, intente con DataMapper.setup(:default, ENV['DATABASE_URL'] || 'postgres://user:[email protected]/data/mydatabase.db'). Es probable que Heroku esté mirando el protocolo y, por lo tanto, requiera las dependencias de SQLite.

+0

. Pensé esto también, pero cambié mi código para envolver mi código en declaraciones de configuración y todavía hice lo mismo. configurar: desarrollo de hacer DataMapper.setup (: por defecto, "sqlite3: // {#} Dir.pwd /recall.db") final configure: producción hacer DataMapper.setup (: por defecto, ENV [ 'DATABASE_URL' ]) end' Además, supongo que el fragmento dice 'ENV ['DATABASE_URL'] = true' y no evalúa el RHS de la instrucción o. – christoshrousis

Cuestiones relacionadas