Class: RequestMigrations::Migration

Inherits:
Object
  • Object
show all
Extended by:
DSL
Defined in:
lib/request_migrations/migration.rb

Overview

Migration represents a migration for a specific version.

Examples:

class CombineNamesForUserMigration < RequestMigrations::Migration
  description %(transforms a user's first and last name to a combined name attribute)

  migrate if: -> data { data in type: 'user' } do |data|
    first_name = data.delete(:first_name)
    last_name  = data.delete(:last_name)

    data[:name] = "#{first_name} #{last_name}"
  end

  response if: -> res { res.successful? && res.request.params in controller: 'api/v1/users',
                                                                 action: 'show' } do |res|
    data = JSON.parse(res.body, symbolize_names: true)

    migrate!(data)

    res.body = JSON.generate(data)
  end
end

Defined Under Namespace

Modules: DSL Classes: ConditionalBlock

Instance Method Summary collapse

Methods included from DSL

description, extended, inherited, migrate, request, response

Instance Method Details

#migrate!(data) ⇒ Object



118
119
120
121
122
# File 'lib/request_migrations/migration.rb', line 118

def migrate!(data)
  self.class.migration_blocks.each { |block|
    instance_exec(data) { block.call(self, _1) }
  }
end

#migrate_request!(request) ⇒ Object



110
111
112
113
114
# File 'lib/request_migrations/migration.rb', line 110

def migrate_request!(request)
  self.class.request_blocks.each { |block|
    instance_exec(request) { block.call(self, _1) }
  }
end

#migrate_response!(response) ⇒ Object



126
127
128
129
130
# File 'lib/request_migrations/migration.rb', line 126

def migrate_response!(response)
  self.class.response_blocks.each { |block|
    instance_exec(response) { block.call(self, _1) }
  }
end