Heroku не загружает зависимость do_postgres - PullRequest
1 голос
/ 07 марта 2011

Начало работы с Heroku, но, похоже, она не загружает необходимую зависимость (do_postgres (~> 0.10.2)) для dm-postgres-adapter.

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 Ответ

1 голос
/ 08 марта 2011

Героку вернулась ко мне очень быстро:

Здравствуйте,

Я заметил, что вы используете Windows для ваша среда разработки. Есть в настоящее время ограничение на с упаковщиком и кроссплатформенное использование, т.е. если вы разрабатывать локально на Windows, но развернуть на сервер Unix, как герою. Текущее решение состоит в том, чтобы удалить ваш Gemfile.lock.

Best

[удалено]

Действительно, после удаления Gemfile.lock Heroku правильно установил камень do_postgres. Первоначально я зафиксировал Gemfile.lock, потому что его рекомендовал интерфейс Heroku («скоро понадобится Gemfile.lock»), поэтому, возможно, было бы небольшое предупреждение, что это нарушит совместимость с Windows, было бы неплохо. Конечно, кроссплатформенность не была моим решением. :)

...