昨日
最新LLフレームワークエクスプローラを読みつつフレームワークを幾つか実際に
試そうと思ったけど、RoR で変にハマってしまったのであまり試せなかった。
と書いたけど、今日ようやく解決したので詳細書いてみます。
■経緯
本の手順で正しく動作することは以前確認してたんだけど、周囲の人に実際に使ってみて欲しかったので、もっと単純な環境構築方法が欲しかった。(何度も書いてる通り、普段インターネットに接続できない環境で作業してるので、色々ダウンロードするのは結構面倒)
そんなわけで InstantRails で同じ手順を試してみることに。
■問題のエラー
エラーの内容はこんな感じ。
ActiveRecord::StatementInvalid
(Mysql::Error: Lost connection to MySQL server during query: SHOW FIELDS FROM items)
問題の切り分けも何もできないんだけど、状況としては
・render :text => 'hello rails' とかはうまくいく
・scaffold :item とかやると上記のエラー
・MySQL のユーザ名/パスワードを、本に載ってる bmuser/bmuser から root/<空文字> にすると正常に動作。root/aaa とかだとダメ。
どうやらパスワードが設定されているとうまく動作しない様子。
■対策
ここで相当ハマったんだけど、よく見ると
FAQ に問題&解決策が載ってたorz
現行バージョンでは、結局
MySQL/Ruby for Windows を入れないといけないらしい。
ここで、セットアップ手順の 2. に
(Recommended) Including the MySQL bindir in your path
(e.g. C:\Program Files\MySQL\MySQL Server 5.0\bin).
とあるんだけど、この手順で InstantRails 配下の MySQL パスを選ぶと下記のエラーが出る。
プロシージャ エントリ ポイント mysql_stmt_row_tell が
ダイナミック リンク ライブラリ LIBMYSQL.dll から見つかりませんでした。
まあ、InstantRails 付属の MySQL には libmysql.dll が含まれてないのが原因っぽい。
Copying libmysql.dll from your MySQL bindir or source package
to your Ruby bindir (e.g. C:\ruby\bin).
こっちの手順で行けばおk。
ちなみにこのページで配布されている MySQL 4.1.9 はインストーラ版なので、一度 MySQL を適当なパスにインストールする必要がある。(
Universal Extractorも試したけど、うまく解凍できなかった。)
とりあえず Custom インストールで Client Programs→MySQL Command Line Utilities だけ入れれば、目的の DLL はインストールされます。
で、この手順どおりにやればうまく動きました。
周りに試してもらうときは、root/<空文字> で試してもらおう。面倒だから。
■上記とは関係ないけど参考URL
BookmarkOnInstantRails
同じような試み。このサイト早めに見つけてればもっと楽だっただろうなと思います。
マニュアル・FAQ・blog 等の検索はどれも漏れずにやらないと、時間が勿体ないですね。
満足せる豚。眠たげなポチ。:簡単Ruby on Railsの決定版? - Instant Rails -
phpMyAdmin のエラーはここ見て対応しました。(書き忘れてたので追記)