西纳特拉 + Heroku + dm-sqlite-adapter 的 Datamapper 部署问题

发布于 2024-12-28 01:41:38 字数 1229 浏览 4 评论 0原文

由于某种原因,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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

入怼 2025-01-04 01:41:38

好吧,Heroku 上有太多 Rails 应用程序,我认为共享数据库的存在是理所当然的。 heroku config 未显示 DATABASE_URLSHARED_DATABASE_URL 设置。

发出 heroku addons:add shared-database:5mb 解决了这个问题。

奇怪的是,尽管 Gemfile 中有“pg”gem,但数据库并未自动添加。

引用自 http://devcenter.heroku.com/articles/cedar

Heroku 共享 PostgreSQL 数据库 (shared-database:5mb) 将是
在以下任何情况下都会自动添加到您的应用中:

  • 该应用是一个 Rails 应用
  • pg gem 在 Gemfile 中指定

Well, too many Rails apps on Heroku, I took the shared db presence for granted. heroku config showed neither DATABASE_URL or SHARED_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:

A Heroku shared PostgreSQL database (shared-database:5mb) will be
automatically added to your app in any of the following cases:

  • The app is a Rails application
  • The pg gem is specified in the Gemfile
樱花细雨 2025-01-04 01:41:38

尝试执行 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文