3

我正在尝试在 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:in `require': no such要加载的文件 -- dm-sqlite-adapter (LoadError)

我的 gem 文件如下所示:

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

查看堆栈溢出,似乎 heroku 没有选择生产组或没有设置 postgres 数据库?(暗中野刺,请不要笑我)

但是运行这个

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

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

4

1 回答 1

4

您可能需要在 Heroku 上设置DATABASE_URL 环境变量。

您收到的错误是no such file to load -- dm-sqlite-adapter,因此该文件不可用,并且:development您的 Gemfile 中的组尚未安装,正如您所希望的那样。

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

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

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

解决方案是确保DATABASE_URL已设置。尝试运行heroku config- 您可能不会看到DATABASE_URL. 您应该能够使用以下命令提升您配置的数据库

$ heroku pg:promote HEROKU_POSTGRESQL_COBALT
于 2012-09-27T22:24:27.507 回答