我使用ruby 1.9.2-p320和Heroku的Taps一起使用'db'命令得到以下错误,例如:
heroku db:pull --app my-app
会产生如下错误:
Taps Load Error: no such file to load -- sqlite3
-OR -
Taps Load Error: no such file to load -- pg
(是的,顺便说一句,我拥有所有正确的宝石,包括postgres - 本地运行良好 - 和sqlite3,以及卸载,重新安装和更新水龙头和heroku宝石并包括它们以及不在我的Gemfile中包含它们。我正在运行Rails 3.2.6)
虽然有一个已知错误导致“时区位移”错误:heroku db:push not working, using taps gem,但我还没有看到任何直接解决此问题的SO帖子。
答案 0 :(得分:15)
在postgres实例之间迁移数据时,不再使用Taps作为推荐使用的工具。请改为尝试heroku-pg-transfer。
仅当您使用production databases或新Heroku postgres dev or basic plans之一时,此功能才有效。如果您仍在旧的共享数据库计划中,我建议您切换到新的开发计划。
首先,在Heroku上找到数据库的URL:
$ heroku config:get DATABASE_URL
postgres://yada:yada@ec2-107-21-122-141.compute-1.amazonaws.com:5432/123
然后从heroku数据库传输到本地数据库:
$ heroku plugins:install https://github.com/ddollar/heroku-pg-transfer
$ heroku pg:transfer -t postgres://localhost/dbname -f postgres://yada:yada@ec2.../123
由于heroku-pg-transfer工具使用postgres的原生pg_dump工具,因此它是一种更具可预测性和弹性的工具。
我在这里写了更多关于它的信息:Using heroku pg:transfer to migrate Postres databases
答案 1 :(得分:2)
我找到的解决方案,使用https://github.com/ricardochimal/taps/issues/92中的提示详细说明:https://github.com/ricardochimal/taps/issues/92#issuecomment-6486535
缺点是,据我所知,红宝石1.9.2-p320似乎是个问题。降级为红宝石1.9.2-p290为我修好了。这可能与上面链接中提到的ruby 1.9.3问题有关,不确定。
如果你仍然使用Taps挂在那里,请参阅this comment at GH,因为海报doshea似乎比我或jfeust更彻底地调查了它。
我还要在此重申,如果你不需要Taps,那么heroku-pgtransfer就是你的朋友。使用较新的工具,请参阅Ryan's answer to my question here和his excellent blog post。
答案 2 :(得分:2)
我的解决方案是将taps gem和sqlite3 gem(即使我不在应用程序中的任何地方使用sqlite)添加到gemfile中(正在开发中)。
答案 3 :(得分:1)
根据@likethesky,您可以降级。或者,只是
~/.rvm/bin/ruby-1.9.2-p320 /usr/bin/heroku db:push
当然,必须安装p320并安装tap和sqllite3宝石。很容易就位。