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 +7 -0
- data/.gitignore +12 -0
- data/.rspec +2 -0
- data/.travis.yml +11 -0
- data/Gemfile +4 -0
- data/README.md +125 -0
- data/Rakefile +6 -0
- data/bin/console +10 -0
- data/bin/setup +7 -0
- data/exe/redshift_simple_migrator +6 -0
- data/lib/redshift_simple_migrator/cli.rb +61 -0
- data/lib/redshift_simple_migrator/configuration.rb +36 -0
- data/lib/redshift_simple_migrator/connection.rb +34 -0
- data/lib/redshift_simple_migrator/migration.rb +27 -0
- data/lib/redshift_simple_migrator/migrator.rb +114 -0
- data/lib/redshift_simple_migrator/railtie.rb +18 -0
- data/lib/redshift_simple_migrator/tasks/redshift.rake +26 -0
- data/lib/redshift_simple_migrator/version.rb +3 -0
- data/lib/redshift_simple_migrator.rb +21 -0
- data/redshift_simple_migrator.gemspec +32 -0
- metadata +203 -0
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
data/.rspec
ADDED
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
data/README.md
ADDED
@@ -0,0 +1,125 @@
|
|
1
|
+
# RedshiftSimpleMigrator
|
2
|
+
[](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
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,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,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: []
|