Railsでは、ファイルが既にロードされていると仮定して、my_method
コンソールからこの例からどのように呼び出すことができますか?
# some_file.rb
class MyClass < ApplicationController::Base
def my_method(args)
Railsでは、ファイルが既にロードされていると仮定して、my_method
コンソールからこの例からどのように呼び出すことができますか?
# some_file.rb
class MyClass < ApplicationController::Base
def my_method(args)
これを行うもう 1 つの非常に簡単な方法は、ApplicationController
それ自体のインスタンスを使用することです。
ApplicationController < ActionController::Base
def example
"O HAI"
end
end
次に、コンソールで次の操作を実行できます。
>> ApplicationController.new.example
これにより、次のように出力されます。
O HAI
request
もちろん、これには、オブジェクト自体など、通常のリクエストでアクセスできるすべてのものにアクセスできないという制限があります。これが必要な場合は、Patrick Klingemann が提案したように、デバッガーを使用できます...個人的には Pry を使用することをお勧めします。
これはおそらくあなたにとっては遅すぎるでしょうが、うまくいけば将来誰かを助けるでしょう.
デバッガーを使用します。
あなたのGemfile
追加で:
gem 'debugger'
次に、ターミナルから:
> bundle
> rails s --debugger
ヒットしているコントローラーアクションで:
class WidgetsController < ApplicationController
def index
debugger
@widgets = Widget.all
respond_with @widgets
end
end
ブラウザで次の場所に移動するhttp://localhost:3000/widgets
と、ページの読み込みが完了しません。サーバーが実行されているターミナルに戻ると、インタラクティブなデバッグ セッションが開始され、次のコマンドを実行できます。my_method
それはまさに尋ねられた質問ではありませんがpry
、同様に gem でデバッグすることもできますdebugger
。
に追加Gemfile
:
gem "pry"
gem "pry-remote"
gem "pry-stack_explorer"
gem "pry-debugger"
あなたの方法では:
def myMethod
binding.pry
# some code
end
終わり!
メソッドを実行すると、ページ処理が でフリーズしbinding.pry
、pry がプロンプトを引き継ぎます。メソッドn
の新しいステップごとに入力し、「リアルタイム」で出力できる変数をいじってみましょう (入力するだけです)。