我想通过rails控制台打开irb打印的一些线条。我已经看到很多关于如何实现它的SO问题。但是我没有得到任何结果。
下面是代码 -
def show
puts 'in show method'
@post = Feed.find_by_id params[:id]
puts @post.inspect
redirect_to root_path unless @post.present?
end
现在我已经通过命令rails server
打开了服务器。另外,在另一个终端我发出命令rails console
,它打开了irb提示符。当我在浏览器中运行localhost:3000/posts/82
时,它会给出正确的帖子,但控制台中没有显示任何内容。我错过了什么步骤?我想在调用特定方法时在控制台中打印一些东西。
调试的最佳方法是使用debugger
命令。
如果您使用的是ruby 2.0或更高版本,则必须使用gem 'byebug'
,如果您使用的是1.9或更低版本,那么gem ruby-debug
然后,当您在开发模式下运行服务器时,服务器将在到达debugger
时停止,允许您查看对象的状态并进行修改(比使用puts
好得多)
程序将停在服务器运行的同一窗口中。
一些基本命令:
有关调试的更多信息:http://guides.rubyonrails.org/debugging_rails_applications.html
puts 'in show method'
中的line 2
不会显示rails console
的输出。相反,它显示在你做rails server
的同一终端的输出。它们可能会因为输出太多而丢失,所以试着在那里找到它。
Rails.logger.debug "in show method"
等$ cd rails_app_root
$ tail -f log/development.log
要么
$ cd rails_app_root
$ less +F log/development.log
在那里,您将找到控制台的所有输出。
尝试使用Rails.logger
Rails.logger.info“我希望在开发日志中看到的一些调试信息.------#{@post.inspect}”
它将在日志文件中打印@post值。
我是puts
调试的忠实粉丝。例如;
def index
method = Kernel.instance_method(:method)
p method.bind(request).call(:headers).source_location
@users = User.all
end
上面的代码片段可以帮助您找到实现方法的位置:
Processing by UsersController#index as */*
["/Users/aaron/git/rails/actionpack/lib/action_dispatch/http/request.rb", 201]
你可以找到更酷的puts
调试here。