議事録(7) - hamamatsu-rb/hamamatsu-rb.github.com GitHub Wiki
議事録(7)
- 日付:2011年9月14日
- 議事録担当:@y_murase (→ @tarya 代行)、@ke_tachibanaさん
AGENDA
- AGENDAの共有(by司会)
- 前回決めたTryの再確認
- 初参加者の自己紹介
- メタプログラミングRuby読書会
- 発表
- その他
- KPT(最後の15分)
- 次回の予告と担当割り振り
メタプログラミングRuby読書会
疑問点と議論
- inspectを使うのはなぜ?
- eval の中に入れるので、inspect の方がよい
- ダブルクォーテーションなどをRubyコードでそのまま使える文字列リテラルで展開してもらえる
- キリッ)とか2chとかより以前の元ネタはあるのか?
- セーブレベルが有効なのはProcの中だけ
- Ruby文法の仕様
- セーフレベルをカスタマイズできるのか?
- ディスクのフォーマットだけを許可するようにするとか
- 低レベルで実装してそうなので、できないような気がするが、Rubyだからできそうな気もする。
- テストコードを見るとわかるかもしれない。
- classは変数でクラス名は受け取れない
- classは必ず定数しか受け取れない。というのが、文法の仕様
- add_checkd_attributeのattributeという引数はシンボルでもOK?
- #{}の中では、.to_s が呼ばれる
- Symbol#to_sはsymbol名を文字列にして返す
- なので、ここの例ではシンボルでも文字列でも大丈夫
- evalが3種類あって混乱している
- instance_eval
- インスタンスをselfとして使うときに使う
- ブロックを渡せる
- class_eval
- クラスをselfとして使うときに使う
- ブロックを渡せる
- eval
- 文字列しか受け取れないので不便。最終手段。
- ブロックを渡す方が、シンタックスチェックをしてもらえるのでセキュア
- instance_eval
次回の範囲
- 7章、8章どちらもする
- 質問、面白かったことを書いてこよう
発表
メタプログラミング事例の紹介(@kzgs)
以下のように、メソッド(mymethod)を定義すると、mixinすることも、単純にModuleメソッドとして実行することもできる。
module A
class << self
define_method(:mymethod) do |arg1, arg2, &block|
...
end
end
end
class B
include A
end
B.new.mymethod
A.mymethod("a", "b") do |x|
...
end
このように、define_methodに指定するブロックに引数を指定できるのは、Ruby 1.8.7 以降。
Tips: ファイルの変更を監視して、実行するツール
ifchanged *.rb --d "./meta.sh"
議論がinstance_execの話に発展。
instance_execも引数付きブロックを受け取れるが、これもRuby1.8.7以降。
instance_exec(3) do |x|
...
end
instance_execの引数はどういうときに使うのか?
proc = lambda {|x| puts "lambda #{x}"}
instance.instane_exec(1, &proc) # 1がユーザ入力とか動的に変わるもの
という感じ。
- ブロックだけかと思ったらinstance_evalにもコード文字列を渡せるじゃん!
Ruby on rails3 Tutorialを日本語訳してみた (@sea_mountain)
-
rails3 Tutorialの取得
- PDFの字が太い版というのがある
- 紙よりPDFダウンロードの方が安い
-
IDEs
- RadRails
- aptanaを使う
- RubyMine
- Eclips的
- 3rdRails
- 高い
- NetBeans
- サポートされなくなった
- Solarisに買収されてから、7.0からrubyがサポートされなくなった
- RadRails
-
テキストエディタ
- TextMate
- Emacs
- MacVim
- Vim
- iTerm
- Terminal.app
-
Linuxなら
- gVim
- gedit (ただしGMate plugin込みに限る)
- Kate
-
Windowsなら
- 筆者はWindowsのことはよくわからないのでぐぐれとのこと
- Vim + Console (Akitaka On Rails)
- E Text Editor (Console付き)+Cygwin
- Komodo Edit
- Sublime Text editor
-
Vim使いのRailsコミュニティ
- rails.vim
-
Rails 3.1 release notes では
- Ruby 1.8.7 p248 and p249 はバグ
- 1.9.1もバグ
-
Git
- Pro Git by Scott Chacon
- 日本語版: http://progit.org/book/ja/
-
Deploying
- Phusion Passenger (Apache, Nginx)
- Engine Yard, Rails Machine
- Engine Yard Cloud, Heroku
- 筆者のお気に入りは Heroku
-
次回から3章ペース (全部で480ページ)
Rails3dojo (@mackato)
第5回くらいの予定だったが、今回(4回目)で終了。
すみません、凄すぎてメモはできず。こちらを参照ください。→ http://www.slideshare.net/mackato/rails3-view
- markdown, syntax_highligher のコード、たった13行でWiki解析ができてしまうという。→凄い
- シンタックスハイライトにpygmentsとalbino
- pygmentsはpython製のシンタックスハイライト用ライブラリ
- それをRubyから使うのがalbino
- pygmentsのインストールは別で行う必要がある
- PageやCommentが消せない不具合あり
- railsに到達した時点でセッション情報がない
- powを使わずwebrickを使っても駄目
- rack見ればわかると思う
- spork, >= 0.9.0.rc2 が見当たらないのだけど、なぜだろう?
- →未解決
今回は景品があります
- 「ウェブオペレーション」は@seamountainさんに贈られました。おめでとう
KPT
Keep
Problem
Try
次回の予告と担当割り振り
- 告知(ATNDとか): @jacoyutorius
- モデレータ: @suchi
- 議事禄er: @y_murase, @sea_mountain
フィードバック
- (勉強会終了後のフィードバック記事)