Rails rest-client:NoMethodError:未定义的方法`解析'

时间:2015-03-27 00:09:52

标签: ruby-on-rails rest-client

我尝试使用Restclient与外部API进行通信,但在尝试在控制台中测试呼叫时不断收到以下错误:

rest_resource = RestClient::Resource.new(uri, USERNAME, PASSWORD)
  #=> #<RestClient::Resource:0x007fd86992e228 @url="http://localhost:3000/api/users.json", @block=nil, @options={:user=>"myfinance", :password=>"credit123"}> 


users = rest_resource.get
  #=> NoMethodError: undefined method `parse' for #<String:0x007fd865eb75b8>

uriUSERNAMEPASSWORD都是定义的常量。

我无法弄清问题是什么,因为语法看似正确。

1 个答案:

答案 0 :(得分:0)

您是否错误地重新定义了URI

URI是一个处理URL解析的Ruby模块。如果您在代码中重新定义了该常量,请执行以下操作:

URI = "some string"

然后你将破坏依赖于URI模块的所有东西,包括RestClient。

例如:

require "rest_client"
USERNAME = "foo"
PASSWORD = "bar"
URI = "http://localhost:3000/api/users.json"
rest_resource = RestClient::Resource.new(URI, USERNAME, PASSWORD)
rest_resource.get
# => NoMethodError: undefined method `parse' for "http://localhost:3000/api/users.json":String

重新定义常量是不好的,Ruby会警告你。例如,上面的代码会产生此警告:

warning: already initialized constant URI