gpt4 book ai didi

ruby - Heroku 和 Datamapper 问题

转载 作者:数据小太阳 更新时间:2023-10-29 07:42:12 27 4
gpt4 key购买 nike

我可以在 Heroku 上启动一个基本的应用程序,显示带有 get '/' 的消息......工作得很好。但是,每当我尝试使用 datamapper 添加 sqlite 时,事情就会崩溃。

为了查看我的应用程序结构,请查看 github 上的项目.我将代码保留得很简单。

在 heroku 的日志中我得到:

2011-06-26T21:28:36+00:00 app[web.1]: /app/.bundle/gems/ruby/1.9.1/gems/dm-core-1.1.0/lib/dm-core/adapters.rb:163:in `require': no such file to load -- dm-postgres-adapter (LoadError)

关于这个的事情是我没有使用 postgres,所以我很困惑为什么会这样说。

最佳答案

“关于这个的事情是我没有使用 postgres,所以我很困惑为什么会这样说。”

您正在使用 Heroku,所以您正在使用 Postgresql。

在您的 app.rb 中,您有这一行:

DataMapper::setup(:default, ENV['DATABASE_URL'] || "sqlite3://#{Dir.pwd}/notes.db")

我猜你是从 the Heroku database docs 得到的.这一行基本上是说“检查环境变量'DATABASE_URL',如果设置了它作为数据库 url,否则使用 Sqlite url”。在本地运行时不会设置此环境变量,因此您将使用 Sqlite url,但在 Heroku 上这将被设置为类似的内容(请参阅上面链接的页面):

postgres://username:password@hostname/database

Datamapper 将看到这是一个 Postgresql url,并尝试要求未安装的 postgres 适配器,因此会导致您看到的错误。

最好的解决方案是在本地安装 Postgresql,以便您的开发和生产环境尽可能相似。如果您不能或不想这样做,您可以在本地指定 Sqlite 适配器,并在生产环境中指定 Postgres 适配器。它在您的 Gemfile 中看起来像这样:

group :development do
gem 'dm-sqlite-adapter'
end

group :production do
gem 'dm-postgres-adapter'
end

如果您这样做,您需要告诉 Heroku 在安装 gems 时要忽略哪些组,请参阅 Heroku Gem Bunder docs .

关于ruby - Heroku 和 Datamapper 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6486970/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com