問題タブ [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.
ruby - Ruby: 組み込みクラスにカスタム プロパティを追加する
質問: Ruby を使用すると、既存のクラスにカスタムメソッドを 簡単に追加できますが、カスタムプロパティを追加するにはどうすればよいですか? これが私がやろうとしていることの例です:
目標は、上記の例で機能しないものが期待どおりに機能するようにクラス定義を構築することです。
更新:(質問を明確にする)元の質問から除外された1つの側面:通常はクラスの初期化メソッドで設定される「デフォルト値」を追加することも目標です。
更新: (なぜこれを行うのか) 通常、配列 (またはエミュレートする組み込みクラス) から継承するカスタム クラスを作成するのは非常に簡単です。この質問は、「テストのみ」のコードから派生したものであり、この一般的に受け入れられるアプローチを無視しようとするものではありません。
jquery - jQuery UI ウィジェットの関数を置き換えたり変更したりできますか? どのように?(モンキーパッチ)
関数の 1 つを置き換えることによって、jQuery UI オブジェクトの機能の一部を微調整したい場合、どうすればそれを実行できますか?
例: jQuery オートコンプリート ウィジェットが提案をレンダリングする方法を変更したいとします。次のようなオートコンプリート オブジェクトのメソッドがあります。
これを交換できますか?
これはMonkey Patchingと呼ばれるかもしれません。
どのように?どの構文を使用しますか?
python - Pythonでのモンキーパッチtime.time()
テストのために、time.time()呼び出しを特定のタイムスタンプに置き換える必要があるアプリケーションがあります。これは、過去にrubyを使用して行ったことがあります。
(ここで利用可能なコード:http://github.com/zemariamm/Back-to-Future/blob/master/back_to_future.rb)
ただし、Pythonを使用してこれを行う方法がわかりません。
ヒントはありますか?乾杯、ゼマリア
python - py2app の処方箋
py2appのドキュメントには__boot__.py
、メインの python スクリプトの前に実行される prescripts が記載されています。setup.py ファイルまたはビルド プロセスで任意の prescript を簡単に指定する方法が見つかりませんでした。
__boot__.py
ただし、手動で「ハッキング」し_run(prescript)
て、メインの前に別のコマンドを追加することはできまし_run(main_script)
たが、うまく機能しているように見えました。ただし、標準の py2app ビルド プロセスを使用する方がはるかに優れています。
私が本質的にやろうとしているのは、メイン スクリプトが起動される前に、sites-packages.zip ファイルにモンキー パッチを適用することです。プリスクリプトは基本的に、サーバー上の更新をチェックし、更新がある場合はダウンロードしてから、site-packages.zip ファイルを上書きします。アプリケーションを最初から再インストールするよりもはるかに迅速です。
何か案は?
ruby-on-rails - プラグインによって提供されるメソッドを使用するために、rake タスクでモデルにモンキーパッチを適用しますか?
最近のいくつかのリファクタリング中に、ユーザー アバターの保存方法を変更しましたが、一度展開すると既存のすべてのユーザーに影響を与えることに気づきませんでした。だから今、私はこのようなことをしてこれを修正するためのレーキタスクを書こうとしています。
それを実行しようとすると、 User:Class の未定義のメソッド `has_attached_file' が取得されます
スクリプト/コンソールでこれを行うことができますが、rake タスクから paperclip プラグインのメソッドを見つけることができないようです。
c++ - Lua + SWIG モンキーパッチ
SWIG を使用して一連のクラスを lua にバインドしました。C++ 自体がモンキー パッチをサポートしていないことはわかっています。また、C++ オブジェクトを変更しようとしているのではなく、単にそれらの lua 表現を変更しようとしているだけです。問題は、lua 側で提示された API を変更できるように、Lua テーブルと SWIG によってエクスポートされたオブジェクトにモンキー パッチを適用し始めたい場合に発生します。
たとえば、次の lua コード:
期待どおりに動作しません。その行の後の動作は、GetEnemies2 ではなく、元の GetEnemies1 と一貫性があります。
どうすればこの問題に対処できますか?
c# - C#モンキーパッチ - 可能ですか?
ロード時に別のアセンブリからクラスにメソッドを挿入する C# アセンブリを作成することは可能ですか? はいの場合、注入されたメソッドは、IronPython などの DLR を使用する言語から利用できますか?
私にはその方法が必要であり、可能であれば IronPython の再コンパイルを避けたいと考えています。
ruby - jekyll - github ページで、自動的にページに何かを追加する
Jekyllのページの URL を取得する方法はありますか? about.html
ページとdownload.html
は、次の階層のような非ポスト テキスタイル ファイルを意味します。
私はこのようなことをしたいと思います:
投稿の to_liquid メソッドに URL が含まれているため、これは投稿で機能します。一方、ページにはそのようなものは含まれていないようです-それらには必要なプロパティがあります(またはそう思われます)が、それらをエクスポートしませんto_liquid
; そのように再定義したいと思います。これを行う方法はありますか?
jekyll_extensionsを見つけましたが、ターゲット環境 (github ページ) で動作するかどうかわかりません。
可能であれば、すべての yaml ヘッドに url パラメーターを含める必要は避けたいと思います。
どうもありがとう!
ruby - ルビーの宝石が競合することはありますか?
ruby の初心者として、gem 同士が競合することはあるのだろうかと考えていました。たとえば、2 つの gem が配列の << メソッドをオーバーライドした場合、どちらが勝つでしょうか、それともこれを止めるものはありますか?
ありがとう
ruby - ルビーモンキーパッチの落とし穴
ルビーで基本クラスを拡張するのが得策ではない理由の例を探しています。なぜそれが慎重に使用される武器であるのかを何人かの人々に示す必要があります。
共有できるホラーストーリーはありますか?