2012-06-21 7 views
6

Ich habe die folgenden Fehler bekommen Rubin mit 1.9.2-p320 mit Heroku des Taps-mit 'db' Befehle wie:Heroku db: ziehen Taps laden Fehler: keine solche Datei zu laden - pg

heroku db:pull --app my-app 

Welche Fehler wie produziert:

Taps Load Error: no such file to load -- sqlite3 

-oder

Taps Load Error: no such file to load -- pg 

(Und ja, btw, ich alle richtigen Edelsteine ​​haben, einschließlich der beiden postgres - run Ning gut lokal - und sqlite3, sowie die Armaturen & heroku Edelsteine ​​deinstalliert, neu installiert und aktualisiert und einschließlich sowie nicht in meiner Gemfile enthalten. Ich verwende Rails 3.2.6)

Obwohl es einen bekannten Fehler gibt, der zu einem "Zeitzonenverschiebung" -Fehler führt: heroku db:push not working, using taps gem, habe ich keine SO-Posts gesehen, die dieses Problem direkt beheben.

Antwort

2

Die Lösung fand ich, Hinweise von https://github.com/ricardochimal/taps/issues/92 mit hier ist detailliert: https://github.com/ricardochimal/taps/issues/92#issuecomment-6486535

Die kurze davon ist, dass Ruby 1.9.2-p320 scheint das Problem, soweit ich das sagen kann, haben. Downgrade auf Ruby 1.9.2-p290 reparierte es für mich. Dies könnte mit den Problemen von ruby ​​1.9.3 zu tun haben, die oben erwähnt wurden, nicht sicher.

Wenn Sie immer noch dort mit Taps hängen, sehen Sie bitte this comment at GH, wie das Poster Doshea scheint es noch gründlicher als ich oder jfeust haben.

Ich wiederhole auch hier, dass, wenn Sie nicht Taps benötigen, dann heroku-pgtransfer ist Ihr Freund. Siehe Ryan's answer to my question here und his excellent blog post für die Verwendung des neueren Tools.

+0

FYI, die Wasserhähne Edelstein funktioniert nicht für mich mit Rubin 1.9.2-p290. Ich bekomme den Fehler 'Taps Load Error: keine solche Datei zu laden - taps/operation'. – Clay

+1

Taps begannen für mich zu arbeiten, indem ich die gleichen Ruby-Versionen sowohl auf Heroku als auch lokal verwendete. [Siehe meinen GH-Kommentar] (https://github.com/ricardochimal/taps/issues/92#issuecomment-6486535): Ich würde vorschlagen, dass Sie versuchen: $ 'heroku run 'ruby -v'' und sehen, welche Version Heroku ist Laufen und aktualisieren Sie dann Ihr lokales Matching. Keine Garantien, aber das scheint das zu sein, was es für mich getan hat (wieder mal raten, vielleicht schuld ist [Rubys Argumentation Marshalling]) (http://stackoverflow.com/questions/8151571/error-when-pushing-data-to-) Heroku-Zeitzone-Verschiebung-außerhalb des Bereichs)?). Siehe auch den Kommentar von jfeust bei GH auf Heroku toolbelt. – likethesky

+0

Do ~/.rvm/bin/ruby-1.9.2-p320/usr/bin/heroku db: push – Ted

15

Taps ist nicht mehr das empfohlene Werkzeug für die Migration von Daten zwischen Postgres-Instanzen. Bitte geben Sie stattdessen heroku-pg-transfer einen Versuch.

Dies funktioniert nur, wenn Sie eines der production databases oder das neue Heroku postgres dev or basic plans verwenden. Wenn Sie sich noch auf dem älteren Plan für eine gemeinsame Datenbank befinden, würde ich vorschlagen, zu dem neuen Entwicklungsplan zu wechseln.

Zuerst die URL zu Ihrem db auf Heroku finden:

$ heroku config:get DATABASE_URL 
postgres://yada:[email protected]:5432/123 

Dann von der Heroku übertragen db auf Ihrem lokalen db:

$ heroku plugins:install https://github.com/ddollar/heroku-pg-transfer 
$ heroku pg:transfer -t postgres://localhost/dbname -f postgres://yada:[email protected]/123 

Da die Heroku-pg-Transfer-Tool Postgres des nutzt native pg_dump facility ist ein viel besser vorhersehbares und belastbareres Werkzeug.

Ich habe mehr darüber hier geschrieben: Using heroku pg:transfer to migrate Postres databases

+0

Dank [@Ryan Daigle] (http://stackoverflow.com/users/1339184/ryan-daigle) - - Ich stimme zu, dass Heroku-Pg-Transfer besser für diejenigen ist, die den Heroku-Postgres-Entwicklungsplan verwenden (und empfehlen, dass Benutzer das verwenden!), Jedoch fragt meine Frage nach Taps, also habe ich meine als akzeptierte Antwort markiert . Ich habe diese Fragen und Antworten häufig gepostet, weil ich mich bemüht hatte, herauszufinden, was falsch war. Wenn also andere noch Taps verwenden, hoffe ich, dass sie dies (und Ihren Rat) nützlich finden. Vielen Dank! – likethesky

+0

Vielen Dank für das Posten. Nach wochenlangen Schmerzen war die Arbeit mit Misthaufen miserabel. Schließlich nutzte diese Vorgehensweise und BAM arbeitete erstmals! THANKYOU THANKYOU – Evolve

+0

DANKE! Habe viele Stunden damit verloren, Taps zur Arbeit mit Heroku zu bekommen, und dies ist die erste Erwähnung, die ich von pg: transfer gesehen habe. Habe das erste Mal gearbeitet! – matadur

2

Meine Lösung war, die Wasserhähne Juwel und die sqlite3 gem hinzuzufügen (auch, dass ich in der App nicht überall sqlite) in die gemfile (in Entwicklung) .

+0

Dies funktioniert auch, wenn Sie einfach 'Gem Install sqlite3' ausführen und es aus Ihrer gemfile lassen. – brent

1

Gemäß @likethesky können Sie Downgrade.Alternativ nur

~/.rvm/bin/ruby-1.9.2-p320 /usr/bin/heroku db:push 

Natürlich, das erfordert mit Hahn und sqllite3 Edelsteine ​​auch installiert installiert haben P320. Einfach genug, um es zu platzieren.

Verwandte Themen