問題タブ [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.
javascript - Monkey が CKEditor にパッチを適用して YouTube 動画を埋め込む
YouTubeの動画を直接埋め込めるようにCKEditorを設定しようとしています...提案されたパッチがあるのを見ましたが、元のCKEditorディストリビューションをそのまま維持したいので、CKEditorを「モンキーパッチ」することは可能かどうか疑問に思っていました.これにより、ユーザーが Flash ダイアログ内に YouTube の URL を入力すると、URL が変換されて埋め込みが可能になります。
私はこれを試しました:
f
しかし、コード内で が使用されてthis
おり、私の「パッチ」がそれを変更しているため、機能しません...
flash - Flexでswcクラスにモンキーパッチまたはオーバーライドする方法は?
Axiisプロジェクトのswcを使用して、作業中のプロジェクトの視覚化を表示しています。ライブラリswcを再コンパイルするのが簡単な解決策になるバグに遭遇しましたが、swcのバグのあるバージョンしか使用できません。
Axiisソースを持っていて、バグが修正されたバージョンをコンパイルしましたが、クライアントのバージョン制限のために使用できません。
更新されたActionscriptクラス/ファイルをコードで使用してswcクラスをオーバーライドする方法を知っている人はいますか?
python - Pythonクラスを別のクラスのメソッドで装飾(モンキーパッチ...)する方法は?
httplib.HTTPMessage
およびemail.message.Message
classes[1]は、RFC822ヘッダー解析のメソッドを実装します。残念ながら、それらには異なる実装があり[2]、同じレベルの機能を提供していません。
私を悩ませている1つの例はそれです:
httplib.HTTPMessage
に存在するget_filename
メソッドがありません。これにより、ヘッダーemail.Message
からファイル名を簡単に取得できます。Content-disposition: attachment; filename="fghi.xyz"
httplib.HTTPMessage
getparam
、getplist
およびメソッドがありますが、AFAIKですが、ヘッダー解析parseplist
の外部では使用できません。content-type
email.Message
またはget_param
などのパラメータを使用してRFC822ヘッダーを解析する一般的なメソッドがあります。content-disposition
content-type
したがって、get_filename
またはget_param
のメソッドが必要email.message.Message
ですhttplib.HTTPMessage
が、もちろん、httplib.HTTPMessage
標準ライブラリにあるため、パッチを適用することはできません...:-q
そして最後に、ここにデコレータの主題があります... :-)
不足している解析メソッドでmonkeypatch_http_message
を装飾する関数を正常に作成しました。httplib.HTTPMessage
今私はすることができます:
ここでの問題は、装飾メソッドのコードをソースクラスから文字通りコピーしたことです。これは避けたいと思います。
そこで、ソースメソッドを参照して装飾を試みました。
しかし、それは私に与えます:
私は今頭を悩ませています...文字通りソースメソッドをコピーせずにクラスを装飾するにはどうすればよいですか?
助言がありますか ?:-)
よろしく、
ジョージ・マーティン
Python2.6の場合。本番環境では2.7も3.xも使用できません。
httplib.HTTPMessage
から継承しmimetools.Message
、独自の実装がありますrfc822.Message
。email.Message
ruby - アンダースコアで始まらないRubyメソッドを再定義することは理論的に安全ですか?
たとえば、オブジェクトのIDが何であるかを本当に知る必要がある場合はObject#object_id
常に存在するため、変更することは理論的に安全ですか?Object#__id__
背景: object_idの別名は何ですか?
python - Pythonのプロパティでダックパンチ
プロパティhttp://docs.python.org/library/functions.html#propertyをオブジェクト (クラスの特定のインスタンス)に追加できるようにしたいと考えています。これは可能ですか?
Python でのダック パンチング/モンキー パッチングに関するその他の質問:
更新:コメントでデルナンが回答
python - Djangoが「完全にロードされた」後に任意のコードを実行する方法
Django環境が「完全にロード」された後、いくつかの非常に単純なタスクを実行する必要があります。
具体的にはSignal.disconnect()
、サードパーティのライブラリによってデフォルトで設定されているDjango Signalsやconnect
独自のSignalsなどを実行する必要があります。また、別のライブラリのDjangoモデルに便利な機能を追加するために、 「モンキーパッチ」を実行する必要があります。
私はDjangoアプリの__init__.py
ファイルでこのようなことを行ってきました。これはモンキーパッチでは正常に機能しているようですが、Signalの切断では機能しません。問題はタイミングの1つであるように思われます。何らかの理由で、Signal.connect()
私が試した後、サードパーティライブラリは常にそれを呼び出してSignal.disconnect()
いるようです。
したがって、2つの質問:
INSTALLED_APPS
アプリの__init__.py
モジュールが読み込まれる順序に基づく保証はありますか?
Djangoアプリが完全にメモリにロードされた後に実行する必要があるロジックを配置する適切な場所はありますか?
ruby-on-rails-3 - 監視リクエストのロギングを最小限に抑えるにはどうすればよいですか?
私の Rails アプリは、ヘルス チェックのために毎分 ping されます。エラーが発生しない限り、これらをログから除外したいと考えています。Rails 2.3.5 では、application_controller.rb でこれを使用してロガーを設定することで、これを行うことができました。
しかし、これは Rails 3.0.5 では機能しません。
Rails::Rack::Dispatch で before_dispatch と after_dispatch をモンキーパッチすることで、新しいソリューションをまとめることができました。
config/initializers/monkey_patch.rb にパッチを置きました
これは必要に応じて正確に機能します。ログにこの要求が表示されません。
http://mydomain.com?__no_logging__=true
ただし、他のすべてのリクエストは影響を受けずにログに残ります
しかし、まだ 2 つの問題があります。
1.コメントアウトする必要がありました:
このエラーが発生するため:
これで問題ないことがわかりました。問題のあるメソッド「request.filtered_path」は、私が使用している Rails 3.0.5 には存在しません。私はうっかり自分のクラスを Rails 3.1.0.beta からコピーしましたが、これはfiltered_path を定義しています。Rails 3.0.5 は、上記のように request.fullpath を使用します。
2.コメントアウトする必要がありました
このエラーが発生するため:
上記の行を追加して、この2番目の問題を解決しました
私はモンキーパッチを初めて使用し、パッチでfiltered_pathまたはLogger::Errorを定義する方法を理解できません。他の要件を試しましたが、まだ運がありません。
また、私のプロジェクトでこのモンキー パッチを使用することの堅牢性についてもアドバイスをお願いします。これを行うより良い方法はありますか?
ログの変更を信じていない人がいることは知っていますが、リクエスト中にエラーが発生しない限り、これらすべての ping をログに記録したくありません。
django - モンキーパッチを適用したdjangoauthのログイン、テストが失敗するようになりました
私のアプリは、django.contrib.auth.viewsのログインビューとログアウトビューをいくつかの基本的な監査/ログ機能でラップしようとしています。私はdjango-axesプロジェクトで説明されている処方箋に従っており、サーバーやその他のテストで実行すると、問題なく透過的に期待どおりに機能します。
コードは次のようになります。
と
URL:
ただし、ビルドワークフローでは、django.contrib.auth.tests.viewsでいくつかの問題が発生します。
具体的には、これらはdjango.contrib.authで失敗するテストです。
ラップされたログインモンキーパッチを含めると、これら2つのテストのみが失敗します。
django authテストのreverse()呼び出しは、パッチが適用されていない関数の動作とは異なる動作をするようです。
ロギングをラップするためにこのルートを使用するのと、django 1.3の新しい認証シグナルを使用するためにこのルートを使用する理由は、そこに提供されているロギングメソッドは、間違った試行が発生した場合にのみ通知するためです。その不適切なリクエストに関する追加情報をログに記録します。その場合、認証フォームにパッチを適用することは役に立たなかったため、ログイン機能をラップする必要があります。
ログイン機能のラップで何か問題がありますか?それとも、全体的な機能に変更がないにもかかわらず、他の副作用のためにテストが失敗した場合に予想されることですか?
編集:私はpython 2.6.4、django1.2.5を実行しています
django - Django テスト:その model.ForeignKey プロパティをスタブする方法は?
別のモデルへの外部キーを持つモデルが django にあり、単体テスト中に 2 つのモデルの密結合を避け、毎回異なる値を返す他のモデルのスタブを作成したいと考えています。
考案された例:
上記の例:
今、私は update_mood() 呼び出しを行った後、Wolf().moon プロパティをテストしたいと思います。Moon モデルには実際にはまったく触れずに、そのフェーズを把握するためにあらゆる種類の外部システムに出て行く非常に複雑なモデルであるためです。 .
通常、これにはモンキー パッチを使用しますが、.mood はプロパティであるため、モンキー パッチの方法で実際に割り当てることはできません。
ヘルプ。
gem - Rails 3: gem でメソッドをオーバーライドする方法
gem のメソッドの 1 つにカスタム コードを追加したいと考えています。Rails 2.3.8 では、config/initializers ディレクトリの下に .rb ファイルを追加し、すべてが完全に機能しました。
Rail3 に移行してから、以前は機能していたものが機能しなくなりました。config/initializers と /lib の下に mongoid_slug.rb を追加して、application.rb の /lib パスを auto_load してみました。どちらも機能しませんでした。
内部 mongoid_slug.rb 私が試した:
と
それでも、両方とも失敗しました。Rails3 で gem にモンキー パッチを適用する方法について、誰かヒントを教えてください。ありがとう!