2012-09-27 31 views
3

我正试图在Heroku上部署一个超级简单的Sinatra应用程序和注册表单。你如何告诉Heroku忽略开发组中的SqlLite gem

,我发现了错误

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`需要':没有这样的文件来加载 - DM-sqlite的适配器(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

您的'DataMapper.setup'行是什么样的? – matt

+0

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

回答

4

您可能需要在Heroku上设置DATABASE_URLenvironment 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 
+0

好吧,那是工作。也知道heroku配置命令将帮助我尝试并在未来自己工作 - 谢谢。 – Will