2011-03-07 54 views
1

Heroku入門,但它似乎並沒有加載dm-postgres-adapter所需的依賴項(do_postgres(〜> 0.10.2))。Heroku not Loading do_postgres依賴關係

的Gemfile中是這樣:

source :gemcutter 

gem 'dm-postgres-adapter', '1.0.2' 
gem 'dm-sqlite-adapter', '1.0.2' 
gem 'sinatra', '1.1.0' 
gem 'mustache', '0.9' 
gem 'datamapper', '1.0.2' 
gem 'json', '1.5.1' 

隨着的Gemfile.lock的看上去相關的部分如下:

dm-postgres-adapter (1.0.2) 
    dm-do-adapter (~> 1.0.2) 
    do_postgres (~> 0.10.2) 

當被推到Heroku的,它似乎並沒有安裝do_postgres:

-----> Heroku receiving push 
-----> Sinatra app detected 
-----> Gemfile detected, running Bundler version 1.0.7 
     Unresolved dependencies detected; Installing... 
     Using --without development:test 
     Fetching source index for http://rubygems.org/ 
     Installing addressable (2.2.4) 
     Installing data_objects (0.10.3) 
     Installing extlib (0.9.15) 
     Installing dm-core (1.0.2) 
     Installing dm-aggregates (1.0.2) 
     Installing dm-migrations (1.0.2) 
     Installing dm-constraints (1.0.2) 
     Installing fastercsv (1.5.4) 
     Installing json_pure (1.5.1) 
     Installing dm-serializer (1.0.2) 
     Installing dm-timestamps (1.0.2) 
     Installing dm-transactions (1.0.2) 
     Installing stringex (1.1.0) 
     Installing uuidtools (2.1.2) 
     Installing dm-types (1.0.2) 
     Installing dm-validations (1.0.2) 
     Installing datamapper (1.0.2) 
     Installing dm-do-adapter (1.0.2) 
     Installing dm-postgres-adapter (1.0.2) 
     Installing dm-sqlite-adapter (1.0.2) 
     Installing mustache (0.9.0) 
     Installing rack (1.2.1) 
     Installing tilt (1.2.2) 
     Installing sinatra (1.1.0) 
     Using bundler (1.0.7) 
     Your bundle is complete! It was installed into ./.bundle/gems/ 
     Compiled slug size is 1.7MB 
-----> Launching... done 

而且的確,Heroku沒有找到寶石並且不會啓動:

2011-03-07T10:48:31-08:00 heroku[slugc]: Slug compilation finished 
2011-03-07T10:48:35-08:00 app[web.1]: /usr/ruby1.8.7/lib/ruby/site_ruby/1.8/rubygems.rb:779:in `report_activate_error': Could not find RubyGem do_postgres (~> 0.10.2) (Gem::LoadError) 
2011-03-07T10:48:35-08:00 app[web.1]: from /usr/ruby1.8.7/lib/ruby/site_ruby/1.8/rubygems.rb:214:in `activate' 
2011-03-07T10:48:35-08:00 app[web.1]: from /usr/ruby1.8.7/lib/ruby/site_ruby/1.8/rubygems.rb:249:in `activate' 
2011-03-07T10:48:35-08:00 app[web.1]: from /usr/ruby1.8.7/lib/ruby/site_ruby/1.8/rubygems.rb:248:in `activate' 
2011-03-07T10:48:35-08:00 app[web.1]: from /usr/ruby1.8.7/lib/ruby/site_ruby/1.8/rubygems.rb:248:in `each' 
2011-03-07T10:48:35-08:00 app[web.1]: from /usr/ruby1.8.7/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:35:in `require' 
2011-03-07T10:48:35-08:00 app[web.1]: from /app/04eca654-0ab6-43de-aae1-1dbed7bef1a1/home/.bundle/gems/ruby/1.8/gems/dm-core-1.0.2/lib/dm-core/adapters.rb:163:in `load_adapter' 
2011-03-07T10:48:35-08:00 app[web.1]: from /app/04eca654-0ab6-43de-aae1-1dbed7bef1a1/home/.bundle/gems/ruby/1.8/gems/dm-core-1.0.2/lib/dm-core/adapters.rb:133:in `adapter_class' 
2011-03-07T10:48:35-08:00 app[web.1]: from /app/04eca654-0ab6-43de-aae1-1dbed7bef1a1/home/.bundle/gems/ruby/1.8/gems/dm-core-1.0.2/lib/dm-core/adapters.rb:13:in `new' 
2011-03-07T10:48:35-08:00 app[web.1]: from /app/04eca654-0ab6-43de-aae1-1dbed7bef1a1/home/.bundle/gems/ruby/1.8/gems/dm-core-1.0.2/lib/dm-core.rb:266:in `setup' 
2011-03-07T10:48:35-08:00 app[web.1]: from ./lib/database.rb:21:in `initialize' 

database.rb線21是這樣的:

DataMapper.setup(:default, ENV['DATABASE_URL'] || 'sqlite3://' + Dir.pwd + '/database.db') 

哪個代碼直接從Heroku的網站:http://devcenter.heroku.com/articles/database#common_issues_migrating_to_postgresql, 「使用DATABASE_URL環境變量」 下。該應用程序在本地運行Sqlite,但Heroku使用postgresql。我希望DataMapper能夠實現轉換!

我試圖明確包括

gem 'do_postgres', '~>0.10.2' 
在Gemfile中

,但無濟於事。無論如何,這不應該是必要的。提交工單到Heroku的支持一樣好,但還沒有聽說過他們的回覆......

回答

1

的Heroku回來給我,非常及時:

你好,

我注意到你使用Windows的 您的開發環境。目前有 限制捆綁器 和跨平臺使用,即如果您在本地在Windows上開發 但將 部署到像heroku這樣的unix服務器。目前的解決方法是刪除 Gemfile.lock。

最佳,

[移除]

事實上,除去後的Heroku Gemfile.lock的安裝do_postgres寶石正常。我最初提交Gemfile.lock是因爲Heroku接口推薦它(「很快會需要Gemfile.lock」),所以在某種程度上警告某些地方會破壞與Windows的兼容性會很好。當然,跨平臺的事情不是我的決定。 :)