citrusbyte-schemer 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/schemer.rb +11 -4
- data/{tasks → lib/schemer/tasks}/schemer.rake +0 -0
- data/test/schemer_test.rb +6 -0
- metadata +2 -2
data/lib/schemer.rb
CHANGED
@@ -37,13 +37,20 @@ module Schemer
|
|
37
37
|
def update_schema
|
38
38
|
create_table unless table_exists?
|
39
39
|
|
40
|
+
columns.reject{ |column| protected_columns.include?(column.name) }.each do |column|
|
41
|
+
if !schema_columns.has_key?(column.name)
|
42
|
+
# remove any extraneous columns
|
43
|
+
ActiveRecord::Migration.remove_column(table_name, column.name)
|
44
|
+
elsif column.type != schema_columns[column.name]
|
45
|
+
# change any columns w/ wrong type
|
46
|
+
ActiveRecord::Migration.change_column(table_name, column.name, schema_columns[column.name])
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# add any missing columns
|
40
51
|
(schema_columns.keys - column_names).each do |column|
|
41
52
|
ActiveRecord::Migration.add_column(table_name, column, schema_columns[column])
|
42
53
|
end
|
43
|
-
|
44
|
-
(column_names - protected_columns - schema_columns.keys).each do |column|
|
45
|
-
ActiveRecord::Migration.remove_column(table_name, column)
|
46
|
-
end
|
47
54
|
end
|
48
55
|
end
|
49
56
|
end
|
File without changes
|
data/test/schemer_test.rb
CHANGED
@@ -69,6 +69,12 @@ class FooTest < Test::Unit::TestCase
|
|
69
69
|
should "create foo column using string datatype" do
|
70
70
|
assert_equal '5', @foo.foo
|
71
71
|
end
|
72
|
+
|
73
|
+
should "recreate foo column as integer" do
|
74
|
+
Foo.schema({ :foo => :integer }, { :bar => :integer }, :baz)
|
75
|
+
foo = Foo.find(Foo.create!(:foo => '5', :bar => '5').id)
|
76
|
+
assert_equal 5, foo.foo
|
77
|
+
end
|
72
78
|
end
|
73
79
|
|
74
80
|
context "building a Rails migration" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: citrusbyte-schemer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Alavi
|
@@ -27,9 +27,9 @@ files:
|
|
27
27
|
- Rakefile
|
28
28
|
- lib/schemer/migrator.rb
|
29
29
|
- lib/schemer.rb
|
30
|
+
- lib/schemer/tasks/schemer.rake
|
30
31
|
- rails/init.rb
|
31
32
|
- test/schemer_test.rb
|
32
|
-
- tasks/schemer.rake
|
33
33
|
has_rdoc: false
|
34
34
|
homepage: http://github.com/citrusbyte/schemer
|
35
35
|
post_install_message:
|