13

在 Rails 中,假设文件已经加载,如何my_method 从控制台调用这个示例?

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

3 回答 3

30

另一种非常简单的方法是使用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

这不完全是问的问题,但您也可以使用prygem 进行调试,类似于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 回答