我计划在Web应用程序中选择一个选项,以添加更多的Omniauth提供程序/策略,而无需重新部署或重新启动Web应用程序。
我添加了一个表,可以在其中保存新策略的所需值,然后在 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
现在,每当我在表中添加新策略时,新添加的策略都不会应用于Web应用程序。我仍然需要重新启动服务器才能使其正常工作。
我将上面的代码移到了每个操作都被调用的服务上。我仍然需要重新启动服务器。