繁体   English   中英

如何使用rails控制台调试并放入应用程序

[英]How to debug using rails console and puts in application

我想通过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 server 另外,在另一个终端我给命令rails console ,它打开了irb提示符。 在浏览器中我运行localhost:3000/posts/82它会给出正确的帖子,但控制台中没有显示任何内容。 我错过了什么步骤? 我想在调用特定方法时在控制台中打印一些东西。

调试的最佳方法是使用debugger命令。

如果您使用的是ruby 2.0或更高版本,则必须使用gem 'byebug' ,如果您使用的是1.9或更低版本,那么gem ruby-debug

然后,当您在开发模式下运行服务器时,服务器将在到达debugger时停止,允许您查看对象的状态并对其进行修改(比仅使用puts更好)

程序将停在服务器运行的同一窗口中。

一些基本命令:

  • c继续执行,直到找到下一个调试器
  • n运行下一个命令。 如果是函数则执行函数
  • s进入下一个命令。 如果它是一个函数,你将进入函数并查看变量
  • 显示每个步骤的表达式显示您编写的表达式的结果(在调试循环时非常有用)
  • undisplay expression_number停止显示表达式
  • display显示所有正在显示的表达式
  • list显示正在执行的源代码
  • help显示可用命令help command_name显示有关命令的详细信息

有关调试的更多信息: http//guides.rubyonrails.org/debugging_rails_applications.html

line 2puts 'in show method'将不会显示rails console的输出。 相反,它显示在您执行rails server的同一终端中的输出。 它们可能会因为输出太多而丢失,所以试着在那里找到它。

  1. Rails.logger.debug "in show method"使用Rails.logger.debug "in show method"等。
  2. 在终端尾部log / development.log中的第二个选项卡中

     $ 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调试这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM