華's 徒然日記

日々の出来事を、気が向いたときに、徒然なるままに書き記していこうと思います。

ruby-debugインストール備忘

2010-09-18 00:00:00 | IT
手牌を全て削除する機能追加後、新しい機能をプログラミング中、いきなり「削除」ボタンを押してもセッションが解放されなくなりました。うお、デグレったと思い、ソースを追いかけるが原因がまったく分かりません。デバッガプリーズということで、ruby-debugを導入した際の備忘。

1.「gem install ruby-debug」コマンド実行。
⇒エラー。'nmake' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
ruby-debugはソースのコンパイルからやるのだろうか。

2.「nmake.exe」をネットからダウンロードして、パスを通す。
ダウンロード先:http://download.microsoft.com/download/vc15/patch/1.52/w95/en-us/nmake15.exe
パスを通すのはめんどくさかったので、WindowsSystem32に突っ込む。

3.あらためて「gem install ruby-debug」実行。
⇒エラー。'cl' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
VC++ のコンパイラなんて入れてないです。

4.Visual C++ 2010 Expressのインストール
ダウンロード先:http://www.microsoft.com/japan/msdn/vstudio/express/

5.あらためて、実行。
⇒エラー。c:rubyonrailsinstantrails-2.0-winrubylibruby1.8i386-mswin32config.h(2): fatal error C1189: #error :MSC version unmatch
MSCのversionがアンマッチらしいです。

6.config.hの修正
config.hを見てみると、
====
#if _MSC_VER != 1200
#error MSC version unmatch
#endif
====
との記述。
Visual C++ 2010のMSCのバージョンは、1600ぽいので、「if _MSC_VER <1200」に修正。

7.あらためて、実行。
⇒エラー。c:rubyonrailsinstantrails-2.0-winrubylibruby1.8i386-mswin32win32/win32.h(29) : fatal error C1083: incl
ude ファイルを開けません。'winsock2.h': No such file or directory

winsock2.hはWindowsSDKに入ってるらしい。

8.Microsoft Windows SDK for Windows 7のインストール
ダウンロード先:
Microsoft Windows SDK for Windows 7 and .NET Framework 4(Webインストール版)

9.再実行
⇒エラー。あのファイルがない、あのファイルがみえないの無限ループが起きたので、必要そうなヘッダファイルやらをまとめて所定のフォルダに突っ込む。

10.再実行
⇒成功。インストール完了。

11.「ruby script/server -u」でサーバをデバッグモードで起動
ソースの中にブレイクポイントとして「debugger」を書いて、デバッグ。一瞬で原因が判明。めでたしめでたし。

インストールに数時間かかりましたが、メソッドの名前を書き間違えるという難解なバグがつぶれて良かったです。
自宅でも、ソースのバージョン管理がしたくなりました。


link_to_remoteの備忘

2010-09-16 00:00:00 | IT
link_to_remoteで、任意のパラメータをAjaxでアクションに送ろうとしたときの備忘。
まず、withオプションの使用を試みる。
===============
<% for master in @masters do %>
<%= link_to_remote(image_tag(master.img_url_place,:border => 0),
:url => {:action => 'add_to_shupai'},
:with => "'hai_code=' master.hai_code") %>
<% end %>
===============
javascriptエラーになる。masterオブジェクトがjavascriptで宣言されてないと。
:withパラメータ値には、パラメータ=値という形式の文字列を出力するようなjavascriptコードを指定せないかんらしい。ただ、生のjavascriptコードなんて書きたくないので、試行錯誤する。

===============
<%= link_to_remote(image_tag(master.img_url_place,:border => 0),
:url => {:action => 'add_to_shupai'},
:with => put_with_option("hai_code", master.hai_code)) %>
===============
put_with_optionというヘルパーメソッドを自作して、無理やり"パラメータ=値"を出力する。うまくいったが、そもそも、こんなことしなくてももっと簡単に渡せるもんじゃなかろうか。

===============
<%= link_to_remote(image_tag(master.img_url_place,:border => 0),
:url => {:action => 'add_to_shupai',:hai_code => master.hai_code}) %>
===============
渡せるもんだった。urlパラメータの中で、普通に任意のシンボルで設定できた。withオプション使う必要なし。

麻雀の点数計算アルゴリズム

2010-09-14 00:00:00 | IT
「RailsによるアジャイルWebアプリケーション開発 第3版(オーム社)」、「HeadFirstRails(オライリー・ジャパン)」、「たのしいRuby 第2版(ソフトバンククリエイティブ)」を読んで、かんたんにRubyとRailsについて学んだので麻雀の点数計算Webアプリ開発に着手しました。今回の目的はRubyOnRailsでAjaxなWebアプリケーションをサクッと開発することにあったのですが、「麻雀の点数計算アルゴリズム」が思っていたよりもややこしい……。こういうとき、大学の情報工学科にでも行っておけば良かったなと後悔します。

RailsによるアジャイルWebアプリケーション開発
Sam Ruby,David Heinemeier Hansson,Dave Thomas
オーム社

このアイテムの詳細を見る

Head First Rails ―頭とからだで覚えるRailsの基本
David Griffiths
オライリージャパン

このアイテムの詳細を見る

たのしいRuby 第2版 Rubyではじめる気軽なプログラミング
高橋 征義,後藤 裕蔵
ソフトバンククリエイティブ

このアイテムの詳細を見る