2010-12-29 9 views
3

Nur auf Snow Leopard aktualisiert. Nach einiger Zeit habe ich es geschafft, MySQL zum Laufen zu bringen.MySQL Juwel Problem nach dem Upgrade auf Snow Leopard

Jetzt versuche ich meine Rails-Umgebungen zu arbeiten. Für ein Projekt, das ich bin mit Rails 3.0.3 und Ruby 1.8.7

ich das mysql2 Juwel mit dem folgenden Befehl installiert haben: ich folgende

sudo gem install mysql2 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config 

Wenn ich starte Schienen Server erhalten Fehler:

/Users/lee/.rvm/gems/ruby-1.8.7-head/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle: dlopen(/Users/lee/.rvm/gems/ruby-1.8.7-head/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle, 9): no suitable image found. Did find: (LoadError) 
/Users/lee/.rvm/gems/ruby-1.8.7-head/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle: mach-o, but wrong architecture - /Users/lee/.rvm/gems/ruby-1.8.7-head/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle 
from /Users/lee/.rvm/gems/ruby-1.8.7-head/gems/mysql2-0.2.6/lib/mysql2.rb:7 

Hat jemand ein ähnliches Problem erlebt und weiß, wie man das behebt? Ich bin eher ein Designer als ein Entwickler, also wäre das nicht mein starker Bereich. Alle Hinweise schätzen.

Antwort

0

Ich habe gestern nach dem Upgrade auf Snow Leopard so etwas mit einigen anderen Edelsteinen durchgemacht. Ich bekam sehr ähnliche Fehler, weil ich versuchte, alte 32-Bit-Bibliotheken zu verwenden, als SL nach 64-Bit-Versionen suchte. Stellen Sie zunächst sicher, dass Sie die 64-Bit-Version von MySQL installiert haben, da Sie diese jetzt verwenden werden.

Dann wird die Sache, die mich bekam: gem uninstall mysql2

Stellt sich heraus, ich hatte das Juwel zweimal installiert und Rails versuchen die falsche (32bit) Version zu laden, obwohl ich die an anderer Stelle installiert richtige hatte.

Auch wenn Sie die mysql gem install können Sie

export ARCHFLAGS="-arch i386 -arch x86_64" 

bevor Sie sudo gem install mysql2

0

Es gibt ein paar Dinge versuchen wollen, zu tun:

Wenn Sie didn‘ t kompilieren Sie die Ruby unter RVM Kontrolle, Sie wollen das tun. Vor Snow Leopard wurden sie als i386 32bit-Apps kompiliert. Danach müssen sie x86 64bit sein. Also, mit RVM tun Sie rvm uninstall auf Ihrem Ruby 1.8.7, dann wieder rvm install. Sie können überprüfen, ob Sie, dass rvm list, indem Sie tun müssen:

rvm list 

rvm rubies 

    ruby-1.8.7-p330 [ x86_64 ] 
=> ruby-1.9.2-p136 [ x86_64 ] 

Rubin, entweder 1.8.7 oder 1.9+ wird x86_64 sein, wenn sie richtig für Snow Leopard konfiguriert.

Danach können Sie gem pristine ausführen, um alle Ihre Edelsteine ​​neu aufzubauen. Als Teil dieses Prozesses wird es die nativen Treiber neu erstellen, die als x86_64 auch neu kompiliert werden sollten.

Auch ist es eine gute Idee, Ihr RVM relativ aktuell zu halten. Die neueste Version von heute Abend ist v1.1.13. Wenn deine Version älter ist, möchtest du vielleicht rvm get head machen, um sie aufzuholen.

Nützliche Befehle zur Diagnose von Dingen sind: gem env und rvm info.

0

Ich hatte vor kurzem ein ähnliches Problem, wo Rails warf die "aber falsche Architektur kein passendes Bild gefunden" Fehler beim Starten der Rails-Konsole oder der Rails-Server.

Das Ausführen von file für die zugehörigen DLL-Dateien und das Schmuckstück ergab im Allgemeinen entweder eine gültige x86_64-Version oder eine universelle Version, die es enthielt. Irgendwann habe ich es auf die aktuelle Version von Ruby zurückverfolgt, die ich gerade lief. Die ausführbare Datei/usr/bin/ruby ​​war nur i386-kompatibel. Das war wirklich ein Schock, als ich annahm, dass der neue xcode und osx 10.7 mir einen 64-Bit-Ruby gebracht hätten.

Mit RVM installierte ich eine weitere Instanz von Ruby (wieder 1.8.7). Dazu musste ich eine neue Instanz von readline installieren (für die ich Homebrew verwendet habe: brew install readline) und den rvm mit rvm install 1.8.7 --with-readline-dir=/usr/local/Cellar/readline/6.2.1/ installiert haben.

Nachdem Sie das getan, und Schalt meine neue Rubin-Instanz zu verwenden (rvm use 1.8.7), alle meine Edelsteine ​​gegangen waren (die RVM Installation geändert irgendwie mein Standard gem_path.) gem install rake, gefolgt von gem install bundler und dann bundle install hat mich zum Laufen .

Lange Rede kurzer Sinn, stellen Sie sicher, dass Ihr Rubin ausführbaren entspricht die Befehlssatz-Version, die Ihre ruby ​​/ Schienen-Pakete in gebaut werden

Dieses Blog-Eintrag ganz so gut war hilfreich. http://www.markhneedham.com/blog/2010/07/08/installing-ruby-1-9-2-with-rvm-on-snow-leopard/