問題タブ [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 に答える
883 参照

python - Pythonでのモンキーパッチtime.time()

テストのために、time.time()呼び出しを特定のタイムスタンプに置き換える必要があるアプリケーションがあります。これは、過去にrubyを使用して行ったことがあります。

(ここで利用可能なコード:http://github.com/zemariamm/Back-to-Future/blob/master/back_to_future.rb

ただし、Pythonを使用してこれを行う方法がわかりません。

ヒントはありますか?乾杯、ゼマリア

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

python - py2app の処方箋

py2appのドキュメントには__boot__.py、メインの python スクリプトの前に実行される prescripts が記載されています。setup.py ファイルまたはビルド プロセスで任意の prescript を簡単に指定する方法が見つかりませんでした。

__boot__.pyただし、手動で「ハッキング」し_run(prescript)て、メインの前に別のコマンドを追加することはできまし_run(main_script)たが、うまく機能しているように見えました。ただし、標準の py2app ビルド プロセスを使用する方がはるかに優れています。

私が本質的にやろうとしているのは、メイン スクリプトが起動される前に、sites-packages.zip ファイルにモンキー パッチを適用することです。プリスクリプトは基本的に、サーバー上の更新をチェックし、更新がある場合はダウンロードしてから、site-packages.zip ファイルを上書きします。アプリケーションを最初から再インストールするよりもはるかに迅速です。

何か案は?

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

ruby-on-rails - プラグインによって提供されるメソッドを使用するために、rake タスクでモデルにモンキーパッチを適用しますか?

最近のいくつかのリファクタリング中に、ユーザー アバターの保存方法を変更しましたが、一度展開すると既存のすべてのユーザーに影響を与えることに気づきませんでした。だから今、私はこのようなことをしてこれを修正するためのレーキタスクを書こうとしています。

それを実行しようとすると、 User:Class の未定義のメソッド `has_attached_file' が取得されます

スクリプト/コンソールでこれを行うことができますが、rake タスクから paperclip プラグインのメソッドを見つけることができないようです。

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

c++ - Lua + SWIG モンキーパッチ

SWIG を使用して一連のクラスを lua にバインドしました。C++ 自体がモンキー パッチをサポートしていないことはわかっています。また、C++ オブジェクトを変更しようとしているのではなく、単にそれらの lua 表現を変更しようとしているだけです。問題は、lua 側で提示された API を変更できるように、Lua テーブルと SWIG によってエクスポートされたオブジェクトにモンキー パッチを適用し始めたい場合に発生します。

たとえば、次の lua コード:

期待どおりに動作しません。その行の後の動作は、GetEnemies2 ではなく、元の GetEnemies1 と一貫性があります。

どうすればこの問題に対処できますか?

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

c# - C#モンキーパッチ - 可能ですか?

ロード時に別のアセンブリからクラスにメソッドを挿入する C# アセンブリを作成することは可能ですか? はいの場合、注入されたメソッドは、IronPython などの DLR を使用する言語から利用できますか?

私にはその方法が必要であり、可能であれば IronPython の再コンパイルを避けたいと考えています。

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

ruby - jekyll - github ページで、自動的にページに何かを追加する

Jekyllのページの URL を取得する方法はありますか? about.htmlページとdownload.htmlは、次の階層のような非ポスト テキスタイル ファイルを意味します。

私はこのようなことをしたいと思います:

投稿の to_liquid メソッドに URL が含まれているため、これは投稿で機能します。一方、ページにはそのようなものは含まれていないようです-それらには必要なプロパティがあります(またはそう思われます)が、それらをエクスポートしませんto_liquid; そのように再定義したいと思います。これを行う方法はありますか?

jekyll_extensionsを見つけましたが、ターゲット環境 (github ページ) で動作するかどうかわかりません。

可能であれば、すべての yaml ヘッドに url パラメーターを含める必要は避けたいと思います。

どうもありがとう!

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

ruby - ルビーの宝石が競合することはありますか?

ruby の初心者として、gem 同士が競合することはあるのだろうかと考えていました。たとえば、2 つの gem が配列の << メソッドをオーバーライドした場合、どちらが勝つでしょうか、それともこれを止めるものはありますか?

ありがとう

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

ruby - ルビーモンキーパッチの落とし穴

ルビーで基本クラスを拡張するのが得策ではない理由の例を探しています。なぜそれが慎重に使用される武器であるのかを何人かの人々に示す必要があります。

共有できるホラーストーリーはありますか?

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

python - モンキーパッチのstdlibメソッドはPythonの良い習慣ですか?

時間の経過とともに、stdlib制限を克服したり、不足している機能を追加したりするために、Pythonのいくつかのメソッドをオーバーライドする必要があることに気付きました。

いずれの場合も、ラッパー関数を追加し、モジュールの元のメソッドをラッパーに置き換えました(ラッパーは元のメソッドを呼び出していました)。

なぜ私はこれをしましたか?メソッドへのすべての呼び出しが、他のサードパーティモジュールから呼び出された場合でも、私の新しいバージョンを使用していることを確認してください。

モンキーパッチは悪いことかもしれませんが、私の質問は、注意して使用した場合にこれが役立つかどうかです。つまり:

  • 元のモジュールが更新されたときに何も欠落していないことを保証して、元のメソッドを引き続き呼び出します
  • メソッドの元の「意味」を変更していません

例:

このようなことをすることは、私にはまともなオーバーライドのように見えますが、他の人がそれらをどのように見ているか、特に許容できるモンキーパッチと見なされるべきものとそうでないものを確認したいと思います。

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

python - Pythonでポインタ型の動作を取得するにはどうすればよいですか?

関数のリストをテストするテストケースを書きたいと思います。これが私がやりたいことの例です:

達成したいことは次のとおりです。
ステップ1)ローカルメソッド変数をmethod_listの各項目に割り当てます
。ステップ2)メソッドにモンキーパッチを適用します。この例では、mock.Mockオブジェクトを使用しています

実際に発生するのは次のとおりです。
ステップ1)メソッドがmethod_listからアイテムに正常に割り当てられます-OK
ステップ2)メソッドがオブジェクトに割り当てられますMock()-NOK

ステップ2で必要だったのは、method_listからアイテムを取得することでした。たとえばmethod1をMock()オブジェクトに割り当てます。最終的には、methodとmethod1の両方が同じMock()オブジェクトを指すことになります。

私が本質的に行っているのはa=b
a = c
であり、c==bを期待していることに気づきました。

どういうわけかbへのポインタを取得しないと、これは実際には不可能だと思いますか?