Make sure we run the migrations in a transaction.

This commit is contained in:
Guo Xiang Tan 2017-09-28 16:19:12 +08:00
parent 49f58ec190
commit b0708c1aac

View File

@ -2,20 +2,25 @@ module Jobs
class DiscourseChatMigrateFromSlackOfficial < Jobs::Onceoff class DiscourseChatMigrateFromSlackOfficial < Jobs::Onceoff
def execute_onceoff(args) def execute_onceoff(args)
# Check if slack plugin is installed by testing if the sitesetting exists # Check if slack plugin is installed by testing if the sitesetting exists
slack_installed = defined? DiscourseSlack slack_installed = defined?(DiscourseSlack)
if slack_installed if slack_installed
already_setup_rules = DiscourseChat::Channel.with_provider('slack').exists? already_setup_rules = DiscourseChat::Channel.with_provider('slack').exists?
already_setup_sitesettings = already_setup_sitesettings =
SiteSetting.chat_integration_slack_enabled || SiteSetting.chat_integration_slack_enabled ||
!SiteSetting.chat_integration_slack_access_token.blank? || SiteSetting.chat_integration_slack_access_token.present? ||
!SiteSetting.chat_integration_slack_incoming_webhook_token.blank? || SiteSetting.chat_integration_slack_incoming_webhook_token.present? ||
!SiteSetting.chat_integration_slack_outbound_webhook_url.blank? SiteSetting.chat_integration_slack_outbound_webhook_url.present?
if !already_setup_rules && !already_setup_sitesettings if !already_setup_rules && !already_setup_sitesettings
migrate_settings() ActiveRecord::Base.transaction do
migrate_data() migrate_settings
migrate_data
SiteSetting.slack_enabled = false
SiteSetting.chat_integration_slack_enabled = true
SiteSetting.chat_integration_enabled = true
end
end end
end end