在Rails中,假設文件已經加載,可以如何從控制檯調用my_method
這個例子?從Rails中的控制檯調用ApplicationController方法
# some_file.rb
class MyClass < ApplicationController::Base
def my_method(args)
在Rails中,假設文件已經加載,可以如何從控制檯調用my_method
這個例子?從Rails中的控制檯調用ApplicationController方法
# some_file.rb
class MyClass < ApplicationController::Base
def my_method(args)
另一個非常簡單的方法是使用ApplicationController
本身的實例。
ApplicationController < ActionController::Base
def example
"O HAI"
end
end
然後在控制檯中,您可以執行以下操作:
>> ApplicationController.new.example
這將輸出如下:
O HAI
這當然,有沒有訪問的限制適用於正常請求的所有內容,例如request
對象本身。如果你需要這個,因爲帕特里克·克林格曼建議,你可以使用調試器...我個人推薦使用撬:
這可能是太遲了你,但希望它能幫助未來的人。
非常好的解決方案,幫助編寫視圖和控制器測試用例。 –
使用調試器:
在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
寶石進行調試,與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
,並在「實時」中使用可打印的變量(只需鍵入它們)來玩耍!
這實際上聽起來很有趣。但我首先想到的是,控制器內的所有方法都可以被視圖訪問。當您訪問控制檯時,您正在訪問ActiveRecord並訪問您的模型及其方法。正如我所說,這將是我的第一個想法。 – Daniel
http://stackoverflow.com/q/151030/2355112對於同樣的問題有非常好的答案。 – oozzal