我正在尝试创建一个Ruby控制台脚本来调用namecheap API。我找到了namecheap gem,并使用sudo gem install namecheap安装了它。
我编写了我的测试脚本,隐藏了密钥、用户名和客户端:
#!/usr/bin/env ruby
require 'namecheap'
Namecheap.configure do |config|
config.key = 'mykey'
config.username = 'myusername'
config.client_ip = 'myip'
end
Namecheap.domains.get_list我的Ruby版本:
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]当我运行这个脚本时,我得到了这个错误:
/var/lib/gems/1.9.1/gems/namecheap-0.1.2/lib/monkey_patch.rb:14:in `block in to_param': undefined method `to_query' for "myusername":String (NoMethodError)
from /var/lib/gems/1.9.1/gems/namecheap-0.1.2/lib/monkey_patch.rb:13:in `each'
from /var/lib/gems/1.9.1/gems/namecheap-0.1.2/lib/monkey_patch.rb:13:in `collect'
from /var/lib/gems/1.9.1/gems/namecheap-0.1.2/lib/monkey_patch.rb:13:in `to_param'
from /var/lib/gems/1.9.1/gems/namecheap-0.1.2/lib/namecheap/api.rb:15:in `api_call'
from /var/lib/gems/1.9.1/gems/namecheap-0.1.2/lib/namecheap/domains.rb:5:in `get_list'
from ./chkdn.rb:15:in `<main>'你知道哪里出问题了吗?
发布于 2013-05-08 03:00:31
剧透:这个gem只有在Rails项目中才能正常工作
据我所知,这是namecheap gem中的一个bug。Gem作者复制了rails activesupport中的core extension部分,以便将散列转换为URL参数。然而,他或她忘记了这个特定的函数依赖于为许多可能的类定义的函数,这些函数可能被用作散列中的值并转换为URL参数(参见all these definitions)。
这就是你得到这个错误的原因:
undefined method `to_query' for "myusername":String它实际上不是为字符串定义的。但是,如果您使用Rails,它将开箱即用(因为它显然是在那里定义的)。如果您不打算使用Rails,您可以选择:
https://stackoverflow.com/questions/16422457
复制相似问题