webdevqa.jp.net

Rails、MySQL、Snow Leopard

WWDCで入手したディスクを使用してSnow Leopardにアップグレードしました。

いくつかの私のRailsアプリがSQLについて文句を言うようになりました

    (in /Users/coneybeare/Projects/Ambiance/ambiance-server)
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
Importing all sounds in /Users/coneybeare/Projects/Ambiance/ambiance-sounds/Import 32/Compressed/

 -- AdirondackPeepers.caf
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
rake aborted!
dlopen(/opt/local/lib/Ruby/gems/1.8/gems/mysql-2.7/lib/mysql.bundle, 9): Library not loaded: /usr/local/mysql/lib/libmysqlclient.16.dylib
  Referenced from: /opt/local/lib/Ruby/gems/1.8/gems/mysql-2.7/lib/mysql.bundle
  Reason: image not found - /opt/local/lib/Ruby/gems/1.8/gems/mysql-2.7/lib/mysql.bundle

(See full trace by running task with --trace)

以前にこれを一度修正したと誓ったかもしれません。問題はそれです

Sudo gem install mysql

動作せず、エラーが発生します:

 Building native extensions.  This could take a while...
ERROR:  Error installing mysql:
    ERROR: Failed to build gem native extension.

/opt/local/bin/Ruby extconf.rb install mysql
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... no
checking for mysql_query() in -lmysqlclient... no


Gem files will remain installed in /opt/local/lib/Ruby/gems/1.8/gems/mysql-2.7 for inspection.
Results logged to /opt/local/lib/Ruby/gems/1.8/gems/mysql-2.7/gem_make.out

誰もがmysqlをSnow LeopardでRailsで動作するようになったことがありますか?

68
coneybeare

私はちょうど同じ痛みを経験しました...ここに私のために働いたものがあります:

  1. Mysql.comから64ビットMySQL 5.1.37をダウンロード/インストールします
  2. 次のコマンドを実行します。
 
 Sudo gem update --system 
 
 Sudo env ARCHFLAGS = "-Arch x86_64" gem install mysql---with-mysql-config =/usr /local/mysql/bin/mysql_config

また、私の10.5日から浮かんでいたすべてのmysql gemをアンインストールしました。上記がうまくいかない場合は、それを行うことができます:)

108
Ian Selby

Mysqlを64ビットとして再構築するか、64ビットバージョンをインストールすることが重要ですが、mysql gemのネイティブ部分も必ず64ビットとしてビルドする必要があります(元のIntel Core Duo Macのいずれかを使用している場合は適用されません) )。

魔法のコマンドは次のとおりです。

env ARCHFLAGS="-Arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

Snow Leopardでネイティブコンポーネントを使用してgemをインストールする場合は、上記のようにARCHFLAGSを設定する必要があります。

10
Shebanator

Bundlerを使用している場合、「bundle config」を使用してmysqlの適切なビルド引数を次のように設定できます。

bundle config build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config
7
Steven Soroka

私はこれと長い間戦い、ついにSnow Leopardで動作するようになりました。最終的に、Ruby、RubyGems、およびMySQLをソースからインストールしました(RubyおよびRubyGemsをインストールするための Hivelogicチュートリアル を参照してください。MySQLチュートリアルは下部にリンクされています)。最終的にgemをインストールしましたが、私はまだ取得していました

dyld: lazy symbol binding failed: Symbol not found: _mysql_init
  Referenced from: /Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle
  Expected in: flat namespace

dyld: Symbol not found: _mysql_init
  Referenced from: /Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle
  Expected in: flat namespace

Trace/BPT trap

最後にmysql.bundleを削除し(これが何のためかわからない)、すべてうまくいきました。

Sudo rm -f /Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle

それが誰かを助けることを願っています。

6
Sam Soffes

この問題は何度も見ました。 almostマシンでmysqlをビルドするたびに。 gem installコマンドの一部としてmysqlconfigを渡す必要があると思います。

Sudo gem install mysql -- --with-mysql-config=/your/mysql/config

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--Ruby=/usr/bin/Ruby
--with-mysql-config

このgemをビルドするには、mysql devファイルが必要であることを忘れないでください。

4
Ryan Oberoi

Snow Leopardをインストールした後、設定を機能させるのに問題がありました。 MAMPは http://www.mamp.info にあり、Apache、PHP、MySQL。バンドルされています。アプリケーションのようにインストールすれば動作します。試してみる価値があり、無料です。

メッシュ

2
mesh

Railsから数年間休憩していたので、開発環境のセットアップに少し時間を費やしました。したがって、Rails 3、MySQL、およびSnowLeopard上のRVM。

2011年8月21日の時点で、Rails 3.0.10、MySQL 5.5.15、およびRVM 1.7.2を使用して動作します。将来のRails 3.0 .x、MySQL 5.5.x、およびRVM 1.7.xバージョン。

  1. まだインストールされていない場合は、XCodeをインストールします。 4.0.2を使用しました。残念ながら、これは現在Appleによって取り下げられていますが、インターネット上の他の場所で利用できる場合があります。バージョン3.2.xはAppleから無料でダウンロードできますが、このチュートリアルではテストしませんでした。おそらく動作します。

  2. インストール rvm

    user$ bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
    
    user$ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile
    
    user$ source .bash_profile
    
  3. Ruby(例:1.9.2))のバージョンをrvmにインストールします 基本的な使用手順はこちら

    user$ rvm install 1.9.2
    user$ rvm use 1.9.2
    
  4. gemsetの作成 rvmの場合Rubyステップ2でインストールされます(xはバージョン番号です)。

    user$ rvm gemset create Rails30x
    user$ rvm [email protected]
    
  5. インストールRails 3.0.x(xはバージョン番号)。

    user$  gem install Rails -v 3.0.x.
    
  6. MySQL 5.5.xパッケージ、スタートアップ項目、および設定ペインをダウンロードしてインストールします 。これら3つはすべてDMGインストールファイルに含まれています。 MySQL WorkBenchもインストールします。

    / usr/local/mysql-version-name/support-filesを検索し(正しいMySQLディレクトリ名を挿入)、myroot.serverを編集します(ルート権限を使用)。 46行目付近にある行を見つけます。

    basedir=
    datadir=
    

    読み取りに変更します(正しいMySQLディレクトリ名を挿入します):

    basedir=/usr/local/mysql-version-name
    datadir=/usr/local/mysql-version-name/data
    

    ファイルを保存します。これで、MySQLは設定ペインから起動できます。

    Rails 3でmysqlを使用できるようにするには、mysql2 gemをインストールします(次のステップを参照)。最初に、DYLD_LIBRARY_PATH MySQLライブラリディレクトリを含めます。これを行うには、ホームフォルダーで〜/ .bash_profileを編集し、次を含めます(正しいMySQLディレクトリー名を挿入します)。

    export DYLD_LIBRARY_PATH=/usr/local/mysql-version-name/lib:$DYLD_LIBRARY_PATH
    

    DYLD_LIBRARY_PATHにディレクトリを含めないと、ライブラリが見つからないというメッセージが表示され、サーバーが異常終了します。

  7. mysql2 gem。 (2011年5月現在、バージョン0.2.7はRails 3.0.x)を含む最新の作業バージョンです。

    user$ gem install mysql2 -v 0.2.7 
    
  8. Railsアプリと、それに対応するデータベース(appname_development)を作成します。

    user$ Rails new appname
    
  9. これをアプリのGemfileに追加します:gem 'mysql2', "0.2.7"

  10. これをアプリのdatabase.ymlに追加します。

    development: 
      adapter: mysql2
      encoding: utf8
      reconnect: false
      database: appname_development
      pool: 5
      username: username
      password: pwd
      Host: localhost
    
  11. アプリを起動し、「アプリケーションの環境について」を確認します。すべてが正しく機能するはずです。

1
MikeD

ARCHFLAGSを設定して--mysql-config = ...を渡す手順では、Snow Leopardでこれを解決するのに十分ではないようでした。それに加えて、私は以下を追加しました:

DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH"

私のバッシュプロファイルに、これは私のためにそれを解決しました。

1
bratsche

私はこれと同じ問題を抱えていましたが、これが私にとってうまくいったことです。

  1. Snow Leopardと64ビットMySQL DMGをインストールします。

  2. /etc/my.cnfを作成して、以前のMySQLデータディレクトリ( here で説明)を指すようにし、実行します

    Sudo mysql_upgrade

  3. IRBを開き、(blog.costan.us/2009/07/rebuild-your-Ruby-gems-if-you-update-to.html経由で)を使用してすべてのgemを再インストールします。

    `宝石リスト` .each_line {| line |システム 'Sudo gem install#{line.split.first}'}

  4. インストールしたMySQL gemをアンインストールしました。

  5. MySQL gemをインストールしました

    Sudo env ARCHFLAGS="-Arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

これで、これまでのところすべてが機能しているようです。 *ノックウッド*

1
Aaron H.

私はこの投稿で説明されているように進みました( http://www.schmidp.com/2009/06/14/rubyrails-and-mysql-on-snow-leopard-10a380/ )、そして今すべて正常に動作します。

Mysqlドライバーをインストールするコマンドのタイプミスに注意してください。

1
Daniel Drehmer

ここで自分の質問に答えると思いました。問題はmysqlではなく、mysql Rubyバインディングにあります。Querius(my mysql gui)を接続すると接続できたため、これを見つけました。

バインディングを修正するソースからビルドする方法は次のとおりです。

cd /tmp
wget http://www.tmtm.org/en/Ruby/mysql/Ruby-mysql-0.2.6.tar.gz
tar xvfz Ruby-mysql-0.2.6.tar.gz
cd Ruby-mysql-0.2.6
./configure
make
Sudo make install

Snow Leopardのソースからビルドしなければならないライブラリがたくさんあり、それらはポップアップし続けます。 MacPortsはすべてのライブラリに対して十分に更新されていないようですので、私は自分でそれをするつもりです。次:freetype( http://download.savannah.gnu.org/releases-noredirect/freetype/

1
coneybeare

私はこのように解決しました:

  1. mysqlのdmgファイルをインストールした後
  2. バンドル構成build.mysql --with-mysql-config =/usr/local/mysql/bin // mysql_config
  3. env ARCHFLAGS = "-Arch x86_64"
  4. バンドルインストール
1
surajit dey

イアン・セルビー、たくさんありがとう。でも、Sudo env ARCHFLAGS="-Arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_configの前からSudoを削除しなければならなかった

Gemsetにインストールしていて、rvmを使用していますが、これはSudoキーワードを使用しないように求めていると思います。どうもありがとう。

1
Ricky McMillen

MySQLを手動でインストールする代わりに、home brew を希望する場合。

既存のmysql gem(存在する場合)をアンインストールします。

 Sudo gem uninstall mysql 

「mysql_config」ファイルを見つけます。

 find /usr -name 'mysql_config' 

Mysql gemを再インストールします。

 Sudo env ARCHFLAGS="-Arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/bin/mysql_config 

注:replace /usr/local/bin/と対応するmysql_configパスはステップ2で見つかりました。また、私の ブログ にもあります。

1
ohho

わずかなバリエーションで何度もarchflagsトリックを試しましたが、うまくいきませんでした。

最終的にdidの作業は、RubyおよびSnow Leopardでインストールされたgemのバージョンに切り替えました。

私は、このバージョンを除くすべての点で機能する独自のバージョンを構築してインストールしました。他のすべてが正常に機能するように見えるので、mysqlプラグインにいくつかのファンキーな仮定があると推測することはできません。とにかく、/ usr/binを切り替えてパスを最初にしただけです。簡単に切り替えられるように、Rubyを/usr/local/Ruby-1.8.7と/usr/local/Ruby-1.9.1にインストールしました。 archflagsソリューションは多くの人に有効であるようですが、すべてではありません。

0
Ian

この記事は私のために問題を解決しました:)

http://techliberty.blogspot.com/2009/12/dealing-with-rake-aborted-uninitialized.html

  • ヒョウの前に

    Sudo gem install mysql -- --with-mysql-dir=/usr/local/mysql

    • PPCマシン上のLeopard:

      Sudo env ARCHFLAGS="-Arch ppc" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

    • IntelマシンのLeopard:

      Sudo env ARCHFLAGS="-Arch i386" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

    • Snow Leopard(Intelのみ):

      Sudo env ARCHFLAGS="-Arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

0
Bijan

Gemインストーラーの構成スクリプトが見つけられないように、mysql_configプログラムの名前を$ MYSQL_HOME/binから別の名前に変更しました。 libsオプションを使用していましたが、gemインストーラーは常にmysqlインストールのコンパイル設定を使用していました。これはファットバイナリです。ただし、デフォルトのRubyインストールはx86_64のみであるため、gemのコンパイルは失敗します。mysql_configプログラムの名前を変更した後、次のコマンドは問題なく動作し、gemをインストールしました。

Sudo env ARCHFLAGS="-Arch x86_64" gem install mysql -- --with-mysql-dir=/usr/local/mysql
0
cmittendorf

RVMでmysql gemをインストールする場合、次のコードを使用してインストールする必要があります

Sudo env ARCHFLAGS="-Arch x86_64" gem install mysql

この方法はLeopard Serverで機能しましたが、上記のいずれも機能しませんでした

0
ganar