Идиоматическая служба инициализации / помощники в Rails 3? - PullRequest
1 голос
/ 31 января 2012

Допустим, я интегрирую Twilio (или любой сторонний API) в проект Rails. Я загрузил драгоценный камень в свой Gemfile, и я настроил 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 Ответ

2 голосов
/ 31 января 2012

Это может работать для вас:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...