Есть ли способ динамически добавлять провайдеры / стратегию Omniauth в Devise? - PullRequest
0 голосов
/ 07 июня 2019

Я планирую добавить в свое веб-приложение опцию добавления дополнительных поставщиков / стратегии Omniauth без повторного развертывания или перезапуска веб-приложения.

Я добавил таблицу, в которой я могу сохранить необходимые значения для новой стратегии, затем в config / initializers / devise.rb Я повторил значения;

Devise.setup do |config|
  # AppConfigTable.oauth structure will be
  # "facebook"=>
  # [
  #  {
  #    id: 5,
  #    name: "key",
  #    value: "yyyyyyy",
  #   },
  #  {
  #   id: 6,
  #   name: "secret",
  #   value: "xxxxxxx"
  #  }
  # ]
  AppConfigTable.oauth&.each do |provider, oauth_values|
    data = oauth_values.map { |f| [f.name, f.value] }.to_h
    config.omniauth provider.to_sym,
                    data['key'],
                    data['secret']
  end
end

Теперь, когда я добавляю новую стратегию в свою таблицу, новая добавленная стратегия не применяется в веб-приложении. Мне все еще нужно перезагрузить сервер, чтобы он заработал.

Обновление

Я переместил приведенный выше код в службу, которая вызывается при каждом действии. Мне все еще нужно перезагрузить сервер.

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