blue-shift 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9541a96cc11b59a2d3d4f0186f3149be133b7137
4
- data.tar.gz: 77ac01b0820cd0f28405ee87a0e73d4fec88597f
3
+ metadata.gz: 491693564e9c51d5a965ea7136447851027d93bb
4
+ data.tar.gz: 5d9e331a804a4a52295690a3c97fc8173273da8f
5
5
  SHA512:
6
- metadata.gz: cb4e2f82e887ed74b4dc01e5ef8f88361fea131def1747176e321b340d397f356af27c1ba080c8a199d6f04d9b48544811468dd2d64d87ca39e5d5fbed4abf34
7
- data.tar.gz: 60cd4af5dbe206989acc7724edf066bc947e289a1acdbef4dff0cb58e9946d66b8f7a3d9ed93640cd844901e54eadb4d379c93ddcdae508c22e4d3e909210f7a
6
+ metadata.gz: 5ba7a3d381c8dfb2d1108ee981b2b29c635a8f19d379db642ebe47ffb7c742dcd87c6febf9b1ca72c6c669fd7397cddbfca64e5b1ff1142b0b301923936e4f24
7
+ data.tar.gz: ee01aa14691d1ce4ab192131a2586dc42f64a23a088d021ca815543e634d94cc655b988d0fa11e350ccfd8f505e903685ae0cf16b197dc76da0c989ad6410feb
File without changes
data/lib/blueshift.rb CHANGED
@@ -3,6 +3,7 @@ require 'blueshift/version'
3
3
  require 'blueshift/migration'
4
4
  require 'sequel'
5
5
  require 'sequel/adapters/redshift'
6
+ require 'sequel/extensions/schema_dumper_ext'
6
7
 
7
8
  module Blueshift
8
9
  def self.migration(&block)
@@ -9,6 +9,8 @@ module Blueshift
9
9
  class Migration
10
10
  attr_reader :postgres_migration, :redshift_migration, :use_transactions
11
11
  MIGRATION_DIR = File.join(Dir.pwd, 'db/migrations')
12
+ SCHEMA_COLUMN = :filename
13
+ SCHEMA_TABLE = :schema_migrations
12
14
 
13
15
  def initialize(&block)
14
16
  @postgres_migration = Sequel::SimpleMigration.new
@@ -44,13 +46,21 @@ module Blueshift
44
46
  end
45
47
  end
46
48
 
49
+ def self.insert_into_schema_migrations(db)
50
+ migration_files = Dir["#{MIGRATION_DIR}/*"]
51
+ migration_files.each do |path|
52
+ f = File.basename(path)
53
+ db.from(SCHEMA_TABLE).insert(SCHEMA_COLUMN=>f)
54
+ end
55
+ end
56
+
47
57
  class << self
48
58
  def run_pg!
49
- Sequel::Migrator.run(POSTGRES_DB, MIGRATION_DIR, column: :postgres_version)
59
+ Sequel::Migrator.run(POSTGRES_DB, MIGRATION_DIR)
50
60
  end
51
61
 
52
62
  def run_redshift!
53
- Sequel::Migrator.run(REDSHIFT_DB, MIGRATION_DIR, column: :redshift_version)
63
+ Sequel::Migrator.run(REDSHIFT_DB, MIGRATION_DIR)
54
64
  end
55
65
 
56
66
  def run_both!
@@ -1,3 +1,3 @@
1
1
  module Blueshift
2
- VERSION = '0.1.1'
2
+ VERSION = '0.1.2'
3
3
  end
@@ -9,7 +9,7 @@ module Sequel
9
9
  gen = dump_table_generator(table, options)
10
10
  commands = [gen.dump_columns, gen.dump_constraints, gen.dump_indexes].reject { |x| x == '' }.join("\n\n")
11
11
 
12
- "create_table(#{table.inspect}#{table_options(table, gen, options)}) do\n#{commands.gsub(/^/o, ' ')}\nend"
12
+ "create_table!(#{table.inspect}#{table_options(table, gen, options)}) do\n#{commands.gsub(/^/o, ' ')}\nend"
13
13
  end
14
14
 
15
15
  def table_options(table, gen, options)
@@ -0,0 +1,10 @@
1
+ require 'sequel/extensions/schema_dumper'
2
+ module Sequel
3
+ module SchemaDumper
4
+ alias_method :dump_table_schema_without_force, :dump_table_schema
5
+
6
+ def dump_table_schema(table, opts=OPTS)
7
+ dump_table_schema_without_force(table, opts).gsub('create_table(', 'create_table!(')
8
+ end
9
+ end
10
+ end
@@ -15,13 +15,16 @@ namespace :pg do
15
15
  desc 'Dumps the Postgres schema to a file'
16
16
  task :dump => :ensure_db_dir do
17
17
  Blueshift::POSTGRES_DB.extension :schema_dumper
18
- File.open(File.join(path, 'schema.rb'), 'w') { |f| f << Blueshift::POSTGRES_DB.dump_schema_migration(same_db: true) }
18
+ File.open(File.join(path, 'schema.rb'), 'w') { |f| f << Blueshift::POSTGRES_DB.dump_schema_migration(same_db: false) }
19
19
  end
20
20
 
21
21
  desc 'Loads the Postgres schema from the file to the database'
22
22
  task :load => :ensure_db_dir do
23
- eval(File.read(File.join(path, 'schema.rb'))).apply(Blueshift::POSTGRES_DB, :up)
23
+ migration = eval(File.read(File.join(path, 'schema.rb')))
24
+ migration.apply(Blueshift::POSTGRES_DB, :up)
24
25
  puts 'loaded schema into Postgres'
26
+ Blueshift::Migration.insert_into_schema_migrations(Blueshift::POSTGRES_DB)
27
+ puts 'inserted schema migrations entries'
25
28
  end
26
29
  end
27
30
 
@@ -29,6 +32,7 @@ namespace :pg do
29
32
  task :migrate do
30
33
  Blueshift::POSTGRES_DB.logger = logger
31
34
  Blueshift::Migration.run_pg!
35
+ rake 'pg:schema:dump'
32
36
  end
33
37
  end
34
38
 
@@ -43,8 +47,11 @@ namespace :redshift do
43
47
 
44
48
  desc 'Loads the Postgres schema from the file to the database'
45
49
  task :load => :ensure_db_dir do
46
- eval(File.read(File.join(path, 'schema_redshift.rb'))).apply(Blueshift::REDSHIFT_DB, :up)
50
+ migration = eval(File.read(File.join(path, 'schema_redshift.rb')))
51
+ migration.apply(Blueshift::REDSHIFT_DB, :up)
47
52
  puts 'loaded schema into Redshift'
53
+ Blueshift::Migration.insert_into_schema_migrations(Blueshift::REDSHIFT_DB)
54
+ puts 'inserted schema migrations entries'
48
55
  end
49
56
  end
50
57
 
@@ -52,16 +59,17 @@ namespace :redshift do
52
59
  task :migrate do
53
60
  Blueshift::REDSHIFT_DB.logger = logger
54
61
  Blueshift::Migration.run_redshift!
62
+ rake 'redshift:schema:dump'
55
63
  end
56
64
  end
57
65
 
58
66
  namespace :blueshift do
59
67
  desc 'Runs migrations for both Postgres and Redshift'
60
- task :migrate do
68
+ task :migrate => ['pg:migrate', 'redshift:migrate'] do
61
69
  puts 'Running migrations for Postgres and Redshift...', ''
62
- Blueshift::POSTGRES_DB.logger = logger
63
- Blueshift::REDSHIFT_DB.logger = logger
64
- Blueshift::Migration.run_both!
65
70
  end
71
+
72
+ desc 'dummy'
73
+ task(:dummy) {}
66
74
  end
67
75
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blue-shift
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gabriel Mansour
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-09 00:00:00.000000000 Z
11
+ date: 2016-03-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sequel
@@ -114,6 +114,7 @@ files:
114
114
  - bin/console
115
115
  - bin/setup
116
116
  - blueshift.gemspec
117
+ - db/migrations/dummy_migration.rb
117
118
  - lib/blueshift.rb
118
119
  - lib/blueshift/migration.rb
119
120
  - lib/blueshift/railtie.rb
@@ -122,6 +123,7 @@ files:
122
123
  - lib/sequel/adapters/postgres_ext.rb
123
124
  - lib/sequel/adapters/redshift.rb
124
125
  - lib/sequel/extensions/redshift_schema_dumper.rb
126
+ - lib/sequel/extensions/schema_dumper_ext.rb
125
127
  - lib/tasks/generate_migration.rake
126
128
  - lib/tasks/schema.rake
127
129
  homepage: https://github.com/influitive/blueshift
@@ -143,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
145
  version: '0'
144
146
  requirements: []
145
147
  rubyforge_project:
146
- rubygems_version: 2.5.1
148
+ rubygems_version: 2.4.6
147
149
  signing_key:
148
150
  specification_version: 4
149
151
  summary: Amazon Redshift adapter for Sequel