在Rails中从控制台调用ApplicationController方法

时间:2012-05-20 02:36:08

标签: ruby-on-rails ruby ruby-on-rails-3

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

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

3 个答案:

答案 0 :(得分:29)

另一种非常简单的方法是使用ApplicationController本身的实例。

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

然后在控制台中,您可以执行以下操作:

>> ApplicationController.new.example

这将输出以下内容:

O HAI

当然,这限制了无法访问正常请求所能提供的所有内容,例如request对象本身。如果你需要这个,就像Patrick Klingemann建议的那样,你可以使用调试器...我个人推荐使用Pry:

对你来说这可能为时已晚,但希望将来可以帮助某人。

答案 1 :(得分: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

答案 2 :(得分:0)

这不是问题,但您也可以使用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,并在“实时”中使用可以打印的变量(只需键入它们)!