レールアプリケーションでは、コントローラの動作メソッド内にブレークポイントを設定した後、一部のgibbereshを入力するとbyebug
、 を入力すると、私のapplication_controller.rbのメソッドが自動的に実行されて印刷されます"未定義のローカル変数またはメソッド"レール内の呼び出し側をデバッグする
この魔法はどうやって起こっていますか?どのように私はこれをトレースんちんぷんかんぷんが入力されたときに...私は、このメソッドの実行を望んでいない...
(byebug) abcd1234abcd1234
WpPost Load (4.8ms) SELECT `wp_posts`.`post_title`, `wp_posts`.`post_date`, `wp_posts`.`post_name` FROM `wp_posts` WHERE `wp_posts`.`post_status` = 'publish' AND (post_date_gmt >= '2017-01-30 23:31:52.437270') ORDER BY post_date DESC LIMIT 3
*** NameError Exception: undefined local variable or method `abcd1234abcd1234' for #<FooController:0x007fa717745bd8>
nil
(byebug)
いくつかのコード
# foo_controller.rb
class FooController < ApplicationController
def show
byebug # I type abcd1234abcd1234 at this prompt
# ...
# application_controller.rb
class ApplicationController < ActionController::Base
before_filter :something
before_filter :something2
before_filter :load_blog_posts, :something3
def ....
end
def load_blog_posts
@wp_posts = WpPost.where(post_status: 'publishh')
.where("post_date_gmt >= ?", Time.now - 1.week)
.order("post_date DESC")
.limit(3)
.select(:post_title, :post_date, :post_name)
end
興味深いことに、私のアプリケーションコントローラには多くのbefore_filtersがあります。最後のフィルタは実際にはWpPostを参照するメソッドへの呼び出しです。 –
ええ、これは間違いなくこの動作を引き起こすフィルタです...問題が解決しますか? –
問題はまだありません...私たちのアプリケーションの重要な部分ですので、私はそのフィルタを削除することはできません。 .. –