无法让 Curl URL 在 Ruby 模块方法中工作

Can't get Curl URL to work inside a Ruby Module Method

我遇到一个问题,我无法使用以下任何方法(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 using bad/illegal format or missing URL from /Users/home/.rvm/gems/ruby-2.0.0-p598/gems/curb-0.8.8/lib/curl/easy.rb:72:in `perform'

当我 运行 call_method(@method_3_url) 它似乎工作正常。

我也可以把原来的 POST URL 粘贴到 Chrome 就可以了..

我花了几个小时在网上寻找解决方案,但我似乎无法让它工作。我在使用 HTTParty 时也遇到了类似的错误。请帮助:-)

您的实例变量不在模块中,因此超出范围。

而不是:

@foo = 'bar'

module Foo
  ...
end

您正在寻找:

module Foo
  @foo = 'bar'
  ...
end