最近開発を始めたシステムでWicketというJavaのフレームワークを使用。
会社の人に紹介してもらってはじめて使い始めたのだけど、今のところかなりいい感じ。
Apache Wicket
http://wicket.apache.org/
日本Wicketユーザーグループ
http://www.wicket-ja.org/
このフレームワークの思想は、「サーバサイドJavaプログラムにもオブジェクト指向を」というもの。
JavaのWebアプリのフレームワークといえば代表的なものはやはりStruts。
そしてStrutsはServletの上で動いていて、ServletはHTTPの仕様に基づいた動作をするわけです。
Javaを使っている = オブジェクト指向 というイメージがあるけれど、よく考えてみると
Struts(Servlet)の動作というのは基本的に手続き型。
Requestというデータを受け取ったServletが処理を行って結果を返しておしまいというもの。
HTTPの上で動くのでステートレス。
でもオブジェクト指向の考え方はデータ(プロパティ)と処理(メソッド)を持ったオブジェクトが
連携して処理を行うというもの。もちろんオブジェクトは状態を持っている = ステートフル。
JavaのスタンドアロンのプログラムやGUIプログラムはオブジェクト指向本来のつくりをしているけれど、
Webアプリについてはこれまで基本的に手続き型のつくりをされてきている。
MVC タイプ2というものがあるけれど、これは本来MVCというもともとのオブジェクト指向のものを
Webアプリに適用できる形にしたものだそうな。
WicketはWebアプリのJavaでも本来のオブジェクト指向のプログラミングを、Javaの面白さを
取り戻そうということで作られている。
今までのフレームワークとは全く構造が違って、画面上のそれぞれのパーツ = Javaのコンポーネント となっていて、
つくっていてオブジェクトを組み合わせていく感じがとても面白い。
まだまだ使い始めたばかりなので悪いところが見えていないが、とてもこの先が楽しみ。
2009年3月29日日曜日
2009年3月19日木曜日
美人時計
美人時計というサイトがあると聞いて見てみた。
http://www.bijint.com/
街中で時刻を書いた黒板(?)をもった女性の写真が1分ごとに切り替わって時計になっているというもの。
いや私が女好きとか言うわけではなく、ほんとに全員美人なのかと言ったら全部確認はしてないですが、
アイディアがおもしろい。
知ってみれば単純な内容だけど、なかなか思いつかないと思う。
そして自分で写真とって時計作ってみても面白いんじゃないかと。
家族の写真で家族時計とか。
1分1枚写真が必要なので、1日分だと60分×24時間で1440枚必要ですが。
こういうサービスを自分でも何か作れたらいいなー。
http://www.bijint.com/
街中で時刻を書いた黒板(?)をもった女性の写真が1分ごとに切り替わって時計になっているというもの。
いや私が女好きとか言うわけではなく、ほんとに全員美人なのかと言ったら全部確認はしてないですが、
アイディアがおもしろい。
知ってみれば単純な内容だけど、なかなか思いつかないと思う。
そして自分で写真とって時計作ってみても面白いんじゃないかと。
家族の写真で家族時計とか。
1分1枚写真が必要なので、1日分だと60分×24時間で1440枚必要ですが。
こういうサービスを自分でも何か作れたらいいなー。
2009年3月13日金曜日
広告配信システムのアクセスログをどう保持するか思案中。。。
OSSのopenXを使うことを考えていた自社サービスサイトでの広告配信で、
ユーザの属性などでターゲティングしたりアクセス解析できるようにということで内製することに。
そこで悩んでいるのがアクセスログの持ち方。
あとでいろんな視点からアクセス解析できるようにしたいと言うことは、
アクセスログをほとんど生ログの形で保持しないといけないわけです。
解析するからにはログファイルじゃなくてDBに持ってないといけないわけで、
つまりは 「1PV = 1レコード」 というわけ。
仮に広告を表示しているページが1日あたり10万PVだとしたら、
10日で100万レコード、100日で1000万レコードになってしまうわけで、
そんなペースで肥大化していくテーブルなんてあとで扱いに困るわけです。
今のところそのままデータを保持できる解決策が見つからんので、
やっぱり解析できる視点をある程度限定して、定期的(30分~一時間毎ぐらい)に
サマリしたデータを保持するしかないかぁ~。。。
ユーザの属性などでターゲティングしたりアクセス解析できるようにということで内製することに。
そこで悩んでいるのがアクセスログの持ち方。
あとでいろんな視点からアクセス解析できるようにしたいと言うことは、
アクセスログをほとんど生ログの形で保持しないといけないわけです。
解析するからにはログファイルじゃなくてDBに持ってないといけないわけで、
つまりは 「1PV = 1レコード」 というわけ。
仮に広告を表示しているページが1日あたり10万PVだとしたら、
10日で100万レコード、100日で1000万レコードになってしまうわけで、
そんなペースで肥大化していくテーブルなんてあとで扱いに困るわけです。
今のところそのままデータを保持できる解決策が見つからんので、
やっぱり解析できる視点をある程度限定して、定期的(30分~一時間毎ぐらい)に
サマリしたデータを保持するしかないかぁ~。。。
2009年3月10日火曜日
RubyのMarshalデータはバイナリだった
最近触り始めたRailsのシステムで、テストデータを変更する必要があったので調べてみると、
どうやらMarshalというものを使ってテストデータを保持しているらしい。
ファイルを開いてみた感じでは普通にテキストっぽかったので、そのままviで編集、テスト実行。
1) Error:
NoMethodError: You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.[]
・・・。おかしー。どうやってもこける。。。今までこけてなかったところまで。。。
それでは試しにとsvnからテストデータのファイルを取得しなおして実行すると、成功!
うーむ、どうやらMarshalデータを直接いじったのが原因か。
ネットで調べてみるとMarshalでdumpされたデータはバイナリなので直接編集はできないようで。
だってfileコマンドで調べたら不通にASCIIテキストだって言われるんだもん。。。
$ file hoge.yml
hoge.yml: ASCII text, with very long lines
まぁともあれMarshalというものも初めて知ったので、勉強になりました。
どうやらMarshalというものを使ってテストデータを保持しているらしい。
ファイルを開いてみた感じでは普通にテキストっぽかったので、そのままviで編集、テスト実行。
1) Error:
NoMethodError: You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.[]
・・・。おかしー。どうやってもこける。。。今までこけてなかったところまで。。。
それでは試しにとsvnからテストデータのファイルを取得しなおして実行すると、成功!
うーむ、どうやらMarshalデータを直接いじったのが原因か。
ネットで調べてみるとMarshalでdumpされたデータはバイナリなので直接編集はできないようで。
だってfileコマンドで調べたら不通にASCIIテキストだって言われるんだもん。。。
$ file hoge.yml
hoge.yml: ASCII text, with very long lines
まぁともあれMarshalというものも初めて知ったので、勉強になりました。
2009年3月6日金曜日
Railsの原因不明のエラー解決!
昨日書いたRailsのエラーがやっと解決!
エラーのトレースに表示されていた、
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_s upport/dependencies.rb:422:in `remove_const'
の部分をデバッガでチェック。
parent.send :remove_const, names.last
という処理でこけている。
このとき parent = Object, names.last = VERBOTEN_TAGS だったので、
Object.send :remove_const, VERBOTEN_TAGS
でこけていると。
VERBOTEN_TAGS という変数をクリアしようとしてこけているらしいので、
rubyのライブラリの中を VERBOTEN_TAGS で全検索。
find ./ -type f -name "*.rb" | xargs grep VERBOTEN_TAGS
結果ヒットしたのは
./gems/1.8/gems/actionpack-1.13.3/lib/action_view/helpers/text_helper.rb
で、中でこういうこと↓をしている。
VERBOTEN_TAGS = %w(form script plaintext) unless defined?(VERBOTEN_TAGS)
んじゃアプリの中でこれを使っているクラスがあるかと検索すると、ありました1クラス。
しかもclass宣言の前にincludeしている。
include ActionView::Helpers::TextHelper
include ActionView::Helpers::TagHelper
class ContentSlot < ActiveRecord::Base
・・・
end
これだとグローバルな扱いになるので他に影響をあたえるっぽい。
ということで、includeをclass宣言の中に移動。
class ContentSlot < ActiveRecord::Base
include ActionView::Helpers::TextHelper
include ActionView::Helpers::TagHelper
・・・
end
これで動かしたところ、成功!
いやぁ~、長かった。3日ぐらいかかった気がする。
で、わかってみれば、そういえばあのTracに同じこと書いてあったな、と。。。
http://dev.rubyonrails.org/ticket/6716
ちょっと読んで自分のケースとは違う気がした&英語だったので途中であきらめたので
ちゃんと読んでいなかったんだけど、全く同じ対処が書いてあった。。。
ちゃんと読めてりゃ1日早く解決したかも。。。
まぁなんにしても解決すりゃよしということで。
エラーのトレースに表示されていた、
/usr/local/profiling/lib/ruby/
の部分をデバッガでチェック。
parent.send :remove_const, names.last
という処理でこけている。
このとき parent = Object, names.last = VERBOTEN_TAGS だったので、
Object.send :remove_const, VERBOTEN_TAGS
でこけていると。
VERBOTEN_TAGS という変数をクリアしようとしてこけているらしいので、
rubyのライブラリの中を VERBOTEN_TAGS で全検索。
find ./ -type f -name "*.rb" | xargs grep VERBOTEN_TAGS
結果ヒットしたのは
./gems/1.8/gems/actionpack-1.
で、中でこういうこと↓をしている。
んじゃアプリの中でこれを使っているクラスがあるかと検索すると、ありました1クラス。
しかもclass宣言の前にincludeしている。
include ActionView::Helpers::
include ActionView::Helpers::TagHelper
class ContentSlot < ActiveRecord::Base
・・・
end
これだとグローバルな扱いになるので他に影響をあたえるっぽい。
ということで、includeをclass宣言の中に移動。
include ActionView::Helpers::
include ActionView::Helpers::TagHelper
end
これで動かしたところ、成功!
いやぁ~、長かった。3日ぐらいかかった気がする。
で、わかってみれば、そういえばあのTracに同じこと書いてあったな、と。。。
http://dev.rubyonrails.org/
ちょっと読んで自分のケースとは違う気がした&英語だったので途中であきらめたので
ちゃんと読んでいなかったんだけど、全く同じ対処が書いてあった。。。
ちゃんと読めてりゃ1日早く解決したかも。。。
まぁなんにしても解決すりゃよしということで。
2009年3月5日木曜日
最近セキュリティきびしいよね。。。
会社のセキュリティ規則が厳しくなって自前ノートPC持ち込み禁止に。
ISMSだとかJ-SOXだとか認証取るんだとか。
今までAcerのAspire-Oneを持ち歩いて通勤中に使ってたりしたのに、それもできなく。。。
そのために買ってまだそんなに経ってないのにー。
毎日コインロッカー借りたら出費がばかにならんし、
誰か会社の近くでPC預かってくれないかな!?
ISMSだとかJ-SOXだとか認証取るんだとか。
今までAcerのAspire-Oneを持ち歩いて通勤中に使ってたりしたのに、それもできなく。。。
そのために買ってまだそんなに経ってないのにー。
毎日コインロッカー借りたら出費がばかにならんし、
誰か会社の近くでPC預かってくれないかな!?
Railsで原因不明のエラー。。。
Railsのデバッガを使うきっかけになったのが、原因不明のエラー。。。
サーバ起動して1回目は普通にページ遷移できるのに、2回目以降は
"そんなメソッドはねぇ。" と言われてエラー画面。
デバッガ使ってみたら1回目の正常に表示されるときの最後にこんなエラーが↓
Processing ApplicationController#index (for 192.168.1.77 at 2009-03-05 18:51:01) [GET]
2009-03-05 18:51:01: Error calling Dispatcher.dispatch #
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:422:in `remove_const'
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:422:in `send'
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:422:in `remove_constant'
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:273:in `remove_unloadable_constants!'
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:273:in `each'
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:273:in `remove_unloadable_constants!'
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:72:in `clear'
/usr/local/profiling/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/dispatcher.rb:60:in `reset_application!'
/usr/local/profiling/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/dispatcher.rb:116:in `reset_after_dispatch'
/usr/local/profiling/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/dispatcher.rb:51:in `dispatch'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/rails.rb:76:in `process'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/rails.rb:74:in `synchronize'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/rails.rb:74:in `process'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:159:in `process_client'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:158:in `each'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:158:in `process_client'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `run'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `initialize'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `new'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `run'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `initialize'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `new'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `run'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel/configurator.rb:282:in `run'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel/configurator.rb:281:in `each'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel/configurator.rb:281:in `run'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:128:in `run'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel/command.rb:212:in `run'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:281
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:488:in `load'
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:488:in `load'
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:342:in `new_constants_in'
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:488:in `load'
/usr/local/profiling/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/commands/servers/mongrel.rb:60
/usr/local/profiling/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
/usr/local/profiling/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:495:in `require'
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:342:in `new_constants_in'
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:495:in `require'
/usr/local/profiling/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/commands/server.rb:39
/usr/local/profiling/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
/usr/local/profiling/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
script/server:3
これのせいで2回目以降の処理が失敗してるとか?
activesupportのバージョン上げてみるとかどう?(←安易。。。)
ググってもあんまり情報ないし。。。
http://www.ruby-forum.com/topic/119930
実はmongrelのバグとか?
主に作ってた人が今すでにいないのでmongrelで動かしてたか実績は不明。。。
明日CGIで動かしてみよう。
サーバ起動して1回目は普通にページ遷移できるのに、2回目以降は
"そんなメソッドはねぇ。" と言われてエラー画面。
デバッガ使ってみたら1回目の正常に表示されるときの最後にこんなエラーが↓
Processing ApplicationController#index (for 192.168.1.77 at 2009-03-05 18:51:01) [GET]
2009-03-05 18:51:01: Error calling Dispatcher.dispatch #
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:422:in `remove_const'
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:422:in `send'
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:422:in `remove_constant'
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:273:in `remove_unloadable_constants!'
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:273:in `each'
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:273:in `remove_unloadable_constants!'
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:72:in `clear'
/usr/local/profiling/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/dispatcher.rb:60:in `reset_application!'
/usr/local/profiling/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/dispatcher.rb:116:in `reset_after_dispatch'
/usr/local/profiling/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/dispatcher.rb:51:in `dispatch'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/rails.rb:76:in `process'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/rails.rb:74:in `synchronize'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/rails.rb:74:in `process'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:159:in `process_client'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:158:in `each'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:158:in `process_client'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `run'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `initialize'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `new'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `run'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `initialize'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `new'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `run'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel/configurator.rb:282:in `run'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel/configurator.rb:281:in `each'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel/configurator.rb:281:in `run'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:128:in `run'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel/command.rb:212:in `run'
/usr/local/profiling/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:281
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:488:in `load'
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:488:in `load'
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:342:in `new_constants_in'
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:488:in `load'
/usr/local/profiling/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/commands/servers/mongrel.rb:60
/usr/local/profiling/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
/usr/local/profiling/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:495:in `require'
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:342:in `new_constants_in'
/usr/local/profiling/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:495:in `require'
/usr/local/profiling/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/commands/server.rb:39
/usr/local/profiling/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
/usr/local/profiling/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
script/server:3
これのせいで2回目以降の処理が失敗してるとか?
activesupportのバージョン上げてみるとかどう?(←安易。。。)
ググってもあんまり情報ないし。。。
http://www.ruby-forum.com/topic/119930
実はmongrelのバグとか?
主に作ってた人が今すでにいないのでmongrelで動かしてたか実績は不明。。。
明日CGIで動かしてみよう。
Railsのデバッガ
最近仕事でRuby on Railsに着手。
ローカルのPCは権限の問題やらで環境づくりが面倒なので、テストサーバで直接アプリ動かしたり。。
そんな状況だとIDEのデバッガが使えない!
そこで上司から教えてもらったのが "ruby-debug"(http://www.sitepoint.com/article/debug-rails-app-ruby-debug/)
config/environments/development.rb に require "ruby-debug" と書くだけで使える。
あとはプログラムの止めたいところに debugger と書けばそこでストップ
viewでも <% debugger %> とすれば使える。
mongrel_rails で動かしていたのだけれど、これだとデバッガは使えないようで、
ruby script/server で動かすとそのターミナルがそのままデバッグのコンソールになる。
こいつは使える。
ローカルのPCは権限の問題やらで環境づくりが面倒なので、テストサーバで直接アプリ動かしたり。。
そんな状況だとIDEのデバッガが使えない!
そこで上司から教えてもらったのが "ruby-debug"(http://www.sitepoint.com/article/debug-rails-app-ruby-debug/)
config/environments/development.rb に require "ruby-debug" と書くだけで使える。
あとはプログラムの止めたいところに debugger と書けばそこでストップ
viewでも <% debugger %> とすれば使える。
mongrel_rails で動かしていたのだけれど、これだとデバッガは使えないようで、
ruby script/server で動かすとそのターミナルがそのままデバッグのコンソールになる。
こいつは使える。
登録:
コメント (Atom)