13

Railsでは、ファイルが既にロードされていると仮定して、my_method コンソールからこの例からどのように呼び出すことができますか?

# some_file.rb
class MyClass < ApplicationController::Base
  def my_method(args)
4

3 に答える 3

30

これを行うもう 1 つの非常に簡単な方法は、ApplicationControllerそれ自体のインスタンスを使用することです。

ApplicationController < ActionController::Base
  def example
    "O HAI"
  end
end

次に、コンソールで次の操作を実行できます。

>> ApplicationController.new.example

これにより、次のように出力されます。

O HAI

requestもちろん、これには、オブジェクト自体など、通常のリクエストでアクセスできるすべてのものにアクセスできないという制限があります。これが必要な場合は、Patrick Klingemann が提案したように、デバッガーを使用できます...個人的には Pry を使用することをお勧めします。

これはおそらくあなたにとっては遅すぎるでしょうが、うまくいけば将来誰かを助けるでしょう.

于 2012-08-29T03:01:16.457 に答える
3

デバッガーを使用します。

あなたの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

于 2012-05-20T05:28:10.723 に答える
1

それはまさに尋ねられた質問ではありませんが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の新しいステップごとに入力し、「リアルタイム」で出力できる変数をいじってみましょう (入力するだけです)。

于 2014-05-29T01:22:51.920 に答える