2012-09-27 30 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