你怎么告诉Heroku忽略开发组中的Sqlite gem

时间:2012-09-27 21:00:04

标签: postgresql heroku gem

我正在尝试使用Heroku上的注册表单部署一个超级简单的Sinatra应用程序。

我收到了错误

Process exited with status 1
2012-09-27T05:59:01+00:00 heroku[web.1]: State changed from starting to crashed

进一步提高该事件中的日志,     /app/vendor/bundle/ruby/1.9.1/gems/dm-core-1.2.0/lib/dm-core/adapters.rb:163:在`require'中:没有要加载的文件--dm-sqlite -adapter(LoadError)

我的宝石文件如下:

group :development do
   gem 'dm-sqlite-adapter'
end
group :production do
  gem 'pg'
  gem 'dm-postgres-adapter'
end

通过堆栈溢出来看,似乎heroku没有选择生产组或者没有设置postgres db? (在黑暗中狂野刺,请不要嘲笑我)

但正在运行

tonto:bpbl willbarker$ heroku addons 
=== serene-sea-9304 Configured Add-ons
heroku-postgresql:dev HEROKU_POSTGRESQL_COBALT

显示已配置postgres数据库。那么,它是否因某种原因在开发模式下运行?我如何让它忽略那条线?

1 个答案:

答案 0 :(得分:4)

您可能需要在Heroku上设置DATABASE_URL environment variable

您收到的错误是no such file to load -- dm-sqlite-adapter,因此文件不可用且您的Gemfile中的:development组尚未安装,就像您一样我想要。

当您的应用设置Datamapper时,它会使用以下行:

DataMapper::setup(:default, ENV['DATABASE_URL'] || "sqlite3://#{Dir.pwd}/campaign.db")

所以它正在寻找一个名为DATABASE_URL的环境变量,但没有找到一个,所以回落在Sqlite网址上。这会导致Datamapper尝试加载dm-sqlite-adapter并导致您收到的错误。

解决方案是确保DATABASE_URL已设置。尝试运行heroku config - 您可能看不到DATABASE_URL的条目。您应该能够promote your configured database使用命令:

$ heroku pg:promote HEROKU_POSTGRESQL_COBALT