citrusbyte-schemer 0.0.9 → 0.0.10

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