db-evolve 0.3.2 → 0.3.3
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 +4 -4
- data/lib/tasks/db.rb +20 -3
- data/lib/tasks/db_mock.rb +22 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fd431b52d3cc53adc7169b32e9bf06d9aa0eba57
|
4
|
+
data.tar.gz: c8162d9e1f347a8c8cc9b30145764d6f928ae5e3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 03ccbeb7750dec593c5271b5dbae4e2140d4fe854845cd759778d56afdc72b70763f3e05933c61bf2643ff6ac56cace98c32e89d5b1b16d6c77d4f745556d186
|
7
|
+
data.tar.gz: 892af42ab6744eefcd0f27d0b5634464f567585862a63aa2d184bb7256f8f7991196cbe2c46a17f12c5fd7ca918ffffc621d641bce990b9ff338ae7cd0e86455
|
data/lib/tasks/db.rb
CHANGED
@@ -83,6 +83,8 @@ def do_evolve(noop, yes, nowait)
|
|
83
83
|
existing_tables, existing_indexes = load_existing_tables()
|
84
84
|
|
85
85
|
require_relative 'db_mock'
|
86
|
+
|
87
|
+
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.existing_tables = existing_tables
|
86
88
|
|
87
89
|
require Rails.root + 'db/schema'
|
88
90
|
|
@@ -663,8 +665,11 @@ def calc_column_changes(tbl, existing_cols, schema_cols)
|
|
663
665
|
scale_changed = (sc.type=="decimal" and sc_scale!=ec.scale)
|
664
666
|
if type_changed or limit_changed or precision_changed or scale_changed
|
665
667
|
pg_a.change_column(tbl, sc.name, sc.type.to_sym, sc.opts)
|
668
|
+
while $tmp_to_run.length > 1
|
669
|
+
$tmp_to_run.pop # in later versions of rails change_column runs extra crap we don't want
|
670
|
+
end
|
666
671
|
end
|
667
|
-
if normalize_default(ec.default) != sc.opts[:default]
|
672
|
+
if normalize_default(ec.default, type: ec.type) != normalize_default(sc.opts[:default], type: sc.type)
|
668
673
|
pg_a.change_column_default(tbl, sc.name, sc.opts[:default])
|
669
674
|
end
|
670
675
|
sc_null = sc.opts.has_key?(:null) ? sc.opts[:null] : true
|
@@ -684,14 +689,26 @@ def calc_column_changes(tbl, existing_cols, schema_cols)
|
|
684
689
|
return to_run, rename_cols
|
685
690
|
end
|
686
691
|
|
687
|
-
def normalize_default default
|
688
|
-
|
692
|
+
def normalize_default default, type: nil
|
693
|
+
type = type.to_s unless type==nil
|
694
|
+
unless default==nil
|
695
|
+
default = default.to_i if type=='integer'
|
696
|
+
default = default.truish? if type=='boolean' && (default.is_a?(String) || default.is_a?(Symbol))
|
697
|
+
default = default.to_s if default.is_a? Symbol
|
698
|
+
end
|
689
699
|
if (default.respond_to?(:infinite?) && default.infinite?) || default.is_a?(String) && (default.downcase == 'infinity' || default.downcase == '-infinity')
|
690
700
|
default = default.to_s.downcase
|
691
701
|
end
|
692
702
|
return default
|
693
703
|
end
|
694
704
|
|
705
|
+
class String
|
706
|
+
def truish?
|
707
|
+
return true if self == true || self =~ (/(true|t|yes|y|1)$/i)
|
708
|
+
return false if self == false || self.blank? || self =~ (/(false|f|no|n|0)$/i)
|
709
|
+
raise ArgumentError.new("i don't know... is \"#{self}\" truish?")
|
710
|
+
end
|
711
|
+
end
|
695
712
|
|
696
713
|
$tmp_to_run = []
|
697
714
|
|
data/lib/tasks/db_mock.rb
CHANGED
@@ -2,13 +2,35 @@ require 'pg'
|
|
2
2
|
|
3
3
|
module ActiveRecord
|
4
4
|
module ConnectionAdapters
|
5
|
+
class FakeResult
|
6
|
+
def fields
|
7
|
+
return []
|
8
|
+
end
|
9
|
+
def values
|
10
|
+
return []
|
11
|
+
end
|
12
|
+
def clear
|
13
|
+
return nil
|
14
|
+
end
|
15
|
+
end
|
5
16
|
class PostgreSQLAdapter
|
6
17
|
def execute(sql, name = nil)
|
7
18
|
$tmp_to_run.append sql
|
19
|
+
return FakeResult.new
|
20
|
+
end
|
21
|
+
def async_exec(sql, params_result_format)
|
22
|
+
$tmp_to_run.append sql
|
23
|
+
return FakeResult.new
|
8
24
|
end
|
9
25
|
def table_exists?(name)
|
10
26
|
false
|
11
27
|
end
|
28
|
+
def columns(table_name)
|
29
|
+
return @@existing_tables[table_name]
|
30
|
+
end
|
31
|
+
def self.existing_tables= existing_tables
|
32
|
+
@@existing_tables = existing_tables
|
33
|
+
end
|
12
34
|
def clear_cache!
|
13
35
|
end
|
14
36
|
def quote_string s
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: db-evolve
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Derek Anderson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-21 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A diff/patch-esque tool to replace schema migrations in Ruby. See https://github.com/keredson/ruby-db-evolve
|
14
14
|
for details.
|