在常量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
答案 0 :(得分:0)
是的,这是错的。嗯,不是技术上的,正如你所发现的,但实际上。在类方法(或单独的对象)上使用常量没有任何优势,但有几个缺点。一个是它根本不是真正的常量(这可能就足够了),但是测试常量和使用它的方法比使用更灵活的类方法要困难得多。 。您可能会考虑从不在Rails代码中使用常量,原因相同。
答案 1 :(得分:0)
我希望你使用单独的对象,只有角色是准备准确的标题集。我们称之为HttpHeadersFactory
。
比你的proc更有优势的是,这个名字最初解释了它的作用(你的proc没有达到的目的)。
其次,如果您有更复杂的逻辑(使用某些标头,但其他标头不依赖于某些条件),则组合标头会更容易。