Sinatra + Heroku + Datamapper разворачивает проблемы с dm-sqlite-адаптером - PullRequest
5 голосов
/ 18 января 2012

По какой-то причине, heroku пытается установить dm-sqlite-adapter, хотя здесь он должен использовать Postgres.Обратите внимание, что это происходит, когда я открываю любой URL, а не во время самого git push.

Я создал приложение по умолчанию для Facebook.

Gemfile:

source :gemcutter

gem "foreman"

gem "sinatra"
gem "mogli"
gem "json"
gem "httparty"
gem "thin"
gem "data_mapper"
gem "heroku"

group :production do
    gem "pg"
    gem "dm-postgres-adapter"
end

group :development, :test do
    gem "sqlite3"
    gem "dm-sqlite-adapter"
end

Datamappersetup:

# Setting up the database
DataMapper.setup(:default, ENV['DATABASE_URL'] || "sqlite3://#{Dir.pwd}/data/mydatabase.db")

Соответствующий фрагмент журнала при открытии любого URL:

Starting process with command `bundle exec thin -R config.ru start -p 34984`
2012-01-18T15:11:55+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/dm-core-1.2.0/lib/dm-core/adapters.rb:163:in `require': no such file to load -- dm-sqlite-adapter (LoadError)
2012-01-18T15:11:55+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/dm-core-1.2.0/lib/dm-core/adapters.rb:163:in `load_adapter'

Попробовал связанные решения, но пока без помощи.

Кстати: bundle install говорит Using do_postgres и Using dm-postgres-adapter.Я что-то упускаю из-за настройки Datamapper?

Ответы [ 2 ]

9 голосов
/ 18 января 2012

Что ж, слишком много Rails-приложений на Heroku, я считал наличие общего доступа к БД само собой разумеющимся.heroku config не показывал ни DATABASE_URL, ни SHARED_DATABASE_URL установлен.

Выпуск heroku addons:add shared-database:5mb решил проблему.

Странно, что БД не была добавлена ​​автоматически, несмотря на наличие 'pg'gem in Gemfile.

Цитата из http://devcenter.heroku.com/articles/cedar:

Общая база данных Heroku PostgreSQL (shared-database:5mb) будет автоматически добавлена ​​в ваше приложение в любом из следующих случаев:

  • Приложение является приложением Rails
  • Gem pg указан в Gemfile
3 голосов
/ 11 апреля 2012

Попробуйте вместо этого сделать DataMapper.setup(:default, ENV['DATABASE_URL'] || 'postgres://user:password@hostname/data/mydatabase.db').Heroku, вероятно, просматривает протокол и поэтому требует зависимостей SQLite.

...