diff --git a/app/models/messenger.rb b/app/models/messenger.rb index 83b8c6a..38404ee 100644 --- a/app/models/messenger.rb +++ b/app/models/messenger.rb @@ -47,21 +47,8 @@ class Messenger end channels.each do |channel| - uri = URI url params[:channel] = channel - http_options = { use_ssl: uri.scheme == 'https' } - http_options[:verify_mode] = OpenSSL::SSL::VERIFY_NONE unless RedmineMessenger.setting? :messenger_verify_ssl - begin - req = Net::HTTP::Post.new uri - req.set_form_data payload: params.to_json - Net::HTTP.start uri.hostname, uri.port, http_options do |http| - response = http.request req - Rails.logger.warn response.inspect unless [Net::HTTPSuccess, Net::HTTPRedirection, Net::HTTPOK].include? response - end - rescue StandardError => e - Rails.logger.warn "cannot connect to #{url}" - Rails.logger.warn e - end + DeliverMessageJob.perform_later url, params end end @@ -304,4 +291,26 @@ class Messenger [] end end + + class DeliverMessageJob < ActiveJob::Base + queue_as :default + + def perform(url, params) + uri = URI url + params[:channel] = channel + http_options = { use_ssl: uri.scheme == 'https' } + http_options[:verify_mode] = OpenSSL::SSL::VERIFY_NONE unless RedmineMessenger.setting? :messenger_verify_ssl + begin + req = Net::HTTP::Post.new uri + req.set_form_data payload: params.to_json + Net::HTTP.start uri.hostname, uri.port, http_options do |http| + response = http.request req + Rails.logger.warn response.inspect unless [Net::HTTPSuccess, Net::HTTPRedirection, Net::HTTPOK].include? response + end + rescue StandardError => e + Rails.logger.warn "cannot connect to #{url}" + Rails.logger.warn e + end + end + end end