diary

I like Hatena Star with a text selection.

2020-10-21

while true; do git fetch origin; sleep 300; done を適当にバックグラウンドで動かしてみることにした。 ほんとうは全てのghq管理下のリポジトリが勝手に更新されていてほしいのだけど、そうもそれはそれで大変そうなのでとりあえずメインで開発している1レポジトリに対して手で実行している


twitter.com

ていねいな暮らしは絶対的な善ではなくて、私は手を抜いて雑に生きていくほうが性に合っているからあまりていねいな暮らしを目指しても意味がないなと気がついたツイート


module Service
  extend self

  def call(user:, entry:)
    binding.local_variables.each do |lv|
      define_method(lv) {eval lv.to_s}
    end

    do_something

    binding.local_variables.each do |lv|
      undef_method(lv)
    end
  end

  private def do_something
    p user
    p entry
  end
end

Service.call(user: 'foo', entry: 'bar')

ServiceクラスではService.callだけをexposeしたいけど一時的な状態を持つためにclassを作るとService#callもexposeされてしまって嫌…という話から発展した大喜利コード。

callしている間だけメソッドが生えていれば良いのではという気持ちになって書いてみた。これネストするとだめですね。(適当にスタックすればなんとかなるかもしれない)