配置基于gem的模型以供Rails中的所有会话使用

时间:2011-08-03 13:39:51

标签: ruby-on-rails ruby-on-rails-3 configuration rubygems

我目前正在使用mixpanel_client gem访问mixpanel API。我希望能够在一个地方做到这一点:

config = {'api_key' => 'changeme', 'api_secret' => 'changeme'}
client = Mixpanel::Client.new(config)

然后在整个应用中的任何位置访问它。是否有惯用(或框架 - matic)方式来解决这个问题?似乎每次我想提出请求都是这样做是浪费资源而不是非常干的启动。

谢谢!

1 个答案:

答案 0 :(得分:0)

有几种方法可以在初始化程序文件夹下创建初始化程序,以便在加载rails后加载一次,然后

config = {'api_key' => 'changeme', 'api_secret' => 'changeme'}
CLIENT = Mixpanel::Client.new(config)

然后,您的应用程序中的任何位置都可以使用CLIENT常量。

否则你可以创建一个类

class MixPanelClient
 cattr_accessor: client

 def self.client
   client ||= begin
     config = {'api_key' => 'changeme', 'api_secret' => 'changeme'}
     Mixpanel::Client.new(config)
   end
 end
end

MixPanelClient.client只会创建一次该客户端。