kawasaki.rb #22 に参加してきました #kwskrb
2015/3/25に開催されたkawasaki.rb #22に参加してきました。
Doorkeeper
Kawasaki.rb #022 - Kawasaki.rb | Doorkeeper
Togetter
パーフェクトRuby読書会
以降のコードはRuby 2.2.0で試しています。
3-5-12 ::を使ったメソッド呼び出し
Time::now
ドットでなく::でメソッドを呼ぶことができます。ちなみにrubocopに怒られます。
3-5-13 メソッド定義の取り消し
undefを用いることでメソッドの定義を取り消すことができます。
def greet puts 'hora' end greet # => "hora" undef greet greet # => undefined local variable or method `greet'
ところでこれっていつ使うんだろうという話題になり、例えばRails上でデザイナと協業する際、View側で代入メソッドを呼ばせたくない時などにundefして置く、という話を聞きました。
3-5-14 メソッドに別名をつける
aliasを用いることでメソッドに別名を付けることができます。
alias greet puts greet "hi" #=> "hi"
また、元のメソッドをundefしても別名としたメソッドは影響を受けません。
undef puts greet "ho" #=> "ho"
ここでは以下のコードが話題となりました。
def foo raise end alias bar foo bar #=> `foo': unhandled exception
と、呼び出しているのはbarですが例外はfooで発生したというメッセージになっています。
さらに、
def foo raise end alias bar foo undef foo # fooをundefしてみる bar #=> `foo': unhandled exception
と、fooはundefしているにも関わらずfooの名前が表示されるという現象があります。
3-6-1 文字列の入出力
puts、print、sprintfなどの説明がありました。sprintfは、そのショートハンドであるString#%の方がよく使うという話をしました。
sprintf("%04d", 1) #=> "0001" "%04d" % 1 #=> "0001"
String#%のパラメータは配列でも渡せます。
"%03dパーセント中の%02dパーセント" % [100, 50] #=> "100パーセント中の50パーセント"
なんとハッシュでも渡せるとのことでした。
"あなたは%<num>08d人目のお客様です" % {num: 10} #=> "あなたは00000010人目のお客様です"
なんか「名前付きキャプチャ」っぽい!ということで、名前付きキャプチャの話題となりました。
/(?<num>\d+)/ =~ "10人目" num # => "10"
個人的にはこの機能を知らなくて、いきなり変数にバインドされるというのはいくらRubyでも衝撃的でした。 ただ、
m = /(?<num>\d+)/.match("10人目") m[:num] #=> "10"
とすればシンボルでアクセスできるので安全に取り扱うことができます。
今回の読書会はここまででした。今回はなんとも濃い内容でした。
セッション
受託開発でAnsibleを導入した話 @Peranikov
www.slideshare.net
会社でAnsibleを試して少し知見が溜まったのでしゃべりました。 触ったと言っても1日ちょっと試しただけですが、それでもきちんと動くものにはなりました。これもAnsibleのシンプルさのおかげだと思っています。
今回のスライドではtaskについてしか触れていませんが、実際にはvars(変数定義)やtemplate(テンプレートエンジンでconfigファイルを動的に変更)などの機能もあるので実運用にはかなうんじゃないかなと思います。
なにより、PostgresモジュールがAnsible自体に組み込まれているのは個人的には凄く大きいです。(外部のPlaybookに依存したりしなくて済む)
Gemの作り方 ~BacklogのAPIを利用して~ @kon_yu さん
Gemまだ作ったことないです... RubyGemsの作り方から公開とハマりどころまで丁寧に解説されているので、実際作ることがあったら参考にしたいです。
おわりに
kawaski.rbのみなさま、NTT-AT様ありがとうございました。次回もまたよろしくおねがいします。