在红宝石中分配proc是不变的吗?

时间:2015-05-12 19:16:57

标签: ruby-on-rails ruby

在常量ruby中定义半静态的东西是错误的吗? 在我的情况下,我想做一些api调用,但更改传入的参数的标题。

HeadersBuilder = Proc.new do |config|
  {
    'X-Auth-CLient' => config.client_id,
    'X-Auth-Token'  => config.token,
    'accept'        => 'application/json'
    'content-type'  => 'application/json'
  }
end

def self.connection(config)
 # do some faraday stuffs, we actually dont care about

 faraday_conn.headers = HeadersBuilder.call(config)

 # Still dont care about the rest
end

2 个答案:

答案 0 :(得分:0)

是的,这是错的。嗯,不是技术上的,正如你所发现的,但实际上。在类方法(或单独的对象)上使用常量没有任何优势,但有几个缺点。一个是它根本不是真正的常量(这可能就足够了),但是测试常量和使用它的方法比使用更灵活的类方法要困难得多。 。您可能会考虑从不在Rails代码中使用常量,原因相同。

答案 1 :(得分:0)

我希望你使用单独的对象,只有角色是准备准确的标题集。我们称之为HttpHeadersFactory。 比你的proc更有优势的是,这个名字最初解释了它的作用(你的proc没有达到的目的)。

其次,如果您有更复杂的逻辑(使用某些标头,但其他标头不依赖于某些条件),则组合标头会更容易。

相关问题