我正在尝试使用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数据库。那么,它是否因某种原因在开发模式下运行?我如何让它忽略那条线?
答案 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