2013-05-07 6 views
2

Я пытаюсь создать консольный скрипт Ruby для создания вызовов API namecheap. Я нашел драгоценный камень namecheap и установил его с помощью sudo gem install namecheap.Как использовать драгоценный камень 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 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 скопировал часть core extension из reils activesupport, чтобы преобразовать хэши в параметры URL. Однако он или она забыл, что эта конкретная функция зависит от функций, определенных для многих возможных классов, которые могут быть использованы как значения в хэшах и преобразованы в параметры URL (см. all these definitions).

Именно поэтому вы получаете эту ошибку:

undefined method `to_query' for "myusername":String 

Он действительно не был определен для String. Однако, если вы используете Rails (потому что он определен там, очевидно), он будет работать из коробки. Если вы не собираетесь использовать Rails, ваши варианты:

  • скопировать содержимое this file где-то в вашем проекте (вы можете пропустить последний класс, Hash, как это уже было исправлено в Namecheap драгоценный камень)
  • установить ActiveSupport камень и требуют либо 'active_support/core_ext/объект/to_param' или 'active_support/core_ext' (последняя будет включать в себя все основные расширения)
Смежные вопросы