Skip to content
yowasou edited this page Aug 13, 2023 · 11 revisions

[議事録]

  • 日付:2011年9月14日
  • 議事録担当:@y_murase (→ @tarya 代行)、@ke_tachibanaさん

AGENDA

  1. AGENDAの共有(by司会)
  2. 前回決めたTryの再確認
  3. 初参加者の自己紹介
  4. メタプログラミングRuby読書会
  5. 発表
  6. その他
  7. KPT(最後の15分)
  8. 次回の予告と担当割り振り

範囲:第5章 金曜日: コードを記述するコード

疑問点と議論

  • 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
      • 文字列しか受け取れないので不便。最終手段。
      • ブロックを渡す方が、シンタックスチェックをしてもらえるのでセキュア

次回の範囲

  • 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がサポートされなくなった
  • テキストエディタ

    • 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

  • 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

フィードバック

  • (勉強会終了後のフィードバック記事)
Clone this wiki locally