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 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.9
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: