問題タブ [class-eval]
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 - module_eval / class_eval / instance_eval はどのように行番号を数えますか
に渡された line_number が見つかりましたがclass_eval
、エラーによって報告された行番号と一致module_eval
しinstance_eval
ません。この動作は、次のように言うruby-docでは説明されていません : (instance_eval
例として使用)
オプションの 2 番目と 3 番目のパラメーターは、コンパイル エラーを報告するときに使用されるファイル名と開始行番号を指定します。
これら 3 つのメソッドclass_eval
はすべて、ファイル名を指定する 2 つの追加のパラメーターmodule_eval
をinstance_eval
受け入れ、エラー メッセージのテキストを設定する lineno パラメーターを指定します。
この質問には、この動作の実用的なデモがあります。
ただし、行番号の計算は説明よりも複雑であることがわかりました。ここにデモがあります
上記のコードは、line_no
渡されたパラメータがinstance_eval
エラーによって報告された行番号ではなく、line_no
.
このパラメーターの正確な動作について疑問に思っていますか?
ruby-on-rails - nil:NilClass の未定義のメソッド `association_class'
私はSpree 2.1で作業しており、新しい支払いゲートウェイを追加しようとしていますが、このエラーはより一般的であるため、ここではSpree自体はそれほど重要ではありません.
( source ) クラスundefined method 'association_class' for nil:NilClass
にいくつかのモジュールを追加した後、そのエラー ( ) が発生しました。Spree::PaymentMethod
spree/payment_method_decorator.rb
(Spree::Core::CalculatedAdjustments
ソース)
(Spree::Gateway
ソース)
残念ながら、現在Spree::PaymentMethod
( source ) は少し壊れています。
なぜこれが起こるのか、それを修正する方法を知っている人はいますか?
実際、私はすでに答えを持っています(数時間の闘争の後)が、誰かが適切な説明でより良い答えを出すかもしれません. おそらく答えは明らかですが、それは私のためではなく、SOに関連するものを見つけることができなかったので、同様のレベルのRoR知識を持つ他の誰かがそれにさらに数時間を費やす必要がないことを願っています.
ruby - define_method と eval を使用した動的メソッド
Rails モデルでやりたいことをよく反映した、いくつかの異なる方法で実装された 2 つのサンプル クラスをまとめました。私の懸念は、どちらの方法を使用する場合の懸念事項があるとしても、何がわからないということです。そして、それらを実装する方法を説明する投稿、またはそれらを使用するときに避ける/注意するための一般的な警告のみを見つけました。私が見つけられなかったのは、これを安全に達成する方法、および私が注意していること、またはこのパターンを避けるべき理由の明確な説明です.
ruby - カスタム定義コンテキストを持つ instance_eval
既存の lib の DSL カスタマイズを作成しようとしていますが、Ruby ブロック コンテキストについて誤解があります。
proc として保存されたブロックがあるとします。
単純にブロックを生成すると、このブロックの自己コンテキストは変更されません
電話すると
このブロックの self は N になり、デフォルトの definee は同じままです
インスタンスで instance_eval を呼び出すとき
some_block のセルフ コンテキストは N インスタンスに切り替わりますが、デフォルトの定義は N インスタンス メタクラスになります
インスタンスのコンテキスト内でブロックを生成し、別の場所にプロキシ定義コンテキストを生成する便利な方法はありますか?
たとえば、内部にいくつかのクラスを持つ Delegator インスタンスがあり、定義されたコンテキストをそれにプロキシしたい:
したがって、Definee は既に DSL を実装しており、instance_eval でカバーしていますが、定義コンテキストが正しくありません。Class_eval は Definee に委任され、MyDelegator のメソッドは呼び出されないため、問題も解決しません。
たぶん、このようなことを行うためのよりエレガントな方法があります。何か案は?
編集:
モジュールから継承されたクラスをデリゲーターとして使用することで、定義コンテキストの切り替えの問題を解決しました。
ruby-on-rails - 予期せぬ入力終了?
次のコードでは、次のようなエラーが発生してsyntax error, unexpected '\n', expecting :: or '[' or '.' (SyntaxError)
いますが、問題の場所がわかりません。
私はclass_eval
間違って使用していますか?
ruby-on-rails - エンジン クラスを再開しようとすると、循環依存関係が発生しますか?
エンジンから派生した Rails のクラスを再度開こうとしています。私は次のことをしました:
次の場所にあります。
これはすべて私のアプリにあり、実行できるはずです:
しかし、私がそうすると、エラーが発生します:
ruby - クラス定義のメソッド名に「self」を明示的に使用
このコードは、Rails Crash Course book からのものです。
のサブクラスは、 getter および setter メソッドを生成したい属性名でメソッドAccessor
を呼び出すことにより、getter および setter メソッドを作成できるという考え方です。accessor
しかし、なぜ in を使用するのself
ですdef self.accessor(attr)
か?
ruby-on-rails - クラスの再オープンが機能する場合に、class_eval が時々使用されるのはなぜですか?
Railsアプリで次の形式のコードに出くわしました
そして、なぜ彼らがそうしなかったのか疑問に思っています
class_eval
新しいコードに渡したいものが何もない場合に使用する利点はありますか?