Не удается заставить Curl URL работать внутри метода модуля Ruby

У меня возникла проблема, когда я не могу заставить работать ни один из следующих методов (1, 2 и 3).

require "curb"

@username = 'user'
@api_key = 'key'
@base_uri = 'https://url.com'
@offer_id = 999
@login_method = "login=#{@username}&api_key=#{@api_key}"
@method_3_url ="#{@base_uri}/3/?#{@login_method}"

module My_script
  def self.call_method(url)
    Curl::Easy.http_get(url){|curl| curl.follow_location = true; curl.max_redirects=10;}
  end

  def self.method1
    call_method("#{@base_uri}/1/#{@login_method}")
  end

  def self.method2
    call_method("#{@base_uri}/2/?#{@login_method}")
  end

  def self.method3
    call_method("#{@base_uri}/3/?#{@login_method}")
  end
end

Я получаю следующую ошибку:

Curl::Err::MalformedURLError: URL-адрес в неправильном/недопустимом формате или отсутствующий URL-адрес из /Users/home/.rvm/gems/ruby-2.0.0-p598/gems/curb-0.8.8/lib/curl/easy. rb:72:в `выполнить'

Когда я запускаю call_method(@method_3_url), он работает правильно.

Я также могу взять исходный URL-адрес POST и вставить его в Chrome, и он будет работать.

Я часами искал решение в Интернете для этого, и я не могу заставить его работать. Я также получаю аналогичную ошибку при использовании HTTParty. Пожалуйста помоги :-)


person mageofzema    schedule 01.05.2015    source источник


Ответы (1)


Ваши переменные экземпляра не находятся в модуле и, следовательно, выходят за рамки.

Вместо:

@foo = 'bar'

module Foo
  ...
end

Ты ищешь:

module Foo
  @foo = 'bar'
  ...
end
person Jamie Schembri    schedule 01.05.2015