« 2008年10月 | トップページ | 2009年1月 »

2008年11月

悲しいお知らせw + Mac OS X で gem install mysql がエラーで通らない。

おはようございます。

まずは、悲しいお知らせ(笑)です。
使っていたPowerBook G4が故障しました(液晶だけ)
仕方ないので、MacBook Proを買いました(笑)
・・・そんなわけで、PowerPCベースでの話題は終了となりました。

以前記事にしたのはこのへん。
Ruby on Rails始めてることにしました。(インストール編)
PowerBookG4 (MacOS X ) にMySQL+phpMyAdmin入れてみた
これが、現在の構成はこうなっております。
・MacBook Pro (Late 2008) メモリ4GB+HDD250GB(7200rpm)
・Mac OS X 10.5.5
このへんで差分が出てしまうので、一部補足しておこうかと思います。
●Rubyまわり
・Ruby on Rails はすでに入っている(けど 1.2 くらいだったので、2にした)
・gemもすでに入っている
・sqlite3も入ってるのでこのへんのことを考えなくてもok
●MySQL + phpMyAdmin まわり
・MySQLに関しては特に無かったかな。
・phpMyAdminに関して。
 その1:PHPのバージョンが5であるので、phpMyAdminはバージョン3を入れる。
 その2:my.cnf と php.ini の設定をいじるのは以前と同じ。

変更点はこのくらいでしょうか。


そして、もう1つの本題。
Ruby on Railsでdatabaseをmysqlにして使うときのおはなし。
まずは環境から。
・MacOS X 10.5.5 (Leopard)
・ruby 1.8.6 (2008-03-03 patchlevel 114) [universal-darwin9.0]
・Ruby on Rails : 2.2.2
・MySQL:Server version: 5.0.67-log MySQL Community Server (GPL)

script/server でRails走らせたら、「mysqlが入ってないよー」というエラーが出てしまいます。

MissingSourceFile (no such file to load -- mysql):
これは、最初から入ってないから当然といえば当然ですので、まぁ、入れるとします。
$ sudo gem install mysql
しかーし。
これがエラーでこけるんですよね。
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/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
*** extconf.rb failed ***
(以下略)

これはデフォルトではどうやっても入らないものらしく。

いろいろと調べたら、解決策ありました。
WARNING: You're using the Ruby-based MySQL library that ships with Rails. - kurusaki note
要は・・・単にgem install mysqlを実行するだけじゃだめってことです。

$ sudo env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
これで問題なく入りました。ばっちり動いてます。
gem listしてもちゃんと出てます。

$ gem list
(中略)
mysql (2.7)
(以下略)

とにかく・・・多謝です!!

| | コメント (0) | トラックバック (0)

MVC(Model-View-Controller)とDocument-View

ごめんなさい愚痴らせてください。

仕事で関わらさせられてる案件。
VC++(MFC)の、昔からのソースコードを弄るんですけど。
動作をおっかけるだけで死ねます・・・まじで。
そのうえ修正要求がむちゃくちゃで、「心が折れる」仕事です。

というのも。とにかく構造がむちゃくちゃで。
Controllerにあたる部分をDocumentとViewの両方に書いているあげく。
(いや、Modelに相当する部分がViewで扱われていたり、Viewに相当する部分がDocumentに書かれていたり、ってのもあったな(^^;)
制御が関数呼び出しだったり、PostMessage/SendMessageだったりと、方式を混在させて書いているんです。
これではトラブル起きて当然だよね、と。
そのうえ「この構造を変えないでトラブルを起こさない制御をしてくれ」とかいう要求がきていて。
そんなの無理です・・・泣けます・・・。

さすが「外注に修正依頼出して白旗あげられた」いわくつきのソースだな、と。


それはさておき。
話に出てきた、MVCだのDocument-Viewだのについて、ちょっとお話を。
MVCは、Rails扱う上でも避けては通れない部分ですからね。

まあ、プログラミングにおける、アプリケーションの構造のはなしね。
役割分担というのかな。だいたいこんなかんじかな。(頭の中で概念的に把握してるだけなので(^^;)
・Model - データ管理 → 実際のデータを(アプリケーションが)扱う部分
・View - 実際に目に見えるもの(見え方) → エンドユーザーが見て触るのに直接関わる部分
・Controller - ModelとViewの間に立って、制御をする → 何をどうしたいか
MFCで採用されているDocument-View構造は、Model+(View+Controller)というのが近いかな。
Controllerがどっちにも書けてしまうので、意識しないとすごく汚いソースになっちゃうけどね。

わけることのメリットですけど。
・データ管理はデータ管理部分で処理を専念できる
・見た目部分は見た目部分で処理を専念できる
・制御部分を独立させるのでやりやすい
かな。ちょっとしたアプリだと大げさになっちゃうけど、規模が大きくなるとこのほうがやりやすくなります(し、後任にも迷惑をかけないと思う(笑))

私の解説よりも、他のサイトの解説が丁寧でわかりやすいので、そちらを読んでください!!
以下に参考になりそうなサイトを載せておきます。


参考になりそうなとこ。
MVC - MVCとはModel-View-Controllerの頭文字をとったものです。
使わないと損をするModel-View-Controller
 Smalltalkでの例、というか元々Smalltalkの概念でしたよね。

おまけ。
@IT:連載:【改訂版】初歩のUML 第13回

あわせて(上記から)
アーキテクチャ・カテゴリ - @IT情報マネジメント
 今後の仕事を考えると、このへん読んどいて損はないかんじ。

| | コメント (0) | トラックバック (0)

« 2008年10月 | トップページ | 2009年1月 »