Я планирую добавить в свое веб-приложение опцию добавления дополнительных поставщиков / стратегии 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
Теперь, когда я добавляю новую стратегию в свою таблицу, новая добавленная стратегия не применяется в веб-приложении. Мне все еще нужно перезагрузить сервер, чтобы он заработал.
Обновление
Я переместил приведенный выше код в службу, которая вызывается при каждом действии. Мне все еще нужно перезагрузить сервер.