Ruby の ` メソッド

昨日、Ruby の単項演算子について調べていたんですが、` という演算子があったので調べてみました。
そもそも Ruby` は『シェルコマンドを実行する手段』ぐらいしか知らなかったんですが、これって Kernelメソッドだったんですね…。

全然知らなかった…。

[ ` を再定義する]

class X
    def func str
        `#{str}`
    end

    def ` str
        str + str
    end
end

x = X.new
x.send :`, "mami"
# => "mamimami"
x.func "homu"
# => "homuhomu"

メソッド名はそのまま ` という名前で定義することができ、引数には ` ないの文字列が渡されます。
レシーバをつけて呼び出す方法がわからなかったので今回は #send とクラス内から直接呼び出しています。
もしシェルコマンドを実行する場合の ` の挙動を変えたい場合は `Kernel.#`` を再定義すればよさそう。