在 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)
另一种非常简单的方法是使用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
,并使用可以“实时”打印(只需键入)的变量!