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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/tasks/db.rb +20 -3
  3. data/lib/tasks/db_mock.rb +22 -0
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3c2d219d9eb136d9fc77ef61db3de22b60e4e045
4
- data.tar.gz: 1add3a0300f4ea0445c05a56b85e6a01c7b72cbd
3
+ metadata.gz: fd431b52d3cc53adc7169b32e9bf06d9aa0eba57
4
+ data.tar.gz: c8162d9e1f347a8c8cc9b30145764d6f928ae5e3
5
5
  SHA512:
6
- metadata.gz: 8d694515230ef89f8149cdfd6a80853bcb8760ce660dc9a002bdc4a14cb2aec30d18b8095fe92cd77b568ec8d0aaa92f99df3cd6cb90559d97caad82f5f2cfd0
7
- data.tar.gz: ce6e122c6fe1000a2167569effc8e4013de3b124da61516abdf6247b997cf78e9e5a10ec5530816d2233c9661c0b93851bf4b55922406406cca36d19131acaf7
6
+ metadata.gz: 03ccbeb7750dec593c5271b5dbae4e2140d4fe854845cd759778d56afdc72b70763f3e05933c61bf2643ff6ac56cace98c32e89d5b1b16d6c77d4f745556d186
7
+ data.tar.gz: 892af42ab6744eefcd0f27d0b5634464f567585862a63aa2d184bb7256f8f7991196cbe2c46a17f12c5fd7ca918ffffc621d641bce990b9ff338ae7cd0e86455
@@ -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
- default = default.to_s if default.is_a? Symbol
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
 
@@ -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.2
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-09 00:00:00.000000000 Z
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.