問題タブ [method-missing]
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-on-rails - Rails:「id」プライマリキーメソッドを呼び出すと「スタックレベルが深すぎます」エラー
これは別の問題の再投稿であり、今回はより分離されています。私の environment.rb ファイルで、次の行を変更しました。
この行に:
それ以来、この呼び出し:
config.cache_classes = false の場合、開発環境で 2 回目に実行すると、「スタック レベルが深すぎます」というエラーで失敗します。config.cache_classes = true の場合、問題は発生しません。このエラーは、active_record/attribute_methods.rb の 252 行付近の次のコードの結果です。
「id」関数の呼び出しは method_missing を再呼び出しし、id が何度も呼び出されるのを防ぐものは何もないため、スタック レベルが深すぎます。
Rails 2.3.8 を使用しています。カテゴリ モデルには、サブカテゴリが多数あります。呼び出しは、上記の行のバリアント (たとえば、Category.first.subcategory_ids、"map" ではなく "each" の使用など) で失敗します。
どんな考えでも大歓迎です。
ありがとう!アミット
ruby-on-rails - Ruby on Railsプラグイン:acts_as_taggable_on_steroids。「method_missing」未定義のローカル変数またはメソッド'acts_as_taggble_on'を取得し続ける
Railsアプリにタグ付けシステムを実装しようとしています。私は人気のあるプラグインacts_as_taggable_on_steroidsを採用し、それをインストールする方法の指示に従いました。次に、タグを付けたいモデルにacts_as_taggableを含めましたが、サーバーを起動しようとするとmethod_missing': undefined local variable or method
、#(NameError)のエラーacts_as_taggable'が発生し続けます。
私はグーグルを見て、作者はacts_as_taggable_onを試すことを提案しましたが、それでも問題は解決しませんでした。私はすでに何時間もこの問題に苦しんでいますが、それでも問題がどこにあるのかわかりません。誰かが光を当ててくれませんか?
助けてくれてありがとう!
ruby - 括弧を使用する場合と使用しない場合の Ruby での method_missing の呼び出しの違い
Ruby の method_missing 宣言で、指定された missing_method が括弧表記を使用して (引数なしで) 呼び出されたかどうかを確立する可能性はありますか?
またはかっこなしの表記法を使用します。
?
非常に具体的なテストの問題を解決するには、これが必要です。
ruby-on-rails - インスタンスがActiveRecordアソシエーションを介して定義されている場合、カスタムmethod_missingは無視されます
さまざまな状態になる可能性のある提出物があり、次のような呼び出しで状態を確認できるmethod_missingオーバーライドを作成しました。
これは素晴らしく機能します。
また、あまり良くないかもしれないさまざまな理由で、Packlet
belongs_toameetingおよびbelongs_tosubmissionというモデルがあります。しかし、私はそれを見つけて驚いた
を返しますNoMethodError
。一方、#draft?
メソッドをにハードコーディングするSubmission
と、上記のメソッド呼び出しが機能します。
インスタンスがActiveRecordアソシエーションを介して定義されている場合でも、method_missingメソッドを認識させるにはどうすればよいですか?
ruby - Rubyを使用してTclDSLを解析します
引数が文字列で囲まれていないTclコードを解析できるようにしたいと思います。
このtclコードを検討してください。
Tclに慣れていない場合foo
は、はメソッド名でbar
あり、は引数です(Tclでは引用符はオプションです)。
前のコードは次のように出力します。
rubyを使用してまったく同じ入力を解析することは可能ですか(bar
引用符で囲まれていないままです)?
同等のルビーコードは次のとおりです。
もちろん、bar
引用されることが期待されているので、到達すると失敗します。
私はいじくり回してみましたmethod_missing
ただし、逆の順序で解析されます。
誰かがこのタイプの問題に対するクリーンな解決策を持っていますか?メソッドを呼び出してデータを読み込むのに必要な作業は字句解析に比べて最小限であるため、文字列のトークン化は避けたいと思います。しかし、私が不可能なことをしようとしているのなら、私は知りたいのです。ありがとう。
ruby - method_missingを使用したRubyブロック
これは、ここでの私の質問のフォローアップであることに注意してください。
次のTclコードを解析しようとしています。
Tclでは、foo
はメソッド名、bar
は引数、残りはで処理される「ブロック」eval
です。
これが私の現在の実装です。
これは以下を出力します:
この例では、ブロックがfoo
メソッドに渡されるとき、それは存在しません。しかし、その中method_missing
には存在します(少なくとも存在しているように見えます)。何が起きてる?
注:私はルビーの括弧の優先順位を認識しており、これが機能することを認識しています。
ただし、かっこは省略したい。それで、これはルビーで(字句解析なしで)可能ですか?
ruby-on-rails - Rails:関連付けを使用する場合、method_missingはモデルで呼び出されません
私の現在のコード:
これは、モデルに存在するメソッドのみを渡すレール内のこのコードが原因で発生します。
これが私が欲しいものです:
どうすればこれを達成できますか?
ruby - ruby で method_missing を含むモジュールを作成する方法
メソッドの欠落を拡張するモジュールがいくつかあります。
これはすべてうまく機能しObjectA.new.hello_there
ます"Hello, hello_there"
。同様に、ObjectB.new.goodbye_xxx
出力します"Goodbye, xxx"
。respond_to?
も機能します。たとえば、ObjectA.new.respond_to? :hello_there
true を返します。
SaysHello
ただし、 と の両方を使用する場合、これはうまく機能しませんSaysGoodbye
。
ObjectC.new.goodbye_aaa
正しく動作しますが、ObjectC.new.hello_a
奇妙な動作をします:
正しく出力され、エラーがスローされます。またrespond_to?
、正しくない場合ObjectC.new.respond_to? :hello_a
は false を返します。
最後に、このクラスを追加します。
怪しい行動も。ObjectD.new.lol_zzz
動作しますが、ObjectD.new.hello_aand ObjectD.new.goodbye_t
は両方とも、正しい文字列を出力した後に名前の例外をスローします。respond_to?
hello および goodbye メソッドでも失敗します。
これをすべて正しく機能させる方法はありますか? method_missing
、 モジュール 、がどのように相互作用しているかについての説明super
も非常に役立ちます。
編集: coreyward が問題を解決しsuper.<method-name>(args...)
ました。定義したすべてのメソッドの代わりに super を使用すると、プログラムは正しく動作します。これがなぜなのかわからないので、これについて別の質問をしましたsuper.<method-name> do in ruby?