2013-05-07 60 views
2

我正在嘗試使一個Ruby控制檯腳本進行namecheap API調用。我找到了namecheap寶石,並使用sudo gem install namecheap進行安裝。如何使用namecheap gem?

我寫我的測試腳本,隱藏鍵,用戶名和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 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>' 

任何想法是什麼錯?

回答

3

擾流板:這種寶石只有在Rails的正常工作項目

據我看到的,它是在namecheap寶石的錯誤。 Gem作者從rails activesupport複製了core extension的部分,以便將哈希轉換爲URL參數。然而他或她忘記了這個特定函數依賴於爲許多可能的類定義的函數,這些函數可能被用作散列值並轉換爲URL參數(請參閱all these definitions)。

這就是爲什麼你得到這個錯誤:

undefined method `to_query' for "myusername":String 

它真的不是爲字符串定義。但是,如果您使用Rails(因爲它在那裏定義,顯然),它將開箱即用。如果你不打算使用Rails的,你的選擇是:

  • 複製的this file內容在項目中的某處(您可能想跳過最後一堂課,散列,因爲它是在namecheap寶石已經修補)
  • 安裝的ActiveSupport寶石和要求任一 'active_support/core_ext /對象/ to_param' 或 'active_support/core_ext'(後者將包括所有核心擴展)