0

我这里有一个名为 GmailGcalendar 的模型助手

我在 2 个模型中有多个操作,即 gmail.rb 和 pivotaltracker.rb

它们执行相同的功能,但唯一的区别是连接 url。

在我的 lib 助手中:

def connection_url
    if API::Pivotaltracker
      'https://www.pivotaltracker.com'
    else
      'https://accounts.google.com'
    end
  end

  def my_connections
    connection_name ||= Faraday.new(:url => "#{connection_url}" , ssl: {verify: false}) do |faraday|
      faraday.request  :url_encoded             # form-encode POST params
      faraday.response :logger                  # log requests to STDOUT
      faraday.adapter  Faraday.default_adapter  # make requests with Net::HTTP
    end
    puts "@@@@"
    puts connection_url
  end

在我的 gmail.rb

def connection
    my_connections
end

以及我的pivotaltracker.rb

def connection
    my_connections
end

现在他们有不同的连接网址。

Pivotal 转到https://www.pivotaltracker.com Gmail 转到https://accounts.google.com

但我似乎无法使条件在 connection_url 操作中起作用。

任何解决方法将不胜感激。

编辑:

我在这里使用connection_url:(在法拉第块中)

def my_connections
    connection_name ||= Faraday.new(:url => "#{connection_url}" , ssl: {verify: false}) do |faraday|
      faraday.request  :url_encoded             # form-encode POST params
      faraday.response :logger                  # log requests to STDOUT
      faraday.adapter  Faraday.default_adapter  # make requests with Net::HTTP
    end
    puts "@@@@"
    puts connection_url
  end
4

1 回答 1

0

您可以将您的 lib 助手重写为类:

class Connection
  def initialize(url)
    @url = url
  end

  def setup
    connection_name ||= Faraday.new(:url => "@url" , ssl: {verify: false}) do |faraday|
      faraday.request  :url_encoded             # form-encode POST params
      faraday.response :logger                  # log requests to STDOUT
      faraday.adapter  Faraday.default_adapter  # make requests with Net::HTTP
    end
  end
end

现在在模型中,您可以使用所需的 url 初始化此类,例如:

def connection
    Connection.new("https://accounts.google.com").setup
end

我没有测试这段代码,但它应该可以工作。

于 2013-08-14T07:23:15.953 回答