0

初心者アラート...

Rails Webrickサーバーの問題を修正しようとして(つまり、開始する)、古いStackoverflowの回答の古い回答を使用して、次のコマンドを実行しました

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 をアンインストールすることを提案しましたが、その gem はインストールされませんでした。上記の name_tool コマンドを実行すると、mysql2-0.3.6 を探すように指示する必要があったのに、システムに 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)

更新 -- Eric Hu の回答の指示に従った後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)
4

2 に答える 2

3

bundlerと RubyGemsの使用について混乱していると思います。の場合gem install <gemname>、RubyGems コマンドを使用して の最新バージョンをインストールしています<gemname>

Rails プロジェクトには、gembundlerも管理する という gem が付属しています。Bundler は、Gemfile を作成する Rails プロジェクトごとに個別の gem のコピーをビルドします。Gemfile を作成した覚えがない場合、それrails new <projectname>は生成されるファイルの 1 つだからです。

ほとんどの場合、bundle install. その前に、現在の Rails プロジェクトのフォルダーに移動して を開きますGemfile。これにより、何が起こっているかがわかります。次のような行があると確信しています。gem 'mysql2', '~> 0.2.6'

適切なバージョンをインストールするには、コマンド ラインでプロジェクト フォルダーに移動します。タイプしbundle installます。少し待ってください。これで終わりです。もう一度実行してみてくださいrails s

これが紛らわしく不必要だと思われる場合は、誰かが gem を更新すると、プログラムを破壊するような方法で変更する可能性があることを覚えておいてください。Bundler は、プログラムが必要な gem の特定のバージョン (この場合、mysql2-0.3.6 ではなく mysql2-0.2.6) で実行されていることを確認することで、サービスを提供します。

于 2011-07-26T03:57:46.520 に答える
0

その宝石を一掃し、再インストールします。

あるいは、MySQL インストール用の RVM + Mac Homebrew は驚異的に機能します。

于 2011-07-25T04:40:24.617 に答える