代码在变化不大后无效

时间:2013-09-25 18:04:32

标签: ruby

我是编程的初学者,我稍微更改了我的代码,以便我可以从命令行执行一些def。在那次改变后我得到了一个错误,但首先是我的代码:

require 'faraday'

@conn = Faraday.new 'https://zombost.de:8673/rest', :ssl => {:verify => false}
@uid = '8978'

def certificate
  res = conn.get do |request|
    request.url "acc/#{@uid}/cere"
  end
end

def suchen(input)
  @suche = input
  @res = @conn.get do |request|  
    request.url "acc/?search=#{@suche}"
  end
end

puts @res.body

然后我写入了控制台:

ruby prog.rb suchen(jumbo)

所以,不知怎的,我得到了错误:

Undefined method body for Nilclass

2 个答案:

答案 0 :(得分:3)

您没有调用任何一种方法,因此永远不会将@res分配给。

@res评估为nil,因此您正在调用nil.body


RE:您的更新:

  

ruby​​ prog.rb suchen(jumbo)

这不是你调用方法的方式。您必须从源文件中的调用它。您所做的只是将一个参数传递给您的脚本,这将是ARGV数组中可用的简单字符串。


RE:您的评论:

不言而喻,解决方法是实际调用您的方法

答案 1 :(得分:0)

您可以从命令行调用方法。 Ruby有一个函数eval来计算字符串。您可以评估命令行参数字符串。

这是怎么回事。将行puts @res.body更改为

str = ARGV[1]
eval(ARGV[0])
puts @res.body

然后像这样运行你的程序

$ ruby prog.rb suchen\(str\) jumbo