Railsでは、ファイルが既にロードされていると仮定して、コンソールからこの例のmy_method
をどのように呼び出すことができますか?RailsのConsoleからApplicationControllerメソッドを呼び出す
# some_file.rb
class MyClass < ApplicationController::Base
def my_method(args)
Railsでは、ファイルが既にロードされていると仮定して、コンソールからこの例のmy_method
をどのように呼び出すことができますか?RailsのConsoleからApplicationControllerメソッドを呼び出す
# 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
オブジェクト自体のような、通常の要求になるすべてのものに適用されます。
これはあなたのための非常に遅すぎる可能性があります:あなたはこれを必要とする場合はパトリック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
私は実際にデバッグを忘れてしまいました。そのようなサーバーを起動するメソッドにアクセスすることはできません。あなたは次のことをする必要があります:rails s --debugger.And場合でも、あなたが得る唯一の応答は "ちょうどApplicationControllerメソッドを打つ"です...実際の出力なし – Daniel
私は眠りに行った - いい視点ね。私はあなたのコメントの2番目の文を理解しているか分からない。 –
私は私たちのために設定されたケースマテリアルを再現しようとしましたが、私が得るのはそのメッセージです...私はそれを呼び出すと実際に何が起こっているのかを実際に確認することはできません。 。 – Daniel
これはまさに質問された質問ではありませんが、debugger
と同様にpry
宝石でデバッグすることもできます。 Gemfile
に
追加:あなたの方法では
gem "pry"
gem "pry-remote"
gem "pry-stack_explorer"
gem "pry-debugger"
:
def myMethod
binding.pry
# some code
end
を完了!
メソッドを実行すると、ページ処理はbinding.pry
でフリーズし、プロンプトが引き継がれます。メソッドの新しいステップごとに「n
」と入力し、「リアルタイム」で印刷可能な変数を使用して遊んでください。
実際は興味深いように聞こえますが、私の最初の考えは、コントローラ内のすべてのメソッドがビューによってアクセスされるということです。コンソールにアクセスすると、ActiveRecordにアクセスして、モデルとそのメソッドにアクセスできます。私が言ったように、これが私の最初の考えです。 – Daniel
http://stackoverflow.com/q/151030/2355112同じ問題に関して本当に良い回答があります。 – oozzal