我正在尝试创建一个Ruby控制台脚本来进行namecheap API调用。我找到了namecheap gem并使用sudo gem install namecheap
安装了它。
我编写了我的测试脚本,隐藏了密钥,用户名和clientip:
#!/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>'
知道出了什么问题吗?
答案 0 :(得分:3)
Spoiler:这个gem只能在Rails项目中正常工作
据我所知,这是namecheap gem中的一个错误。 Gem作者从rails activesupport复制了core extension的一部分,以便将哈希值转换为URL参数。但是,他或她忘记了这个特定的函数依赖于为许多可能的类定义的函数,这些函数可以用作散列中的值并转换为URL参数(参见all these definitions)。
这正是您收到此错误的原因:
undefined method `to_query' for "myusername":String
确实没有为String定义。但是,如果您使用Rails,它将开箱即用(因为它明确定义了)。如果你不打算使用Rails,你的选择是: