ensured_schema 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
@@ -2,6 +2,20 @@ module ActiveRecord
|
|
2
2
|
module ConnectionAdapters
|
3
3
|
class EnsuredTable < Table
|
4
4
|
|
5
|
+
def column(column_name, type, options = {})
|
6
|
+
if column_exists?(column_name)
|
7
|
+
unless column_exists?(column_name, type, options)
|
8
|
+
change(column_name, type, options)
|
9
|
+
end
|
10
|
+
else
|
11
|
+
@base.add_column(@table_name, column_name, type, options)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def remove(column_name)
|
16
|
+
super if column_exists?(column_name)
|
17
|
+
end
|
18
|
+
|
5
19
|
%w( string text integer float decimal datetime timestamp time date binary boolean ).each do |column_type|
|
6
20
|
class_eval <<-EOV
|
7
21
|
def #{column_type}(*args) # def string(*args)
|
@@ -18,15 +32,7 @@ module ActiveRecord
|
|
18
32
|
column_def = build_column_definition(name, column_type, options)
|
19
33
|
def_options = column_def.members.inject({}){|h, k| h[k.to_sym] = column_def[k]; h;}
|
20
34
|
#debugger
|
21
|
-
|
22
|
-
unless column_exists?(name, column_type, def_options)
|
23
|
-
change(name, column_def.sql_type, options)
|
24
|
-
puts "#{name} has been changed!"
|
25
|
-
end
|
26
|
-
else
|
27
|
-
puts "creating column"
|
28
|
-
@base.add_column(@table_name, name, column_def.sql_type, options)
|
29
|
-
end
|
35
|
+
column(name, column_type.to_sym, def_options)
|
30
36
|
end
|
31
37
|
end
|
32
38
|
|
@@ -47,10 +47,8 @@ module ActiveRecord
|
|
47
47
|
|
48
48
|
def table(table_name, options = {}, &block)
|
49
49
|
if table_exists?(table_name)
|
50
|
-
puts "table already exists"
|
51
50
|
ensure_table(table_name, &block) # what to do about changing table options
|
52
51
|
else
|
53
|
-
puts "creating table"
|
54
52
|
create_table(table_name, options, &block)
|
55
53
|
end
|
56
54
|
end
|
@@ -20,7 +20,7 @@ if ActiveRecord::Base.connection.supports_migrations?
|
|
20
20
|
@conn.drop_table("testings") if @conn.table_exists?("testings")
|
21
21
|
end
|
22
22
|
|
23
|
-
def
|
23
|
+
def test_table_definition
|
24
24
|
assert_nothing_raised do
|
25
25
|
ActiveRecord::Schema.ensure(:version => '1') do
|
26
26
|
table(:testings, :id => false, :force => true) do |t|
|
@@ -42,10 +42,12 @@ if ActiveRecord::Base.connection.supports_migrations?
|
|
42
42
|
ActiveRecord::Schema.ensure(:version => '1') do
|
43
43
|
table(:testings, :id => false, :force => true) do |t|
|
44
44
|
t.string :test, :limit => 30, :default => "", :null => false
|
45
|
+
t.column :test2, :string
|
45
46
|
end
|
46
47
|
table(:testings, :id => false, :force => true) do |t|
|
47
48
|
t.expects(:change).never
|
48
49
|
t.string :test, :limit => 30, :default => "", :null => false
|
50
|
+
t.column :test2, :string
|
49
51
|
end
|
50
52
|
end
|
51
53
|
end
|
@@ -183,6 +185,26 @@ if ActiveRecord::Base.connection.supports_migrations?
|
|
183
185
|
assert @conn.column_exists?(:testings, :test)
|
184
186
|
end
|
185
187
|
|
188
|
+
def test_column_is_removed_once
|
189
|
+
assert_nothing_raised do
|
190
|
+
ActiveRecord::Schema.ensure(:version => '1') do
|
191
|
+
table(:testings, :id => false, :force => true) do |t|
|
192
|
+
t.string :test, :limit => 30, :default => "", :null => false
|
193
|
+
t.string :test2
|
194
|
+
t.remove(:test)
|
195
|
+
t.remove(:test)
|
196
|
+
end
|
197
|
+
end
|
198
|
+
|
199
|
+
ActiveRecord::Schema.ensure(:version => '1') do
|
200
|
+
table(:testings, :id => false, :force => true) do |t|
|
201
|
+
t.remove(:test)
|
202
|
+
end
|
203
|
+
end
|
204
|
+
end
|
205
|
+
assert !@conn.column_exists?(:testings, :test)
|
206
|
+
end
|
207
|
+
|
186
208
|
def test_ensure_index
|
187
209
|
assert_nothing_raised do
|
188
210
|
ActiveRecord::Schema.ensure(:version => '1') do
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ensured_schema
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 2
|
10
|
+
version: 0.1.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Chris Conley
|