問題タブ [monkeypatching]

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 投票する
1 に答える
1981 参照

ruby-on-rails - 既存の宝石 (Rails エンジン) をモンキーパッチする方法は?

Ruby と Rails 3 を使い始めています。使用したい Rails エンジン (Gem としてパッケージ化されています) がありますが、思い通りに動作しません。少し変更を加えたいのですが、独自のフォーク バージョンを作成する必要はありません。これがモンキーパッチが役立つところだと思います。

Ruby を初めて使用する (そして PHP のバックグラウンドを持つ) モンキー パッチは、私にとって新しい概念です。既存の gem にモンキー パッチを適用するにはどうすればよいですか? また、変更を整理するにはどうすればよいでしょうか? これに対する「ベストプラクティス」のアプローチを探しています。

0 投票する
8 に答える
261701 参照

python - モンキーパッチとは?

理解しようとしているのですが、モンキーパッチまたはモンキーパッチとは何ですか?

それは、メソッド/演算子のオーバーロードまたは委任のようなものですか?

これらと何か共通点はありますか?

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

ruby - モジュールでクラスを開く

次のコマンドを実行して、Stringクラスにメソッドを追加できることはわかっています。

そしてこれは戻ります4

文字列を受け取る関数を含むモジュールが欲しいのですが、この文字列でメソッドを呼び出すことができdo_somethingます(たとえば、以下を参照)-それは可能ですか?

編集:機能していないサンプルコードを追加しました

これにより、エラーが発生します。undefined method 'do_something' for "hello":String (NoMethodError)

0 投票する
1 に答える
486 参照

ruby - private メソッドの分割を作成するのはどの monkeypatch ですか?

Ruby: Private method called for 3:Fixnumおよびprivate method `split' called for nil:NilClass (NoMethodError) という質問は、それぞれおよびオブジェクトのprivate メソッドについて言及splitしています。FixnumNilClass

このプライベートsplitメソッドはモンキー パッチが適用された疑似キーワードですか ( printand などputs)? もしそうなら、それを追加したのは何ですか?また、なぜ既存のメソッド名を使用したのStringですか?

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

java - JRuby - 貧乏人のセキュリティマネージャーとしてモンキーパッチ?

ある種のアクセス制御を作成するために、すべての Ruby コア クラス (ファイル、カーネル、IO など) を選択的にモンキー パッチすることに何か問題がありますか?

私の JVM は信頼できないユーザー コードを実行することになり、何らかの理由でJava のセキュリティ マネージャーを使用したくありません。そこで、独自のサンドボックスを実装するために、Ruby オープン クラスに目を向けました。ほぼすべてのコア クラスにモンキー パッチを適用しましたが、何らかの理由で、これでは十分に安全ではないと感じています。私は妄想的ですか、それともこれは本当に悪い解決策ですか?

関連する質問で、Ruby ランタイムから Java を選択的に除外する方法はありますか。私のライブラリには Java が必要ですが、ユーザーが Java にアクセスできないようにしたくありません。私は自分のライブラリに Java を含めましたが、これはユーザー スクリプトに「必要」です。

どんな助けでも大歓迎です。ありがとうございました!:)

0 投票する
1 に答える
5833 参照

ruby - Rubyを正しくモンキーパッチする方法は?

標準ライブラリのNetクラスの行にモンキーパッチを適用しようとしています。プロジェクトのlibフォルダーにpatches.rbというファイルを作成し、これを追加しました

しかし、それは機能しません。私はこれを正しくやっていますか?(これは、継承階層と正確に一致します。)

編集:問題の一部は、ファイルをinitalizersフォルダーに配置する必要があったことです。しかし、それでも同じエラーが表示されます。

0 投票する
1 に答える
555 参照

ruby-on-rails - Rails 2.3+Rake: rake タスクで使用されるクラスのモンキー パッチ メソッド

rake タスクで使用されるクラスのメソッドにどのようにモンキー パッチを適用しますか? Synthesis::AssetPackage#compress_js特に、asset:packager プラグインのメソッドを再定義したいと考えています。に再定義を配置しようとしましたRakefileRAILS_ROOT、うまくいきませんでした。プラグインを直接変更したくありません。

0 投票する
5 に答える
7226 参照

javascript - C#のようなjavascriptの部分的なクラス動作や、Rubyのようなモンキーパッチを与えることは可能ですか?

部分クラスの背後にある考え方は、特定の機能をグループ化できるということです。C#でのこの最良の例は、コントロール定義を1つのファイルに配置し、イベントハンドラーを別のファイルに配置することです。Rubyでは、モンキーパッチを使用して関数全体などを置き換え、コードに必要な処理を実行させることができます。

これを行う理由はまだわかりませんが、Webが向上するにつれて、より多くのアプリケーションがクライアント側に配置されるようになるので、サーバー側の言語で見つけた優れた機能のいくつかがあるかどうか疑問に思っています。 Javascriptでも使用できます。

誰か知っている?

0 投票する
4 に答える
1288 参照

python - 新しい関数へのモンキー パッチ __del__

特定のデバッグ目的で、任意のオブジェクトのdel関数をラップして、オブジェクトの最後の値をファイルに書き込むなどの追加のタスクを実行したいと考えています。

理想的には、monkey(x) と書きたいと思います。これは、x が削除されたときに x の最終値が出力されることを意味する必要があります。

これで、 delはクラス メソッドであることがわかりました。したがって、次が始まりです。

ただし、特定のオブジェクトのみをモンキーしたい場合は、クラスを動的に新しいものに書き換える必要があると思いますか?! さらに、組み込み型のdelにアクセスできないため、とにかくこれを行う必要がありますか?

誰でもそれを実装する方法を知っていますか?