Rails 3中的惯用服务初始化/帮助程序?

时间:2012-01-31 19:48:06

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

假设我正在将Twilio(或任何第三方API)集成到Rails项目中。我已经在我的Gemfile中使用bundler加载了gem,并且我已经设置config/twilio.yml来存储我的api密钥。

要实例化一个新的Twilio客户端,我将不得不解析该YAML文件并加载当前Rails.env的配置。每次我将配置推送到MyApp::Application.config.twilio中的config/initializers/twilio.rb

时,为了减轻解析该文件的速度

现在,当我需要一个Twilio客户端时,我面对的是详细信息:client = Twilio::REST::Client.new(MyApp::Application.config.twilio['sid'], MyApp::Application.config.twilio['auth'])

我想把它包装在某个帮助器中,以便从系统的不同部分轻松访问。是否有一个惯用的地方来定义帮助者?

1 个答案:

答案 0 :(得分:2)

这可能对您有用:

class MyApp::Application
  def self.twilio_client
    Twilio::REST::Client.new(config.twilio['sid'], config.twilio['auth'])
  end
end

我通常在lib/my_company/twilio_integration.rb中定义类似的东西,它定义了第三方集成所需的一切,包括MyCompany::TwilioIntegration.client

也许更好的位置位于app/models/twilio_integration.rb,可以定义TwilioIntegration.client