草庐IT

IDA动态调试

全部标签

ruby - 在 Ruby 中动态定义命名类

我正在用Ruby编写内部DSL。为此,我需要以编程方式创建命名类和嵌套类。最好的方法是什么?我认为有两种方法可以做到这一点:使用Class.new创建一个匿名类,然后使用define_method为其添加方法,最后调用const_set添加方法作为命名空间的命名常量。使用某种eval我已经测试了第一种方法并且它有效,但是作为Ruby的新手,我不确定将类作为常量是正确的方法。还有其他更好的方法吗?如果不是,以上哪个更可取? 最佳答案 如果您想创建一个具有动态名称的类,您几乎必须完全按照您所说的去做。但是,您不需要使用define_me

ruby-on-rails - 如何调试在 IRB 控制台的 delayed_job 任务中运行的代码?

我有一个使用delayed_job运行的后台任务。我可以看到它确实从日志语句运行。与在前台运行相比,它似乎没有正确的结果,所以我想在IRB控制台中调试它。我正在运行后台任务rakejobs:work并且它不会触发调试器语句。如何加载调试器? 最佳答案 启动一个标准的rails控制台rubyscript/console并在此处启动一个worker,这将看到并触发调试器语句。worker=Delayed::Worker.newworker.start 关于ruby-on-rails-如何调试

ruby - jekyll 调试或打印所有变量

我想进入Jekyll的大脑,看看发生了什么,在php中你有get_defined_vars,所以我尝试做一些类似的事情:{%forlocal_variableinlocal_variables%}{{local_variable}}{%endfor%}什么都不输出。我是不是太努力了?ruby或jekyll中有一些方法吗?我只是想四处看看,确保一切设置正确,并可能找出我不知道的变量。 最佳答案 对于Jekyll2.x,您可以使用thisplugin.它允许你做类似{{site|调试}}。从Jekyll3开始,你有{{variable|

ruby - 如何在 Ruby 中动态调用访问器方法

这个问题在这里已经有了答案:Howtocallmethodsdynamicallybasedontheirname?[duplicate](5个答案)关闭8年前。不管这是否是好的做法,我如何在Ruby中动态调用访问器方法?这是一个示例类:classTest_Classattr_accessor:a,:bend我可以使用Object.send方法读取变量...instance.a="value"puts(instance.send("a"))#=>value但是我很难尝试写信给它。这些抛出“错误数量的参数(1代表0)(ArgumentError)”instance.send("a","v

ruby-on-rails - Gem 安装调试器错误

我在MacOS10.9.2上运行Railsv4.0.2,一切顺利。当我尝试railsserver时,突然收到一条错误消息,提示缺少gems。我运行bundleinstall,这是输出:Fetchinggemmetadatafromhttps://rubygems.org/.......Fetchingadditionalmetadatafromhttps://rubygems.org/..Usingrake10.1.1Usingi18n0.6.9Usingminitest4.7.5Usingmulti_json1.9.0Usingatomic1.1.16Usingthread_safe

ruby-on-rails - 安装调试器时出错 : Failed to build gem native extension with ruby-1. 9.3-p362

尝试为新项目运行bundle时,遇到以下错误:Installingdebugger(1.2.2)withnativeextensionsGem::Installer::ExtensionBuildError:ERROR:Failedtobuildgemnativeextension.C:/Ruby193/bin/ruby.exeextconf.rbcheckingforrb_method_entry_t.called_idinmethod.h...nocheckingforrb_control_frame_t.method_idinmethod.h...nocheckingforrb_

ruby-on-rails - Ruby 2.1.0/2.1.1/2.1.2 不支持调试器 gem

我刚刚将我的RVMRuby安装升级到版本2.1.0并尝试捆绑安装时出现以下错误:Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension.Rubyversion2.1.0isnotsupported.***extconf.rbfailed***这个错误当然是不言自明的,但我想知道是否有办法让Debuggergem与最新版本的Ruby一起工作? 最佳答案 看起来1.6.5版增加了对Ruby2.1.0的支持。-按预期工作。更新:由于Ruby2.1.1已经发布,因此应该使用1.6

Ruby 动态变量名

有什么方法可以在Ruby中使用动态名称创建变量吗?我正在读取一个文件,当我找到一个字符串时,生成一个散列。例如file=File.new("games.log","r")file.linesdo|l|l.splitdo|p|ifp[1]=="InitGame"Game_#=Hash.newendendend我如何将Game_#中的#更改为数字(Game_1、Game_2、...) 最佳答案 你可以用像这样的实例变量来做到这一点i=0file.linesdo|l|l.splitdo|p|ifp[1]=="InitGame"instan

ruby - 如何动态创建局部变量?

我有一个变量var="some_name",我想创建一个新对象并将其分配给some_name。我该怎么做?例如var="some_name"some_name=Struct.new(:name)#Ineedthisa=some_name.new('blah')#sothatIcandothis. 最佳答案 您不能在Ruby1.9+中动态创建局部变量(您可以在Ruby1.8中通过eval):eval'foo="bar"'foo#NameError:undefinedlocalvariableormethod`foo'formain:O

ruby - 如何调试 ruby​​ 代码?

我运行的是Ubuntu10.10。我只想调试一个简单的脚本。在花了半天时间试图弄清楚如何做到这一点后,我放弃了。我到底该怎么办?我从Ubuntu存储库安装了ruby-dev我运行了sudogeminstallruby​​-debug和sudogeminstallruby​​-debug-ide我尝试了几种不同的方法来完成这项工作。我试过require'ruby-debug'然后在代码的某处设置debugger。但是Ruby找不到ruby-debug。我尝试设置vim-ruby-debugger,这将花费ages来执行:RdebuggermyScript.rb并允许我设置断点,但似乎没有