"Дело в том, что я не использую postgres, поэтому я не понимаю, почему он так говорит."
Вы используете Heroku, поэтому вы являетесь используя Postgresql.
В вашем app.rb
есть строка:
DataMapper::setup(:default, ENV['DATABASE_URL'] || "sqlite3://#{Dir.pwd}/notes.db")
, которую, я полагаю, вы получили из документации базы данных Heroku .Эта строка в основном говорит: «проверьте переменную среды« DATABASE_URL »и, если она установлена, используйте ее в качестве URL базы данных, в противном случае используйте Sqlite url».При локальном запуске эта переменная среды не будет установлена, поэтому вы будете использовать URL-адрес Sqlite, но в Heroku это будет примерно так (см. Ссылку, указанную выше):
postgres://username:password@hostname/database
Datamapper увидитчто это URL-адрес Postgresql, и попробуйте запросить адаптер postgres, который не установлен, что приведет к появившейся ошибке.
Лучшее решение - установить Postgresql локально, чтобы ваша разработкаи производственные среды настолько похожи, насколько это возможно.Если вы не можете этого сделать или не хотите, вы можете указать адаптер Sqlite локально и адаптер Postgres в работе.В вашем Gemfile это будет выглядеть примерно так:
group :development do
gem 'dm-sqlite-adapter'
end
group :production do
gem 'dm-postgres-adapter'
end
Если вы сделаете это, вам нужно будет указать Heroku, какие группы следует исключить при установке драгоценных камней, см. Документы Heroku Gem Bunder..