ようへいの日々精進XP

よかろうもん

2018 年 02 月 19 日(月)

ジョギング

  • 香椎浜 x 2 周
  • んー, なんだかなーって感じ

日課

  • (腕立て x 50 + 腹筋 x 30) x 3

夕飯

  • 豚角煮
  • 一晩寝かせてさらに美味しくなっていたけど, もう少し甘みが欲しいなあと思ったり

今日のるびぃ ~ awspec の issue に挑む (2) ~

どんな issue だったか

github.com

Elasticache for Redis のキャッシュパラメータグループ timeout というパラメータを its メソッドでテストしようとした場合に, Object#timeout が呼ばれてしまうというもの.

[再掲] なんでこんな事が起こるのか

ここからはあくまでも自分の知識レベルで書いた妄想.

  • テストケースで対象となるパラメータ名は method_missing で捕捉している
  • method_missing を利用することで, パラメータ名を意識することなく実装出来る
  • ただ, メソッドが存在しない場合には継承しているクラスやモジュールを遡ってメソッドを探索する
  • メソッドを探索した結果, Object#timeout を呼びだそうとしてしまっていた

プルリクエス

Object#timeout を未定義するプルリクエストを送ったところ, @K1Low さんにレビューしてもらったところ, 以下のようにコメントをもらった.

github.com

Awspec::Type::Base 以下で timeout メソッドを undef したほうが良いとのアドバイスを頂いた. なるほど, Awspec::Type::Base 以下で適用することで, Awspec::Type::Base 内だけで Object#timeout を未定義状態にして, 他の処理への影響を最小限に抑える意図があると考えている.

ということで, 以下のように修正をした.

https://github.com/k1LoW/awspec/pull/353/files#diff-1eb27b1d1908fc06e5d70107de96141a

シンプルに解決出来た気がする.

ということで

マージ してもらった! 有難うございます!

ふむふむ.