43 lines
1.5 KiB
Ruby
43 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
|