6/11(日)の Yokohama.rb Monthly Meetup #69 に参加しました。3 回目ぐらいです。
今回は初参加の方が 4 人ほどいて、そのなかにはプログラミング始めたての学生の方もいました。行動力!
内容は次のような感じでした。
- レシピブック読書会
- 発表
- 懇親会
レシピブック読書会
今回はレシピ 230 から 233 まで読みました。以下メモ。
レシピ 231
OptionParser#on
で設定できるオプション値の挙動が若干ややこしめでした。
Ruby 2.3.1 で確かめてみたところ、次のような感じでした。
省略不可のオプション
on('-f', '--format=FMT', ...)
(本に書いてあるパターン)./foo.rb --format=FMT
,./foo.rb --format FMT
とするとFMT
がオプション引数として認識される./foo.rb -f FMT
とするとFMT
がオプション引数として認識される
on('-f FMT', '--format=FMT', ...)
,on('-f FMT', '--format FMT', ...)
on('-f', '--format=FMT')
と同じ
省略可のオプション
on('-u', '--user=[NAME]', ...)
(本に書いてあるパターン)./foo.rb --user=NAME
とするとNAME
がオプション引数として認識される./foo.rb -u NAME
とするとオプション引数が認識されない./foo.rb -uNAME
とするとNAME
がオプション引数として認識される
on('-u [NAME]', '--user=[NAME]', ...)
- 次のエラーが発生する
foo.rb:*:in `<main>': =[NAME]: incompatible argument styles (ArgumentError) OptionParser::Switch::PlacedArgument, OptionParser::Switch::OptionalArgument
on('-u', '--user [NAME]', ...)
,on('-u [NAME]', '--user [NAME]', ...)
./foo.rb --user=NAME
,./foo.rb -u NAME
,./foo.rb --user NAME
すべてでNAME
がオプション引数が認識される
レシピ 233
コードのテストを if __FILE__ == $0
内に書くという利用法があります。次のような感じ。
# foo.rb class Foo def foo(a, b) a + b end if __FILE__ == $0 require 'minitest/autorun' class TestFoo < Minitest::Unit::TestCase def test_foo assert_equal 6, Foo.new.foo(2, 3) # テスト結果は NG となる end end end end
これで、別ファイルから require_relative 'foo'
などとすれば Foo
が使えますし、foo.rb
自体を実行すれば if
内の foo
のテストを実行できます。
発表
今回は競馬のデータ解析の話と、個人で作っておられる Rails アプリのコードを読むという企画でした。
競馬のデータは JRA-VAN というところで取得できるそうです(.NET 環境からしかデータが取得できないそうですが)。競馬データ解析でうまくビジネスするためには、実力があるのに人気がない馬を見つけることが求められるそうです。
Rails アプリのコードを読む企画では、AngularJS + Rails (API 用) という構成のアプリについてコードを読んでいきつつ、有識者の方々からコメントが出ていました。以下メモ。
- 順番:Gemfile, config/routes.rb -> app/* -> db/schema.rb
- routes.rb での
only
/except
の使いわけ - ABC サイズ(RuboCop でチェックできる)を下げるにはメソッド切り分けがよい
- 参考:Abc Metric
try
よりNoMethodError
を投げてくれるtry!
を使ったほうがよい
私も Rails をちょこちょこ触っているので、かなり勉強になりました。
その後は懇親会で吉田飯店へ。今回は参加者が 10 人以上と多く、懇親会もかなり盛り上がっていました。
他の方から、「gem のコードは Web 上に結構あるが、Rails を使ったコードはあまりないので参考にするのが難しい」というお話を伺いました。そういうこともあって、今回のようなコードを読む企画はよいのだろうなあと思いました。
次回の Yokohama.rb は以下リンクから申し込めます。