Sha256: 26358f453fa13b856b373d3e58f35387acdfaf33e31003976c2fccab3654895e

Contents?: true

Size: 1.13 KB

Versions: 6

Compression:

Stored size: 1.13 KB

Contents

class ConvertProjectExtendedAttributesToProps < ActiveRecord::Migration
  def up
    add_column :projects, :props, :jsonb, default: "{}"

    require "progressbar"
    projects = Project.all
    pbar = ProgressBar.new("projects", projects.count)
    projects.find_each do |project|
      props = project.read_attribute(:extended_attributes) || {}
      props.merge!(project.read_attribute(:view_options) || {})

      props["unfuddle.projectId"] = props.delete("unfuddle_project_id") if props.key?("unfuddle_project_id")
      props["errbit.appId"] = props.delete("errbit_app_id") if props.key?("errbit_app_id")
      props["github.repo"] = props.delete("github_repo") if props.key?("github_repo")
      props["git.location"] = props.delete("git_location") if props.key?("git_location")

      props.keys.each do |old_key|
        next unless dependency_name = old_key[/^key_dependency\.(.*)$/, 1]
        new_key = "keyDependency.#{dependency_name}"
        props[new_key] = props.delete(old_key)
      end

      project.update_column :props, props
      pbar.inc
    end
    pbar.finish
  end

  def down
    remove_column :projects, :props
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
houston-core-0.8.0.pre db/migrate/20160625221840_convert_project_extended_attributes_to_props.rb
houston-core-0.7.0 db/migrate/20160625221840_convert_project_extended_attributes_to_props.rb
houston-core-0.7.0.beta4 db/migrate/20160625221840_convert_project_extended_attributes_to_props.rb
houston-core-0.7.0.beta3 db/migrate/20160625221840_convert_project_extended_attributes_to_props.rb
houston-core-0.7.0.beta2 db/migrate/20160625221840_convert_project_extended_attributes_to_props.rb
houston-core-0.7.0.beta db/migrate/20160625221840_convert_project_extended_attributes_to_props.rb