問題タブ [alias-method]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
3717 参照

ruby - `alias_method` プライベート メソッド

client_options2 つのインターフェイス メソッドとを公開するクラスがuser_optionsあり、この祖先レベルでは、それらは と同等default_optionsです。default_options他の開発者に直接実装してほしくないので、プライベートです。

数行のコードを節約するために、メソッドにエイリアスを設定したいと思いました。

ただし、alias_methodパブリック メソッドのエイリアスのみです。

このブログでプライベート メソッドをエイリアスする方法を見つけました。

しかし、それは少し読みにくいです。

プライベートメソッドをエイリアスするためのより直接的な解決策はありますか?

0 投票する
2 に答える
218 参照

ruby - モジュールをインクルードするときの __callee__ の予期しない値 – これは Ruby のバグですか?

によって作成されたメソッドを介して呼び出された場合、 は古いメソッドの名前 (ここでは )alias_method__callee__無視し、xxx次のように新しいメソッドの名前を返します。

xxxがスーパークラスから継承されている場合でも、この動作は保持されます。

xxx上記の両方を考えると、モジュールを介して含まれている場合も同じ動作が保持されると予想されます。ただし、そうではありません。

戻り値は:bazではなくになると思い:xxxます。


上記のコードは、Ruby 2.3.1p112 を使用して実行されました。これは の実装のバグ__callee__ですか? それとものalias_method?そうでない場合、モジュールのインクルードが異なる動作をする理由を誰か説明できますか?


更新 1

これをRubyバグトラッカーに投稿して、答えをかき立てようとしました。


更新 2

どうやら、この問題に驚いたのは私だけではないようです。リビジョン 50728 (バグ 11046:__callee__孤立した proc で不正なメソッド名を返す) を解決するためのものでした) が関連しているのではないかと思います。

0 投票する
0 に答える
158 参照

ruby - Rails Monkey Patch の alias_method でメソッド エラーが発生しない

RailsRails.cache.fetch/readメソッドにパッチを適用し、フェッチ/読み取りが発生するたびに追加のログを追加しようとしていますが、答えをグーグルできないという他のエラーが発生しました。

これが私のモンキーパッチコードです

トラヴィスが逮捕された場所

どこかに呼び出しているコードがありますB.cache.each do |x| blablabla end

問題は、私が間違った方法で何をしているのかです。Store の下の 2 つのメソッドにモンキー パッチを適用しただけですが、.cache を呼び出しているすべてのものを上書きしているように見えるのはなぜですか