假设我正在将Twilio(或任何第三方api)集成到Rails项目中。我已经在Gemfile中由bundler加载了gem,并设置了config/twilio.yml
来存储我的api密钥。
要实例化一个新的Twilio客户端,我必须解析该YAML文件,并加载当前Rails.env
的任何配置。为了减少每次在config/initializers/twilio.rb
中将配置推送到MyApp::Application.config.twilio
上时对该文件的解析
现在,当我需要一个Twilio客户端时,我会遇到冗长的:client = Twilio::REST::Client.new(MyApp::Application.config.twilio['sid'], MyApp::Application.config.twilio['auth'])
我想把它封装在一个助手中,这样就可以从系统的不同部分轻松访问它。有没有一个惯用的地方来定义那个助手?
这可能对您有用:
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