質問

初心者アラート...

Rails Webrick Serverで問題を修正しようとしています(つまり、開始します)、古いStackoverflow Answerを使用しました 古い答え そして、次のコマンドを行いました

sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql/lib/libmysqlclient.16.dylib /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

ただし、バージョン番号を変更するのを忘れていました。たとえば、MySQLは0.3.6(コマンドの0.2.6とは対照的)であり、.16ではなくlibmysqlclient.18でもあります。

今、私がRailsサーバーを起動しようとするとき、それは言う

Could not find gem 'mysql2 (~> 0.2.6)' in any of the gem sources listed in your Gemfile.

更新されたバージョンでこのコマンドを再実行しようとしましたが、何も変更しませんでした...確かに、ルートパスワードを尋ねることすらしません...この問題を逆転させる方法はありませんか?

更新 - これは私がするときに生産された宝石のリストです gem list. 。この質問に答えた最初の人は、(彼のコメントで)mysql .0.2.6をアンインストールすることを示唆しましたが、宝石は決してインストールされていませんでした。上記のname_toolコマンドを作成したとき、それはシステムにmysql 0.2.6を探すように指示しました。

abstract (1.0.0)
actionmailer (3.0.9, 3.0.7)
actionpack (3.0.9, 3.0.7)
activemodel (3.0.9, 3.0.7)
activerecord (3.0.9, 3.0.7)
activeresource (3.0.9, 3.0.7)
activesupport (3.0.9, 3.0.7)
arel (2.0.10)
builder (2.1.2)
bundler (1.0.14)
erubis (2.6.6)
i18n (0.5.0)
mail (2.2.19)
mime-types (1.16)
mysql2 (0.3.6)
polyglot (0.3.1)
rack (1.2.3)
rack-mount (0.6.14)
rack-test (0.5.7)
rails (3.0.9, 3.0.7)
railties (3.0.9, 3.0.7)
rake (0.9.1)
rdoc (3.8)
rubygems-update (1.8.5)
thor (0.14.6)
treetop (1.4.9)
tzinfo (0.3.27)

更新 - エリック・フーの答えに次の指示の後、私が走ったときにこの結果が得られました rails server 私のプロジェクトフォルダーから

2011-07-26 01:49:17 rails s
/Library/Ruby/Gems/1.8/gems/mysql2-0.2.11/lib/mysql2/mysql2.bundle: dlopen(/Library/Ruby/Gems/1.8/gems/mysql2-0.2.11/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib (LoadError)
  Referenced from: /Library/Ruby/Gems/1.8/gems/mysql2-0.2.11/lib/mysql2/mysql2.bundle
  Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.2.11/lib/mysql2/mysql2.bundle
    from /Library/Ruby/Gems/1.8/gems/mysql2-0.2.11/lib/mysql2.rb:9
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.14/lib/bundler/runtime.rb:68:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.14/lib/bundler/runtime.rb:68:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.14/lib/bundler/runtime.rb:66:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.14/lib/bundler/runtime.rb:66:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.14/lib/bundler/runtime.rb:55:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.14/lib/bundler/runtime.rb:55:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.14/lib/bundler.rb:120:in `require'
    from /Users/michaelmitchell/Sites/simple_cms/config/application.rb:7
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.9/lib/rails/commands.rb:28:in `require'
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.9/lib/rails/commands.rb:28
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.9/lib/rails/commands.rb:27:in `tap'
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.9/lib/rails/commands.rb:27
    from script/rails:6:in `require'
    from script/rails:6

更新 - エリックが彼のコメントで提案したようにバンドルリストを作成しました

Gems included by the bundle:
  * abstract (1.0.0)
  * actionmailer (3.0.9)
  * actionpack (3.0.9)
  * activemodel (3.0.9)
  * activerecord (3.0.9)
  * activeresource (3.0.9)
  * activesupport (3.0.9)
  * arel (2.0.10)
  * builder (2.1.2)
  * bundler (1.0.14)
  * erubis (2.6.6)
  * i18n (0.5.0)
  * mail (2.2.19)
  * mime-types (1.16)
  * mysql2 (0.2.11)
  * polyglot (0.3.1)
  * rack (1.2.3)
  * rack-mount (0.6.14)
  * rack-test (0.5.7)
  * rails (3.0.9)
  * railties (3.0.9)
  * rake (0.9.2)
  * rdoc (3.8)
  * thor (0.14.6)
  * treetop (1.4.9)
  * tzinfo (0.3.29)
役に立ちましたか?

解決

私はあなたが使用して混乱していると信じています bundler とrubygems。あなたがいつ gem install <gemname>, 、Rubygemsコマンドを使用して、最新バージョンのインストール <gemname>.

Railsプロジェクトには、宝石が付いています bundler, 、宝石も管理しています。 Bundlerは、Gemfileを作成する各RailsプロジェクトのGEMSの個別のコピーを構築します。 Gemfileの作成を覚えていない場合、それはそれがファイルの1つだからです rails new <projectname> あなたのために生成されます。

おそらく、あなたはaを実行していません bundle install. 。あなたがする前に、現在のRailsプロジェクトのフォルダに移動して開きます Gemfile, 、ちょうどあなたが何が起こっているのかを知っています。私はこのような線がそこにあると賭けて喜んでいます: gem 'mysql2', '~> 0.2.6'

適切なバージョンをインストールするには、コマンドラインのプロジェクトフォルダーに移動します。タイプ bundle install. 。ちょっと与えてください、そしてそれはそれであるべきです - ランニングをしてみてください rails s また。

これが混乱して不必要に思える場合は、誰かが宝石を更新すると、プログラムを破る方法でそれを変えることができることを覚えておいてください。 Bundlerは、プログラムが必要な宝石の特定のバージョンで実行されていることを確認することでサービスを提供します(この場合、MySQL2-0.3.6の代わりにMySQL2-0.2.6)。

他のヒント

その宝石をきれいにして、それを再インストールします。

または、MySQLインストール用のRVM + Mac HomeBrewは驚くべきものです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top