42 lines
1.5 KiB
Ruby
42 lines
1.5 KiB
Ruby
class SerializeServiceProperties < ActiveRecord::Migration
|
|
def change
|
|
unless column_exists?(:services, :properties)
|
|
add_column :services, :properties, :text
|
|
end
|
|
|
|
Service.reset_column_information
|
|
|
|
associations =
|
|
{
|
|
AssemblaService: [:token, :subdomain],
|
|
CampfireService: [:token, :subdomain, :room],
|
|
EmailsOnPushService: [:recipients],
|
|
FlowdockService: [:token],
|
|
GemnasiumService: [:api_key, :token],
|
|
GitlabCiService: [:token, :project_url],
|
|
HipchatService: [:token, :room],
|
|
PivotaltrackerService: [:token],
|
|
SlackService: [:subdomain, :token, :room],
|
|
JenkinsService: [:project_url],
|
|
JiraService: [:project_url, :username, :password,
|
|
:api_version, :jira_issue_transition_id],
|
|
}
|
|
|
|
Service.find_each(batch_size: 500).each do |service|
|
|
associations[service.type.to_sym].each do |attribute|
|
|
service.send("#{attribute}=", service.attributes[attribute.to_s])
|
|
end
|
|
|
|
service.save(validate: false)
|
|
end
|
|
|
|
if column_exists?(:services, :project_url)
|
|
remove_column :services, :project_url, :string
|
|
remove_column :services, :subdomain, :string
|
|
remove_column :services, :room, :string
|
|
remove_column :services, :recipients, :text
|
|
remove_column :services, :api_key, :string
|
|
remove_column :services, :token, :string
|
|
end
|
|
end
|
|
end
|