我如何使用namecheap gem?

时间:2013-05-07 15:07:21

标签: ruby gem domain-name

我正在尝试创建一个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>'

知道出了什么问题吗?

1 个答案:

答案 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,你的选择是:

  • 复制项目中某处的this file内容(您可能希望跳过最后一个类,Hash,因为它已经在namecheap gem中修补)
  • 安装activesupport gem并要求'active_support / core_ext / object / to_param'或'active_support / core_ext'(后者将包括所有核心扩展)