redshift_simple_migrator 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 01923b9e53ca268191c749379cc7e8ba0f3ba2db
4
+ data.tar.gz: 355dc3153e7148fdee4d3e5858ccaae1ab00e131
5
+ SHA512:
6
+ metadata.gz: 976fa156dd49aa6214ddaa7ee32b27406a7dc5b8699c8c86da9eab78413c2342cf3705acb3317e81a0d84c6c3e6720c0b2cdee96ae089879ac6bbc2f72339bb1
7
+ data.tar.gz: dba4b32033ef4f92d6a0f58e1eb3ca18e87b5eb78816842350d89da2ed0dea3e20bd4cae35ad2fe349e0c201ebc67398543b4a8f9ae6834a3b324677cebc5b2d
data/.gitignore ADDED
@@ -0,0 +1,12 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+
11
+ /database.yml
12
+ /migrate
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/.travis.yml ADDED
@@ -0,0 +1,11 @@
1
+ language: ruby
2
+ addons:
3
+ postgresql: "9.4"
4
+ rvm:
5
+ - 2.2.1
6
+ before_install: gem install bundler -v 1.10.3
7
+ before_script:
8
+ - psql -c 'create database travis_ci_test;' -U postgres
9
+ - cp spec/config.travis.yml spec/config.yml
10
+ env:
11
+ - REDSHIFT_ENV=test
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in redshift_simple_migrator.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,125 @@
1
+ # RedshiftSimpleMigrator
2
+ [![Build Status](https://travis-ci.org/joker1007/redshift_simple_migrator.svg?branch=master)](https://travis-ci.org/joker1007/redshift_simple_migrator)
3
+
4
+ this gem is super simple migrator for AWS Redshift (and PostgreSQL).
5
+
6
+ ## Installation
7
+
8
+ Add this line to your application's Gemfile:
9
+
10
+ ```ruby
11
+ gem 'redshift_simple_migrator'
12
+ ```
13
+
14
+ And then execute:
15
+
16
+ $ bundle
17
+
18
+ Or install it yourself as:
19
+
20
+ $ gem install redshift_simple_migrator
21
+
22
+ ## Usage
23
+
24
+ ### Define migration
25
+
26
+ Migration definition is like ActiveRecord::Migration,
27
+ but this gem supports only `execute` method.
28
+ It has no other migration dsl.
29
+
30
+ #### Migration File
31
+
32
+ ```ruby
33
+ class CreateKpiMiddleTable < RedshiftSimpleMigrator::Migration
34
+ def up
35
+ execute <<-SQL
36
+ CREATE TABLE company_users DISTKEY (id) AS
37
+ SELECT
38
+ a.id,
39
+ a.company_id
40
+ FROM
41
+ users a
42
+ INNER JOIN companies b ON a.company_id = b.id;
43
+ SQL
44
+ end
45
+
46
+ def down
47
+ execute <<-SQL
48
+ DROP TABLE company_users;
49
+ SQL
50
+ end
51
+ end
52
+ ```
53
+
54
+ #### File name convention
55
+
56
+ File name convention is same with ActiveRecord::Migration.
57
+
58
+ ```
59
+ % ls redshift/migrate/
60
+ 001_create_kpi_middle_table.rb
61
+ ```
62
+
63
+ ### Command
64
+
65
+ ```sh
66
+ # Show current migration version
67
+ $ redshift_simple_migrator version -c <config.yml>
68
+
69
+ # List execute migrations
70
+ $ redshift_simple_migrator list <TARGET_VERSION> -c <config.yml> -p <migrations_path>
71
+
72
+ # Execute migration
73
+ $ redshift_simple_migrator migrate <TARGET_VERSION> -c <config.yml> -p <migrations_path>
74
+ ```
75
+
76
+ If you use with rails, config is autoloaded from `config/redshift_simple_migrator.yml`, and define Rake tasks.
77
+
78
+ ### Rake tasks
79
+
80
+ ```
81
+ rake redshift:migrate # Migrate the AWS Redshift (options: VERSION=x)
82
+ rake redshift:migrate:status # Display status of AWS Redshift migration (options: VERSION=x)
83
+ ```
84
+
85
+ ### config.yml example
86
+
87
+ ```yml
88
+ default: &default
89
+ host: hogehoge.redshift.amazonaws.com
90
+ port: 5439
91
+ dbname: sample
92
+ user: admin
93
+ password: password
94
+ connect_timeout: 30000
95
+ schema_migrations_table_name: redshift_schema_migrations
96
+
97
+ development:
98
+ <<: *default
99
+ ```
100
+
101
+ If `schema_migrations_table_name` table doesn't exist, this gem creates the table automatically.
102
+
103
+ `schema_migrations` table schema is following.
104
+
105
+ ```sql
106
+ CREATE TABLE <schema_migrations_table_name> (version text NOT NULL)
107
+ ```
108
+
109
+ ## TODO
110
+ - Refine `migrations_path` config.
111
+ - Write test codes.
112
+
113
+ If you want to change target environment, set `REDSHIFT_ENV` environment variable.
114
+ For example, `REDSHIFT_ENV=prouduction redshift_simple_migrator migrate -c config.yml -p db/migrate`
115
+
116
+ ## Development
117
+
118
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake false` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment. Run `bundle exec redshift_simple_migrator` to use the gem in this directory, ignoring other installed copies of this gem.
119
+
120
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
121
+
122
+ ## Contributing
123
+
124
+ Bug reports and pull requests are welcome on GitHub at https://github.com/joker1007/redshift_simple_migrator.
125
+
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
data/bin/console ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "redshift_simple_migrator"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ require "pry"
10
+ Pry.start
data/bin/setup ADDED
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "redshift_simple_migrator"
5
+
6
+ RedshiftSimpleMigrator::CLI.start(ARGV)
@@ -0,0 +1,61 @@
1
+ require 'thor'
2
+
3
+ module RedshiftSimpleMigrator
4
+ class CLI < Thor
5
+ desc "version", "Show migration version"
6
+ option :config, required: true, type: :string, aliases: :c
7
+ def version
8
+ with_migrator do |m|
9
+ current_version = m.current_version
10
+ puts "Current version is #{current_version}"
11
+ end
12
+ end
13
+
14
+ desc "list [VERSION]", "List migration definitions"
15
+ option :config, required: true, type: :string, aliases: :c
16
+ option :path, required: true, type: :string, aliases: :p
17
+ def list(version = nil)
18
+ with_migrator do |m|
19
+ direction, migrations = m.run_migrations(version)
20
+ migrations.each do |migration|
21
+ puts "#{direction} #{migration.version} #{migration.class.to_s}"
22
+ end
23
+ end
24
+ end
25
+
26
+ desc "migrate [VERSION]", "run migration"
27
+ option :config, required: true, type: :string, aliases: :c
28
+ option :path, required: true, type: :string, aliases: :p
29
+ def migrate(version = nil)
30
+ with_migrator do |m|
31
+ m.run(version)
32
+ end
33
+ end
34
+
35
+ private
36
+
37
+ def load_config
38
+ raise "Config file is not found" unless File.exist?(options[:config])
39
+ RedshiftSimpleMigrator.config.load(options[:config])
40
+ end
41
+
42
+ def set_migrations_path
43
+ raise "Migrations path is not found" unless File.exist?(options[:path])
44
+ RedshiftSimpleMigrator.config.migrations_path = options[:path]
45
+ end
46
+
47
+ def migrator
48
+ return @migrator if @migrator
49
+
50
+ load_config
51
+ set_migrations_path
52
+ @migrator = Migrator.new
53
+ end
54
+
55
+ def with_migrator
56
+ yield migrator
57
+ ensure
58
+ migrator.close if migrator
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,36 @@
1
+ require 'singleton'
2
+ require 'active_support/configurable'
3
+
4
+ module RedshiftSimpleMigrator
5
+ class Configuration
6
+ include Singleton
7
+ include ActiveSupport::Configurable
8
+
9
+ config_accessor :schema_migrations_table_name do
10
+ "schema_migrations"
11
+ end
12
+
13
+ config_accessor :migrations_path
14
+
15
+ config_accessor :host, :port, :dbname, :user, :password, :connect_timeout
16
+
17
+ def load(config_file, default_env = "development")
18
+ env = ENV["REDSHIFT_ENV"] || ENV["RAILS_ENV"] || ENV["RACK_ENV"] || default_env
19
+ config = YAML.load_file(config_file)[env]
20
+ config.each do |k, v|
21
+ send("#{k}=", v)
22
+ end
23
+ end
24
+
25
+ def database_config
26
+ {
27
+ host: host,
28
+ port: port,
29
+ dbname: dbname,
30
+ user: user,
31
+ password: password,
32
+ connect_timeout: connect_timeout
33
+ }
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,34 @@
1
+ require 'pg'
2
+ require 'yaml'
3
+ require 'active_support/core_ext/module'
4
+
5
+ module RedshiftSimpleMigrator
6
+ class Connection
7
+ attr_reader :connection
8
+
9
+ delegate \
10
+ :close,
11
+ :exec,
12
+ :async_exec,
13
+ :exec_params,
14
+ :escape,
15
+ :escape_string,
16
+ :escape_identifier,
17
+ :escape_literal,
18
+ to: :connection
19
+
20
+ def initialize
21
+ @connection = PG.connect(RedshiftSimpleMigrator.config.database_config)
22
+ @connection.type_map_for_results = PG::BasicTypeMapForResults.new(@connection)
23
+ end
24
+
25
+ def with_transaction(&block)
26
+ connection.exec("BEGIN")
27
+ block.call(self)
28
+ connection.exec("COMMIT")
29
+ rescue => e
30
+ connection.exec("ROLLBACK") if connection
31
+ raise e
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,27 @@
1
+ module RedshiftSimpleMigrator
2
+ class Migration
3
+ attr_reader :connection, :version
4
+
5
+ delegate \
6
+ :exec,
7
+ :escape,
8
+ :escape_string,
9
+ :escape_identifier,
10
+ :escape_literal,
11
+ to: :connection
12
+ alias :execute :exec
13
+
14
+ def initialize(connection, version)
15
+ @connection = connection
16
+ @version = version
17
+ end
18
+
19
+ def up
20
+ raise NotImplementedError
21
+ end
22
+
23
+ def down
24
+ raise NotImplementedError
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,114 @@
1
+ require 'active_support/inflector'
2
+
3
+ module RedshiftSimpleMigrator
4
+ class Migrator
5
+ attr_reader :connection, :migrations_path, :schema_migrations_table_name
6
+
7
+ delegate :close, to: :connection
8
+
9
+ MIGRATION_FILE_PATTERN = /^(?<version>\d+)_(?<migration_name>.*)\.rb$/.freeze
10
+
11
+ def initialize
12
+ config = RedshiftSimpleMigrator.config
13
+ @connection = Connection.new
14
+ @migrations_path = config.migrations_path
15
+ @schema_migrations_table_name =
16
+ @connection.escape_identifier(config.schema_migrations_table_name)
17
+
18
+ @current_version_is_loaded = nil
19
+ @current_migrations = nil
20
+ end
21
+
22
+ def current_migrations
23
+ return @current_migrations if @current_migrations
24
+
25
+ migrations = Dir.entries(migrations_path).map do |name|
26
+ if match = MIGRATION_FILE_PATTERN.match(name)
27
+ load File.expand_path(File.join(migrations_path, name))
28
+ migration_class = match[:migration_name].camelcase.constantize
29
+ migration_class.new(connection, match[:version].to_i)
30
+ end
31
+ end
32
+ @current_migrations = migrations.compact
33
+ end
34
+
35
+ def run_migrations(target_version = nil)
36
+ direction = detect_direction(target_version)
37
+ if direction == :up
38
+ migrations = current_migrations.select do |m|
39
+ include_target = target_version ? target_version.to_i >= m.version : true
40
+ include_target && m.version > current_version.to_i
41
+ end
42
+ return direction, migrations.sort_by(&:version)
43
+ else
44
+ migrations = current_migrations.select do |m|
45
+ target_version.to_i < m.version &&
46
+ m.version <= current_version.to_i
47
+ end
48
+ return direction, migrations.sort_by {|m| -(m.version) }
49
+ end
50
+ end
51
+
52
+ def current_version
53
+ return @current_version if @current_version_is_loaded
54
+
55
+ connection.async_exec(get_version_query) do |result|
56
+ versions = result.map do |row|
57
+ row["version"].to_i
58
+ end
59
+ @current_version = versions.max
60
+ @current_version_is_loaded = true
61
+ @current_version
62
+ end
63
+ rescue PG::UndefinedTable
64
+ connection.exec(create_schema_migrations_table_query)
65
+ retry
66
+ end
67
+
68
+ def run(target_version = nil)
69
+ direction, migrations = run_migrations(target_version)
70
+ connection.with_transaction do
71
+ migrations.each do |m|
72
+ m.send(direction)
73
+ if direction == :up
74
+ insert_version(m.version)
75
+ else
76
+ remove_version(m.version)
77
+ end
78
+ end
79
+ end
80
+ end
81
+
82
+ private
83
+
84
+ def get_version_query
85
+ "SELECT version FROM #{schema_migrations_table_name}"
86
+ end
87
+
88
+ def create_schema_migrations_table_query
89
+ "CREATE TABLE IF NOT EXISTS #{schema_migrations_table_name} (version text NOT NULL)"
90
+ end
91
+
92
+ def detect_direction(target_version)
93
+ return :up unless target_version && current_version
94
+
95
+ if current_version.to_i <= target_version.to_i
96
+ :up
97
+ else
98
+ :down
99
+ end
100
+ end
101
+
102
+ def insert_version(version)
103
+ connection.exec_params(<<-SQL, [version.to_s])
104
+ INSERT INTO #{schema_migrations_table_name} (version) VALUES ($1)
105
+ SQL
106
+ end
107
+
108
+ def remove_version(version)
109
+ connection.exec_params(<<-SQL, [version.to_s])
110
+ DELETE FROM #{schema_migrations_table_name} WHERE version = $1
111
+ SQL
112
+ end
113
+ end
114
+ end
@@ -0,0 +1,18 @@
1
+ module RedshiftSimpleMigrator
2
+ class Railtie < Rails::Railtie
3
+ initializer "redshift_simple_migrator.initialization" do
4
+ RedshiftSimpleMigrator.configure do |c|
5
+ c.migrations_path = Rails.root.join("redshift", "migrate").to_s
6
+ end
7
+ end
8
+
9
+ config.after_initialize do
10
+ config_yml = Rails.root.join("config", "redshift_simple_migrator.yml").to_s
11
+ RedshiftSimpleMigrator.config.load(config_yml) if File.exist?(config_yml)
12
+ end
13
+
14
+ rake_tasks do
15
+ load "redshift_simple_migrator/tasks/redshift.rake"
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,26 @@
1
+ namespace :redshift do
2
+ desc "Migrate the AWS Redshift (options: VERSION=x)"
3
+ task migrate: [:environment] do
4
+ begin
5
+ migrator = RedshiftSimpleMigrator::Migrator.new
6
+ migrator.run(ENV["VERSION"])
7
+ ensure
8
+ migrator.close
9
+ end
10
+ end
11
+
12
+ namespace :migrate do
13
+ desc "Display status of AWS Redshift migration (options: VERSION=x)"
14
+ task status: [:environment] do
15
+ begin
16
+ migrator = RedshiftSimpleMigrator::Migrator.new
17
+ direction, migrations = migrator.run_migrations(ENV["VERSION"])
18
+ migrations.each do |migration|
19
+ puts "#{direction} #{migration.version} #{migration.class.to_s}"
20
+ end
21
+ ensure
22
+ migrator.close
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,3 @@
1
+ module RedshiftSimpleMigrator
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,21 @@
1
+ require "redshift_simple_migrator/version"
2
+
3
+ module RedshiftSimpleMigrator
4
+ def self.config
5
+ RedshiftSimpleMigrator::Configuration.instance
6
+ end
7
+
8
+ def self.configure
9
+ yield self.config
10
+ end
11
+ end
12
+
13
+ require "redshift_simple_migrator/configuration"
14
+ require "redshift_simple_migrator/connection"
15
+ require "redshift_simple_migrator/migrator"
16
+ require "redshift_simple_migrator/migration"
17
+ require "redshift_simple_migrator/cli"
18
+
19
+ if defined?(Rails)
20
+ require "redshift_simple_migrator/railtie"
21
+ end
@@ -0,0 +1,32 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'redshift_simple_migrator/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "redshift_simple_migrator"
8
+ spec.version = RedshiftSimpleMigrator::VERSION
9
+ spec.authors = ["joker1007"]
10
+ spec.email = ["kakyoin.hierophant@gmail.com"]
11
+
12
+ spec.summary = %q{Simple schema migrator for AWS Redshift (and PostgreSQL)}
13
+ spec.description = %q{Simple schema migrator for AWS Redshift (and PostgreSQL)}
14
+ spec.homepage = "https://github.com/joker1007/redshift_simple_migrator"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
+ spec.bindir = "exe"
18
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_runtime_dependency "pg", ">= 0.18"
22
+ spec.add_runtime_dependency "activesupport", ">= 4"
23
+ spec.add_runtime_dependency "thor"
24
+
25
+ spec.add_development_dependency "bundler", "~> 1.10"
26
+ spec.add_development_dependency "rake", "~> 10.0"
27
+ spec.add_development_dependency "rspec"
28
+ spec.add_development_dependency "rspec-power_assert"
29
+ spec.add_development_dependency "pry"
30
+ spec.add_development_dependency "tapp"
31
+ spec.add_development_dependency "tapp-awesome_print"
32
+ end
metadata ADDED
@@ -0,0 +1,203 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: redshift_simple_migrator
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - joker1007
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2015-06-16 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: pg
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0.18'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0.18'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '4'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '4'
41
+ - !ruby/object:Gem::Dependency
42
+ name: thor
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.10'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.10'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '10.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '10.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec-power_assert
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: pry
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: tapp
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: tapp-awesome_print
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ description: Simple schema migrator for AWS Redshift (and PostgreSQL)
154
+ email:
155
+ - kakyoin.hierophant@gmail.com
156
+ executables:
157
+ - redshift_simple_migrator
158
+ extensions: []
159
+ extra_rdoc_files: []
160
+ files:
161
+ - ".gitignore"
162
+ - ".rspec"
163
+ - ".travis.yml"
164
+ - Gemfile
165
+ - README.md
166
+ - Rakefile
167
+ - bin/console
168
+ - bin/setup
169
+ - exe/redshift_simple_migrator
170
+ - lib/redshift_simple_migrator.rb
171
+ - lib/redshift_simple_migrator/cli.rb
172
+ - lib/redshift_simple_migrator/configuration.rb
173
+ - lib/redshift_simple_migrator/connection.rb
174
+ - lib/redshift_simple_migrator/migration.rb
175
+ - lib/redshift_simple_migrator/migrator.rb
176
+ - lib/redshift_simple_migrator/railtie.rb
177
+ - lib/redshift_simple_migrator/tasks/redshift.rake
178
+ - lib/redshift_simple_migrator/version.rb
179
+ - redshift_simple_migrator.gemspec
180
+ homepage: https://github.com/joker1007/redshift_simple_migrator
181
+ licenses: []
182
+ metadata: {}
183
+ post_install_message:
184
+ rdoc_options: []
185
+ require_paths:
186
+ - lib
187
+ required_ruby_version: !ruby/object:Gem::Requirement
188
+ requirements:
189
+ - - ">="
190
+ - !ruby/object:Gem::Version
191
+ version: '0'
192
+ required_rubygems_version: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - ">="
195
+ - !ruby/object:Gem::Version
196
+ version: '0'
197
+ requirements: []
198
+ rubyforge_project:
199
+ rubygems_version: 2.4.6
200
+ signing_key:
201
+ specification_version: 4
202
+ summary: Simple schema migrator for AWS Redshift (and PostgreSQL)
203
+ test_files: []