0 0

rails 程序如何debug3

想知道 rails 有没有 像 php那样  通过 echo 打印出字来的方法。 如果ruby  controller.rb会报错。在页面输 puts 又没有效果。 怎么办好?

问题补充:
u177734357 写道
用rdebug-ide吧

一直都是在vim 上开发的。 不打算换成ide。不好意思。我相信一定有方法。但是还没有找到。

问题补充:
tiroc 写道
你可一使用p方法在controller或者其他地方打印信息,View以外的地方使用p会打印到日志中。
在config/environments/development.rb中设置日志输出到终端,看起来会方便一些:
  config.logger = Logger.new(STDOUT)

你好,每当我运行 ruby controller.rb的时候总会有错下错误提示
admins_controller.rb:2:in `<main>': uninitialized constant Object::ApplicationController (NameError)

问题补充:
tiroc 写道
哦,之前没有看明白你写的ruby controller.rb,我以为你是说rails中的controller。
原来,你是执行这个文件。
不过我不太明白,你这个controller.rb是做什么的,Rails中应该没有这个。
还有 一并贴一下admins_controller.rb出错的部位的代码吧。

不好意思是我没写明白 ,我执行的不是controller.rb这个,而是admins_controller这个,我用controller.rb泛指了。
admins_controller 中有出错的代码是
  class AdminsController < ApplicationController 

前几天我问了这个问题,有一位叫夜鸣猪的朋友回答了我,但是一只半解。我一直想找一个可以debug的方法。像php 那样  echo 可以在不同的地方出现,这样可以缩小出错范围,我习惯了这样做,相信很多朋友也是这样的。在使用rails 的时候,有时候出错了也不知道到哪里出的错。虽然rails有提示,但是当要修改的时候还是很没有目的性的测试,不知道能不能理解我的意思。或者你能不能说说你是如何debug rails程序的?
还有一个小问题,就是当执行一个controller 类的时候为什么不需要创造这个controller的对象就可以运行里面的方法了。?

问题补充:
tiroc 写道
夜鸣猪是牛人啊,我没找到他回答你的那道问题。
我就根据你的补充说说吧。你不应该使用ruby admins_controller.rb这样来执行一个Controller,你应该把网站运行起来,然后访问这个Controller。比如,使用http://localhost:3000/admins来访问AdminsController中的index方法(假如你的routes.rb中声明了resources :admins)。这样再配合,有什么出错信息就会输出到日志当中。
你后边的问题,Controller对象是由框架管理的,你在routes中映射好url和Controller的对应关系后,当服务器收到一个HTTP请求的时候,Rails自己就知道去调用哪个Controller的哪个方法。


我知道了,其实我的初衷很简单,就是想通过puts 来缩小出错范围,java是这么做的,javascript是这么做的,javascript也是通过alert来做的。突然间没了这个方法很不习惯罢了。

问题补充:
caicai89 写道
如果你启动的是开发模式那应该有个地方可以看到动态的日志啊。
比如你在控制台用命令 rails s 启动你的服务,那么那个日志里面就能看到你在model或controller里面puts 或 pp 出来的东西了。
如果想在view 层看参数信息,可以先屏蔽一些模板代码,直接用 <%= params %> 就能在html页面上看到了。

果然在webrick的日志中可以看到 puts 的内容,之前其实也尝试过,但是因为日志的输出了很多服务信息,所以忽略了,刚才又尝试了一次,看到了hello world!但是如果以后web服务器换成apache,是不是每次都要去查看apache的日志呢。还是很不方便。

问题补充:
夜鸣猪 写道
关于调试,要看看这个
http://hlee.iteye.com/blog/361405


不过,说到调试,这可是ruby程序员的基本功,就像翻_墙一样基本功。

正经的说调试,那应该就是上面那个科普的ruby debug,之前,我自己好好的总结了一下怎么用,后来应该更新过,基本用法应该没有变。去试试看,要是有什么地方过时了,我就去更新。 ide集成,基本就是wrap了一下,基本的还是调用ruby debug,好一点的IDE也都集成了,比如RadRails, RubyMine, or 3rd Rail.


另外一个和调试有关的东西是 rails console,关于控制台的基本使用,可以参考一下有关的材料。我那有一篇
http://hlee.iteye.com/blog/358516也可以看

实际上,调试也往往和测试相关。因为如果是项目渐渐变大了,要定位错误,还是有测试比较好。

当然,楼上说的呢,也都有道理,我就帮着补充,tiroc说logger挺好,有个级别可以设定就是不同的环境,可以设定log级别,这样就可以在不想要调试的时候,记录日志。

至于说那个页面变量输出,嵌入一个 <%= debug(request) %> MS还有个env,挺不错的东西


PS: 俺不算牛,只是早入门了几年,并且一直没有转行,就积累了点经验而已。

PPS: 标准的教程参考 rails guide 有一篇

http://guides.rubyonrails.org/debugging_rails_applications.html


乱七八糟,大家凑合着看,有些讨论对我也很有启发和帮助


夜鸣猪,你又来了。其实每次看到你的回复又开心又纠结,开始是你可以这么耐心的指导一个新人的菜鸟问题,并且能给我一个很好的解答,不但使我能解决问题,主要更是能理解了很多,但是纠结的是,又不好意思让你每次都解决我的小问题。
其实我有你的邮箱,每次遇到问题实在找不到答案,(由于身边我结实的人只有我一个人用ruby,所以我解决问题的方法只有自己思考+google)都想给你发个邮件,但又怕浪费你的时间。所以才来iteye上恬不知耻的问那些问题。
本人其实现在大四在读,目前在一家云计算的公司实习,由于在实习生中算是一枚小骨干,所以很忙,现在学习ruby纯粹兴趣,也很少有时间来学了。我所在的城市没有企业用ruby。几乎都是java和C#,这点很纠结。其实一直想找linux 服务器端 的编程,能涉及到ruby 最好了。因为用ruby写代码的时候很开心。
国内主推ruby的就范凯他们在iteye上,其他论坛啊什么的都很不友好

问题补充:
夜鸣猪 写道
才大四啊,那很不容易了,我之前带的实习生,跟你比差不少呢,看样子,后继有人啦,坚持下来,等你到我这个年岁,就真是大拿了。

整个的ruby社区就是这样,我开始学的时候,可是正经给带出来的,所以,要是能给ruby社区特别是国内的ruby社区做点什么是我很愿意做的。

而且,整个社区的发展也是很多成员,通过支持开源,一点点增长壮大起来的。我相信你也一样,在这个社区收益,然后,你会比我更有能力回馈这个社区


社区有你这样的老师真是好。其实我也一直想回答一些问题。(也想这要赚积分。)但是感觉真的心有余而力不足。只是看其中的问题。没办法给取意见,自己真的很菜,越学越觉得自己菜。我现在还在继续我那个blog的系统。准备开源放在git hub上,虽然是一个很小的项目,但是拿来练练RoR还是挺好的。就上次我发给你的那个诺。不知道你还记不记得。 希望能经常和你交流,给予知道。可以么?如果你很忙。我尽量少打扰。
2011年10月26日 13:10

8个答案 按时间排序 按投票排序

0 0

<%= debug(obj)%>

2011年10月27日 11:35
0 0

才大四啊,那很不容易了,我之前带的实习生,跟你比差不少呢,看样子,后继有人啦,坚持下来,等你到我这个年岁,就真是大拿了。

整个的ruby社区就是这样,我开始学的时候,可是正经给带出来的,所以,要是能给ruby社区特别是国内的ruby社区做点什么是我很愿意做的。

而且,整个社区的发展也是很多成员,通过支持开源,一点点增长壮大起来的。我相信你也一样,在这个社区收益,然后,你会比我更有能力回馈这个社区

2011年10月27日 10:24
0 0

关于调试,要看看这个
http://hlee.iteye.com/blog/361405


不过,说到调试,这可是ruby程序员的基本功,就像翻_墙一样基本功。

正经的说调试,那应该就是上面那个科普的ruby debug,之前,我自己好好的总结了一下怎么用,后来应该更新过,基本用法应该没有变。去试试看,要是有什么地方过时了,我就去更新。 ide集成,基本就是wrap了一下,基本的还是调用ruby debug,好一点的IDE也都集成了,比如RadRails, RubyMine, or 3rd Rail.


另外一个和调试有关的东西是 rails console,关于控制台的基本使用,可以参考一下有关的材料。我那有一篇
http://hlee.iteye.com/blog/358516也可以看

实际上,调试也往往和测试相关。因为如果是项目渐渐变大了,要定位错误,还是有测试比较好。

当然,楼上说的呢,也都有道理,我就帮着补充,tiroc说logger挺好,有个级别可以设定就是不同的环境,可以设定log级别,这样就可以在不想要调试的时候,记录日志。

至于说那个页面变量输出,嵌入一个 <%= debug(request) %> MS还有个env,挺不错的东西


PS: 俺不算牛,只是早入门了几年,并且一直没有转行,就积累了点经验而已。

PPS: 标准的教程参考 rails guide 有一篇

http://guides.rubyonrails.org/debugging_rails_applications.html


乱七八糟,大家凑合着看,有些讨论对我也很有启发和帮助

2011年10月26日 23:52
0 0

如果你启动的是开发模式那应该有个地方可以看到动态的日志啊。
比如你在控制台用命令 rails s 启动你的服务,那么那个日志里面就能看到你在model或controller里面puts 或 pp 出来的东西了。
如果想在view 层看参数信息,可以先屏蔽一些模板代码,直接用 <%= params %> 就能在html页面上看到了。

2011年10月26日 17:43
0 0

夜鸣猪是牛人啊,我没找到他回答你的那道问题。
我就根据你的补充说说吧。你不应该使用ruby admins_controller.rb这样来执行一个Controller,你应该把网站运行起来,然后访问这个Controller。比如,使用http://localhost:3000/admins来访问AdminsController中的index方法(假如你的routes.rb中声明了resources :admins)。这样再配合,有什么出错信息就会输出到日志当中。
你后边的问题,Controller对象是由框架管理的,你在routes中映射好url和Controller的对应关系后,当服务器收到一个HTTP请求的时候,Rails自己就知道去调用哪个Controller的哪个方法。

2011年10月26日 17:37
0 0

哦,之前没有看明白你写的ruby controller.rb,我以为你是说rails中的controller。
原来,你是执行这个文件。
不过我不太明白,你这个controller.rb是做什么的,Rails中应该没有这个。
还有 一并贴一下admins_controller.rb出错的部位的代码吧。

2011年10月26日 16:42
0 0

你可一使用p方法在controller或者其他地方打印信息,View以外的地方使用p会打印到日志中。
在config/environments/development.rb中设置日志输出到终端,看起来会方便一些:

  config.logger = Logger.new(STDOUT)

2011年10月26日 14:04
0 0

用rdebug-ide吧

2011年10月26日 13:14

相关推荐

    RAILS2.1的中文版资料

    综上所述,《RAILS2.1的中文版资料》为Ruby on Rails开发者提供了丰富的资源和深入的技术细节,不仅有助于开发者更好地理解2.1版本的新特性,还能帮助他们利用这些特性构建更高效、更稳定的Web应用程序。

    eclipse的ruby on rails开发插件RadRails

    在现代软件开发领域,Ruby on Rails(简称Rails)作为一个强大的Web应用程序框架,因其简洁、高效的特性深受开发者喜爱。而Eclipse,作为一款功能强大的开源集成开发环境(IDE),支持多种编程语言,自然也包括Ruby ...

    rails 常见灵异错误汇总

    6. **数据库迁移问题**:数据库迁移是Rails应用程序的重要组成部分。未成功的迁移或冲突可能导致模型无法正常工作。使用`rake db:migrate:status`检查迁移状态,必要时使用`db:migrate:redo`或手动调整迁移文件。 7...

    i18n-debug:是否想过Rails,gem或只是您的应用程序正在查找哪些翻译? 不再感到奇怪!

    Ruby I18n调试 有没有想过Rails,gem或只是您的应用程序正在查找哪些翻译? 不再感到奇怪! 例如,Rails的隐式翻译是一个不错的功能。 但是有时候,以Order内嵌套形式获取BillingAddress的street属性的键可能很棘手...

    Laravel开发-log-like-rails

    总的来说,`Log Like Rails` 提供了一个强大的日志系统,使得 Laravel 开发者可以像在 Ruby on Rails 中一样方便地追踪和分析应用程序的行为,这对于大型项目或复杂的业务逻辑来说是非常有用的工具。它能够帮助提升...

    stripe-rails:用于与Stripe集成的Rails引擎

    该gem可通过以下方式帮助您的Rails应用程序与Stripe集成 在一个地方管理条带配置。 使stripe.js可从资产管道中使用。 在您的应用程序内管理产品,价格,计划和优惠券。 轻松地接收和验证来自stripe的webhook。 ...

    qiitan-debug-beginner:Qiita复制应用程序的调试测试(级别1)

    将分支更改为debug-test 开始调试 如果发现错误/错误,请填写表格 可以修复错误/错误时填写表格提交每个错误/错误响应 当达到时间限制时,检查答案和分数如果有平地机,请创建一个PR并进行检查 规则 时间限制为90...

    polymer-starter-kit-rails

    TODO:删除这个和上面的文字,并描述你的宝石安装将此行添加到应用程序的 Gemfile 中: gem 'polymer-starter-kit-rails' 然后执行: $ bundle或者自己安装: $ gem install polymer-starter-kit-rails用法TODO:在...

    active-record-query-trace:记录日志的Rails插件显示Active Record执行的所有SQL查询的回溯

    在Rails的开发控制台和日志中显示每个查询的回溯。 允许您跟踪应用程序中查询的执行位置。 对于性能优化以及在对大型应用程序进行更改时查找从哪里开始有用。 启用后,每个查询都会记录如下: D, [2019-03-03T19:...

    内容发布者:GOV.UK的发布应用程序

    这是Ruby on Rails应用程序。 依存关系 提供支持数据库 用作异步作业处理的存储层 -JavaScript的程序包管理器 图像处理库 运行应用程序 首次运行此应用程序进行开发时,请启用debug和pre_release_features权限: ...

    ruby-debug-ide:一个将ruby-debug粘贴到Eclipse(RDT),NetBeans和RubyMine等IDE的接口

    Ruby调试器 “ ruby​​-debug-ide” gem提供协议来建立调试器引擎(例如或 )和IDE(例如RubyMine,...要启动Rails应用程序的调试会话,请运行以下命令: rdebug-ide --host 0.0.0.0 --port 1234 --dispatcher-port

    Ruby-HttpLogHTTP请求日志输出

    这个库主要面向那些希望深入了解其应用程序网络交互的开发人员,尤其是在调试、性能优化或监控上下文中。HttpLog通过提供详细的日志输出,使得追踪HTTP请求的全过程变得更加容易。 首先,我们来了解一下HttpLog的...

    Ruby-Log4r使用Ruby程序一个全面的和灵活的日志库

    Log4r可以与其他框架和库无缝集成,如Rails、Sinatra或Resque等。通过适当的配置,可以在这些框架中轻松地利用Log4r的功能。 **5. 示例代码(log4r-master中的示例)** 在`log4r-master`压缩包中,可能包含了一些...

    热线调试

    bin/rails g hotwire_debug:install 如果您的应用程序尚未在布局中包含样式表和JavaScript,请添加它们。 &lt;&#37;= stylesheet_link_tag 'application', media: 'all' %&gt; &lt;&#37;= javascript_include_tag '...

    Ruby-MongoDBLoggerRails的MongoDB记录器

    MongoDB Logger支持多种日志级别,包括:debug、info、warn、error和fatal。这些级别的使用可以帮助你控制哪些信息被记录,以及在何时查看这些信息。 在实际开发中,MongoDB Logger的高级查询能力非常实用。例如,...

    网络编程开发工具PPT学习教案.pptx

    2. 开发框架工具:如Spring、Django、Ruby on Rails等,这些框架工具可以帮助开发者快速开发和部署网络应用程序。 3. 数据库管理工具:如MySQL、Oracle、SQL Server等,这些数据库管理工具可以帮助开发者管理和存储...

    ember-cable:使用actioncable为ember.js应用程序提供动力

    这个附加组件使Rails Action Cable可以简单地集成到Ember应用程序中。 安装 从ember-cli项目内部运行以下命令: ember install @algonauti/ember-cable 基本用法 一旦安装了插件,就可以在应用程序中所需的任何地方...

    very-best-debug

    最好的调试 这是 标准工作流程 这项任务的目的是通过纠正其中包含的所有错误来使代码正常工作 检出目标以查看代码应如何... 随心所欲地运行rails grade ,以查看运行情况,但是请确保先手动测试您的应用程序,以确保它

    omnicalc-debug

    当您确信自己的应用程序符合目标时,请运行rails grade 。 rails grade获得反馈是一个糟糕的反馈循环。 目标 这是你的 此应用程序的起点有四种不同的形式,可以从用户那里获取输入,其中一些通过Google Maps API和...

    classroom-queries-debug

    随心所欲地运行rails grade ,以查看您的工作状况。 眼镜 单击此处查看每个测试的名称/ courses列出每个课程的标题 / courses列出了每门课程提供的术语 / courses列出每个课程的部门名称 / courses带有指向“每个...

Global site tag (gtag.js) - Google Analytics