西纳特拉 + Heroku + dm-sqlite-adapter 的 Datamapper 部署问题
由于某种原因,heroku 尝试要求 dm-sqlite-adapter,尽管它应该在这里使用 Postgres。请注意,这种情况发生在我打开任何 URL 时,而不是在 git 推送期间。
我构建了一个默认的 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
Datamapper 设置:
# 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'
尝试过相关解决方案,但到目前为止没有任何帮助。
顺便说一句:捆绑安装
说使用do_postgres
和使用dm-postgres-adapter
。我是否缺少有关 Datamapper 设置的信息?
For some reason, heroku tries to require dm-sqlite-adapter, even though it should use Postgres here. Note, that this happens when I open any URL - not during the git push itself.
I built a default facebook app.
The 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
Datamapper setup:
# Setting up the database
DataMapper.setup(:default, ENV['DATABASE_URL'] || "sqlite3://#{Dir.pwd}/data/mydatabase.db")
Relevant log fragment, when any URL is opened:
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'
Tried related solutions, but with no help so far.
BTW: bundle install
says Using do_postgres
and Using dm-postgres-adapter
. Am I missing something about Datamapper setup?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
好吧,Heroku 上有太多 Rails 应用程序,我认为共享数据库的存在是理所当然的。
heroku config
未显示DATABASE_URL
或SHARED_DATABASE_URL
设置。发出
heroku addons:add shared-database:5mb
解决了这个问题。奇怪的是,尽管 Gemfile 中有“pg”gem,但数据库并未自动添加。
引用自 http://devcenter.heroku.com/articles/cedar:
Well, too many Rails apps on Heroku, I took the shared db presence for granted.
heroku config
showed neitherDATABASE_URL
orSHARED_DATABASE_URL
set.Issuing
heroku addons:add shared-database:5mb
solved the problem.Strange, that the db wasn't automatically added, despite having 'pg' gem in Gemfile.
Quote from http://devcenter.heroku.com/articles/cedar:
尝试执行
DataMapper.setup(:default, ENV['DATABASE_URL'] || 'postgres://user:password@hostname/data/mydatabase.db')
。 Heroku 可能正在查看协议,因此需要 SQLite 的依赖项。Try doing
DataMapper.setup(:default, ENV['DATABASE_URL'] || 'postgres://user:password@hostname/data/mydatabase.db')
instead. Heroku is probably looking at the protocol, and therefore requiring SQLite’s dependencies.