我知道调试器gem不是,并且永远不会与ruby 2.0兼容,每个" 官方支持ruby 2.X ".
在Ruby 2.0的更改日志中是:
调试支持
DTrace支持,支持运行时诊断
生产TracePoint,它是一种改进的跟踪API
是否有开箱即用的东西用于调试Ruby 2.0?有人可以向我解释一下吗?
我运行Ubuntu 10.10.我只是想调试一个简单的脚本.在花了半天时间试图弄清楚如何做到这一点后,我放弃了.我该怎么办?
我ruby-dev从Ubuntu存储库安装
我运行sudo gem install ruby-debug和sudo gem install ruby-debug-ide
我尝试了几种不同的方法来完成这项工作.我尝试require 'ruby-debug'然后debugger在代码中设置某个地方.但是Ruby找不到ruby-debug.
我尝试设置vim-ruby-debugger,这将需要很长时间才能执行:Rdebugger myScript.rb,并允许我设置断点,但似乎没有办法使用该调试器执行我的代码.
我尝试使用NetBeans,每次设置项目并单击任何内容时,它都会崩溃.
所以,亲爱的社区:必须有一种方法来调试Ruby.不是Rails.没有什么花哨.只是一些CLI脚本.请帮助我,否则我将失去理智.
编辑: gem exec dir不在我的路径中.所以,至少rdebug现在似乎有效.
我有一段这样的代码:
my_hash = {}
first_key = 1
second_key = 2
third_key = 3
my_hash[first_key][second_key][third_key] = 100
Run Code Online (Sandbox Code Playgroud)
而红宝石翻译给了我一个错误说:
未定义的方法`[]'为nil:NilClass(NoMethodError)
那么这是否意味着我不能像那样使用哈希?或者你认为这个错误可能是因为别的什么?
有时我的规格可以挂起,我必须杀死相应的ruby过程.当我运行用capybara和webkit驱动程序编写的集成规范时,这很常见.
是否可以检查给定的红宝石过程并查看它挂在哪里?哪种方法,操作,文件,行号等
我的instance_variable_get方法有问题,因为它总是返回一个对象实例为nil的对象。这是我的代码:
logger.info "ASDF: " + @d_tree.inspect
logger.info "ASDF: " + @d_tree.instance_variable_get(:@content);
Run Code Online (Sandbox Code Playgroud)
输出为:
ASDF: #<DTree id: 11, parent_id: nil, content: "bababababa", subsidiary_info: "", deep_info: "blabla", title: "hello", direction: 1, created_at: "2010-10-26 19:27:32", updated_at: "2010-11-01 23:14:31", color: 2, cell_color: 2, howtoinfo: "howtoinfooo", textinfo: "textInfooo", locationinfo: "locationInfoooo", productinfo: "productinfoooo">
TypeError (can't convert nil into String):
/app/controllers/d_trees_controller.rb:38:in `+'
Run Code Online (Sandbox Code Playgroud)
根据检查,该对象似乎很好,但是instance_variable_get返回一个nil对象
谢谢你的帮助!
为什么你可以链接这个:
"Test".upcase.reverse.next.swapcase
Run Code Online (Sandbox Code Playgroud)
但不是这个:
x = My_Class.new
x.a.b.c
Run Code Online (Sandbox Code Playgroud)
哪里
class My_Class
def a
@b = 1
end
def b
@b = @b + 2
end
def c
@b = @b -72
end
end
Run Code Online (Sandbox Code Playgroud) 我想知道为什么当我试图获得不同的输入时它忽略了我的第二个输入.
#!/usr/bin/env ruby
#-----Class Definitions----
class Animal
attr_accessor :type, :weight
end
class Dog < Animal
attr_accessor :name
def speak
puts "Woof!"
end
end
#-------------------------------
puts
puts "Hello World!"
puts
new_dog = Dog.new
print "What is the dog's new name? "
name = gets
puts
print "Would you like #{name} to speak? (y or n) "
speak_or_no = gets
while speak_or_no == 'y'
puts
puts new_dog.speak
puts
puts "Would you like #{name} to speak again? (y or n) "
speak_or_no = …Run Code Online (Sandbox Code Playgroud) Ruby noob在这里学习绳索.我目前正在阅读本教程并正在进行此练习:
让我们编写一个程序,要求我们输入尽可能多的单词(每行一个单词,一直持续到我们只需按空行上的Enter键),然后按字母顺序将单词重复给我们.
我现在忽略了字母顺序部分.
这是我的代码:
puts 'Hi, do you need something sorted?'
yn = gets.chomp
while yn != 'no'
puts 'What else?'
array = [gets]
yn = gets.chomp
end
puts 'Here\'s what you told me: ' +array.to_s
Run Code Online (Sandbox Code Playgroud)
我已经调整了几个小时.为了防止我的笔记本电脑因挫败感而破坏我正在休息.任何有更多经验,可能更有耐心的人都可以指出我的错误吗?
我无法让我的 ruby-debug-ide 正常工作。我有一个基本的 Rails 应用程序,我想在 RubyMine 中进行调试。在启动 RubyMine 之前,我需要在我的 vagrant VM 中启用 rdebug-ide。当我导航到我的项目目录时,我已经在线阅读,我需要输入以下命令:
rdebug-ide --port 1236 --dispatcher-port 26166 --host 0.0.0.0 - bin/rails s -b 0.0.0.0
Run Code Online (Sandbox Code Playgroud)
我还尝试了上述命令的修改版本:(额外的破折号)
rdebug-ide --port 1236 --dispatcher-port 26166 --host 0.0.0.0 -- bin/rails s -b 0.0.0.0
Run Code Online (Sandbox Code Playgroud)
我得到的结果是:
乍一看这看起来不错,但是服务器永远不会启动。它从不显示服务器信息,它只是坐在这里并挂起,直到我按 CTRL+C 退出服务器。我无法让 rdebug-ide 与 Rails 结合使用。有谁知道我该如何解决这个问题?
我开始使用 Docker 进行 Rails 开发。目前,我按照一些教程来设置开发环境。一切正常。(用于构建、运行)。但是现在,我想为 Rubymine 设置 Ruby Remote SDK,所以我在 docker 容器(ruby 容器;我安装了 SSH,因为它需要设置远程 SDK)。
这是 Dockerfile
FROM ruby:2.2.0
# Install package
RUN apt-get update -qq && apt-get install -y \
build-essential \
libpq-dev \
nodejs \
openssh-server
# Setting sshd
RUN mkdir /var/run/sshd
RUN echo 'root:root' | chpasswd
RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config
# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i …Run Code Online (Sandbox Code Playgroud)