vesh95
@vesh95
web-developer

Как через конфиг выбрать клиент для работы с api?

В приложении планируется интеграция самописного сервиса для подтверждения номера телефона. Необходимо для разных энвайренментов использовать разные API для рассылки SMS. Планируется что различные клиенты будут указываться в кофигах приложения. Каждый отдельный клиент будет размещен в lib и исходя из конфига выбираться нужный клиент.
Настройка должна быть похожа на mailcatcher из документации devise.
Есть примеры как такие вещи реализованы?
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ответы на вопрос 2
etspring
@etspring
Начитанное быдло
mailcatcher для devise ;)

описание таски конечно не айс, а что мешает сделать стандартно через yml-файл?
dev:
 api_url: 

prod:
 api_url:


если логика нужна, то можно через лямду в инишалайзере замастырить
module SmsApi

  def self.setup(&block)
     yield self
  end

  def self.api_url
    @@api_url ||= 'http://127.0.0.1'
  end

end

в инишалайзер что-то такое
SmsApi.setup do |config|
  config.api_url = lambda {
     тут логики можно нахерачить
  }
end

ну и далее SmsApi.api_url.call в любом месте
Ответ написан
Возможно требуется фабрика
class SmsApi
  attr_accessor :type

  def initialize(type)
    @type = type
  end

  def call
      case type
      when some_type_1 
         SmsApi1.call
      when some_type_2
         SmsApi2.call
      else
         raise NotImplementedError
      end
  end
end
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
21 окт. 2020, в 22:40
300 руб./за проект
21 окт. 2020, в 22:34
25000 руб./за проект
21 окт. 2020, в 21:24
7000 руб./за проект