schema_plus 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml CHANGED
@@ -1,10 +1,12 @@
1
1
  rvm:
2
2
  - 1.8.7
3
3
  - 1.9.2
4
+ - 1.9.3
4
5
  gemfile:
5
6
  - gemfiles/Gemfile.rails-2.3
6
7
  - gemfiles/Gemfile.rails-3.0
7
8
  - gemfiles/Gemfile.rails-3.1
9
+ - gemfiles/Gemfile.rails-3.2
8
10
  before_script:
9
11
  - "mysql -e 'create database schema_plus_unittest;' > /dev/null"
10
12
  - "psql -c 'create database schema_plus_unittest;' -U postgres > /dev/null"
data/README.rdoc CHANGED
@@ -176,6 +176,7 @@ take advantage of auto-creation of foreign keys, you can re-enable it:
176
176
  == History
177
177
 
178
178
  * Recent Release notes:
179
+ * 0.3.3 - bug fix: properly handle boolean defaults in mysql
179
180
  * 0.3.2 - bug fix: make sure rake db:schema:load initializes schema_plus
180
181
  * 0.3.1 - bug fix for PostgreSQL schema dump after change_column_default(... nil)
181
182
  * 0.3.0 - add :default => expressions (Thanks to Luke Saunders). support rails 3.2 and ruby 1.9.3
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: /Users/ronen/github/schema_plus
3
3
  specs:
4
- schema_plus (0.3.2)
4
+ schema_plus (0.3.3)
5
5
  rails
6
6
  valuable
7
7
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: /Users/ronen/github/schema_plus
3
3
  specs:
4
- schema_plus (0.3.2)
4
+ schema_plus (0.3.3)
5
5
  rails
6
6
  valuable
7
7
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: /Users/ronen/github/schema_plus
3
3
  specs:
4
- schema_plus (0.3.2)
4
+ schema_plus (0.3.3)
5
5
  rails
6
6
  valuable
7
7
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: /Users/ronen/github/schema_plus
3
3
  specs:
4
- schema_plus (0.3.2)
4
+ schema_plus (0.3.3)
5
5
  rails
6
6
  valuable
7
7
 
@@ -124,20 +124,18 @@ module SchemaPlus
124
124
  def add_column_options!(sql, options)
125
125
  if options_include_default?(options)
126
126
  default = options[:default]
127
- # figure out if this is an expression and if not treat as standard default value
128
- expr = sql_for_function( (default.is_a? Hash) ? default[:expr] : default )
129
- if !expr && default.is_a?(Hash) && default[:expr]
130
- if default_expr_valid? default[:expr]
131
- expr = default[:expr]
132
- else
133
- raise(ArgumentError)
134
- end
127
+ if default.is_a? Hash
128
+ value = default[:value]
129
+ expr = sql_for_function(default[:expr]) || default[:expr] if default[:expr]
130
+ else
131
+ value = default
132
+ expr = sql_for_function(default)
135
133
  end
136
134
  if expr
135
+ raise ArgumentError, "Invalid default expression" unless default_expr_valid?(expr)
137
136
  sql << " DEFAULT #{expr}"
138
137
  else
139
- value = (default.is_a? Hash) ? default[:value] : default
140
- sql << " DEFAULT #{quote(value.to_s, options[:column])}" if value
138
+ sql << " DEFAULT #{quote(value, options[:column])}" if value
141
139
  end
142
140
  end
143
141
  # must explicitly check for :null to allow change_column to work on migrations
@@ -110,6 +110,9 @@ module SchemaPlus
110
110
  end
111
111
 
112
112
  def sql_for_function(function)
113
+ case function
114
+ when :now then 'CURRENT_TIMESTAMP'
115
+ end
113
116
  end
114
117
  end
115
118
  end
@@ -1,3 +1,3 @@
1
1
  module SchemaPlus
2
- VERSION = "0.3.2"
2
+ VERSION = "0.3.3"
3
3
  end
@@ -22,6 +22,7 @@ describe "Column definition" do
22
22
  it "should use the normal default" do
23
23
  should == "time_taken text DEFAULT '2011-12-11 00:00:00'"
24
24
  end
25
+
25
26
  end
26
27
 
27
28
  context "just default passed in hash" do
@@ -38,7 +39,11 @@ describe "Column definition" do
38
39
 
39
40
  context "default function passed as now" do
40
41
  before(:each) do
41
- connection.add_column_options!(@sql, { :default => :now })
42
+ begin
43
+ connection.add_column_options!(@sql, { :default => :now })
44
+ rescue ArgumentError => e
45
+ @raised_argument_error = e
46
+ end
42
47
  end
43
48
 
44
49
  subject { @sql }
@@ -56,8 +61,8 @@ describe "Column definition" do
56
61
  end
57
62
 
58
63
  if SchemaPlusHelpers.mysql?
59
- it "should use CURRENT_TIMESTAMP as the default" do
60
- should == "time_taken text DEFAULT 'now'"
64
+ it "should raise an error" do
65
+ @raised_argument_error.should be_a ArgumentError
61
66
  end
62
67
  end
63
68
  end
@@ -14,6 +14,11 @@ describe ActiveRecord::Migration do
14
14
  @model = Post
15
15
  end
16
16
 
17
+ it "should properly handle default values for booleans" do
18
+ expect { create_table(@model, :bool => { :METHOD => :boolean, :default => true }) }.should_not raise_error
19
+ @model.create.reload.bool.should be_true
20
+ end
21
+
17
22
  it "should create foreign keys" do
18
23
  create_table(@model, :user_id => {},
19
24
  :author_id => { :references => :users },
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: schema_plus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-03-22 00:00:00.000000000 Z
13
+ date: 2012-03-24 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
17
- requirement: &70126041366100 !ruby/object:Gem::Requirement
17
+ requirement: &70124822121760 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70126041366100
25
+ version_requirements: *70124822121760
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: valuable
28
- requirement: &70126041365680 !ruby/object:Gem::Requirement
28
+ requirement: &70124822121340 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *70126041365680
36
+ version_requirements: *70124822121340
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rake
39
- requirement: &70126041365180 !ruby/object:Gem::Requirement
39
+ requirement: &70124822120840 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: 0.8.7
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *70126041365180
47
+ version_requirements: *70124822120840
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: rspec
50
- requirement: &70126041364760 !ruby/object:Gem::Requirement
50
+ requirement: &70124822120420 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: '0'
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *70126041364760
58
+ version_requirements: *70124822120420
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: pg
61
- requirement: &70126041364300 !ruby/object:Gem::Requirement
61
+ requirement: &70124822119960 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>='
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: '0'
67
67
  type: :development
68
68
  prerelease: false
69
- version_requirements: *70126041364300
69
+ version_requirements: *70124822119960
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: mysql
72
- requirement: &70126041363880 !ruby/object:Gem::Requirement
72
+ requirement: &70124822119540 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ! '>='
@@ -77,10 +77,10 @@ dependencies:
77
77
  version: '0'
78
78
  type: :development
79
79
  prerelease: false
80
- version_requirements: *70126041363880
80
+ version_requirements: *70124822119540
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: sqlite3
83
- requirement: &70126041363460 !ruby/object:Gem::Requirement
83
+ requirement: &70124822119120 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ! '>='
@@ -88,10 +88,10 @@ dependencies:
88
88
  version: '0'
89
89
  type: :development
90
90
  prerelease: false
91
- version_requirements: *70126041363460
91
+ version_requirements: *70124822119120
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: simplecov
94
- requirement: &70126041363040 !ruby/object:Gem::Requirement
94
+ requirement: &70124822118700 !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements:
97
97
  - - ! '>='
@@ -99,10 +99,10 @@ dependencies:
99
99
  version: '0'
100
100
  type: :development
101
101
  prerelease: false
102
- version_requirements: *70126041363040
102
+ version_requirements: *70124822118700
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: simplecov-gem-adapter
105
- requirement: &70126041362620 !ruby/object:Gem::Requirement
105
+ requirement: &70124822118280 !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements:
108
108
  - - ! '>='
@@ -110,7 +110,7 @@ dependencies:
110
110
  version: '0'
111
111
  type: :development
112
112
  prerelease: false
113
- version_requirements: *70126041362620
113
+ version_requirements: *70124822118280
114
114
  description: ! 'SchemaPlus is an ActiveRecord extension that provides enhanced capabilities
115
115
  for schema definition and querying, including: enhanced and more DRY index capabilities,
116
116
  support and automation for foreign key constraints, and support for views.'