migrant 1.5.0 → 2.0.0.pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +15 -29
- data/.rspec +2 -0
- data/.travis.yml +8 -5
- data/Gemfile +3 -4
- data/LICENSE.txt +21 -0
- data/{README.rdoc → README.md} +57 -57
- data/Rakefile +4 -31
- data/VERSION +1 -1
- data/lib/dsl/data_type.rb +5 -1
- data/lib/dsl/data_types/primitives.rb +11 -0
- data/lib/generators/templates/change_migration.erb +1 -1
- data/lib/generators/templates/create_migration.erb +1 -1
- data/lib/generators/templates/create_migration.rb +1 -1
- data/lib/migrant/migration_generator.rb +10 -6
- data/lib/migrant/model_extensions.rb +1 -1
- data/lib/migrant/schema.rb +0 -2
- data/lib/railtie.rb +2 -2
- data/lib/tasks/db.rake +0 -6
- data/migrant.gemspec +30 -31
- metadata +63 -193
- data/.rvmrc +0 -1
- data/LICENSE +0 -20
- data/lib/simple_object.rb +0 -13
- data/test/additional_models/review.rb +0 -11
- data/test/helper.rb +0 -64
- data/test/rails_app/.gitignore +0 -4
- data/test/rails_app/README +0 -256
- data/test/rails_app/Rakefile +0 -7
- data/test/rails_app/app/controllers/application_controller.rb +0 -3
- data/test/rails_app/app/helpers/application_helper.rb +0 -2
- data/test/rails_app/app/models/business.rb +0 -25
- data/test/rails_app/app/models/business_category.rb +0 -6
- data/test/rails_app/app/models/category.rb +0 -10
- data/test/rails_app/app/models/chameleon.rb +0 -5
- data/test/rails_app/app/models/customer.rb +0 -9
- data/test/rails_app/app/models/non_migrant_model.rb +0 -3
- data/test/rails_app/app/models/user.rb +0 -8
- data/test/rails_app/app/views/layouts/application.html.erb +0 -14
- data/test/rails_app/config.ru +0 -4
- data/test/rails_app/config/application.rb +0 -16
- data/test/rails_app/config/boot.rb +0 -13
- data/test/rails_app/config/database.yml +0 -7
- data/test/rails_app/config/environment.rb +0 -5
- data/test/rails_app/config/environments/development.rb +0 -26
- data/test/rails_app/config/environments/production.rb +0 -49
- data/test/rails_app/config/environments/test.rb +0 -35
- data/test/rails_app/config/initializers/backtrace_silencers.rb +0 -7
- data/test/rails_app/config/initializers/inflections.rb +0 -10
- data/test/rails_app/config/initializers/mime_types.rb +0 -5
- data/test/rails_app/config/initializers/secret_token.rb +0 -7
- data/test/rails_app/config/initializers/session_store.rb +0 -8
- data/test/rails_app/config/locales/en.yml +0 -5
- data/test/rails_app/config/routes.rb +0 -58
- data/test/rails_app/db/seeds.rb +0 -7
- data/test/rails_app/lib/tasks/.gitkeep +0 -0
- data/test/rails_app/public/404.html +0 -26
- data/test/rails_app/public/422.html +0 -26
- data/test/rails_app/public/500.html +0 -26
- data/test/rails_app/script/rails +0 -6
- data/test/rails_app/test/performance/browsing_test.rb +0 -9
- data/test/rails_app/test/test_helper.rb +0 -13
- data/test/rails_app/vendor/plugins/.gitkeep +0 -0
- data/test/test_data_schema.rb +0 -108
- data/test/test_migration_generator.rb +0 -251
- data/test/test_validations.rb +0 -49
- data/test/test_zzz_performance.rb +0 -13
- data/test/verified_output/migrations/added_incompatible_spot_and_deleted_spots.rb +0 -11
- data/test/verified_output/migrations/business_id.rb +0 -10
- data/test/verified_output/migrations/businesses_indexed_name.rb +0 -8
- data/test/verified_output/migrations/chameleons_added_new_longer_spots_and_moved_new_spots.rb +0 -15
- data/test/verified_output/migrations/create_business_categories.rb +0 -14
- data/test/verified_output/migrations/create_businesses.rb +0 -31
- data/test/verified_output/migrations/create_categories.rb +0 -13
- data/test/verified_output/migrations/create_chameleons.rb +0 -11
- data/test/verified_output/migrations/create_reviews.rb +0 -18
- data/test/verified_output/migrations/create_users.rb +0 -19
- data/test/verified_output/migrations/created_at.rb +0 -11
- data/test/verified_output/migrations/deleted_incompatible_spot.rb +0 -9
- data/test/verified_output/migrations/deleted_spots.rb +0 -9
- data/test/verified_output/migrations/estimated_value_notes.rb +0 -11
- data/test/verified_output/migrations/landline.rb +0 -9
- data/test/verified_output/migrations/modified_verified.rb +0 -9
- data/test/verified_output/migrations/renamed_old_spots.rb +0 -9
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 7243c8702af3af369dff750362ade70c4c23c21f
|
4
|
+
data.tar.gz: 728ffd44c39b986c85c25451bb0b10fcf5ede105
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: fdbbcb72130f81e5e8df8a1f5fcb7bf9b4529010c5255c6031e156bc7a479adac5a8f03885d3bf0810db518cb1338ff67ee5121575672fa8bd56821b892e78c8
|
7
|
+
data.tar.gz: e2fe03b07fe4f71046cccc21e65d3ec01c7dca6623125f2d85ef1c01cbc79ae6cd9879fad7aa11f0bae46b1a100ee0edb66c004083e9d2090d62502d756b0543
|
data/.gitignore
CHANGED
@@ -1,29 +1,15 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
# Rubinius
|
17
|
-
*.rbc
|
18
|
-
|
19
|
-
## PROJECT::GENERAL
|
20
|
-
coverage
|
21
|
-
rdoc
|
22
|
-
pkg
|
23
|
-
|
24
|
-
## PROJECT::SPECIFIC
|
25
|
-
tmp/*
|
26
|
-
test/rails_app/db/migrate/*
|
27
|
-
test/rails_app/db/schema.rb
|
28
|
-
Gemfile.lock
|
29
|
-
.rbenv-version
|
1
|
+
/.bundle/
|
2
|
+
/.yardoc
|
3
|
+
/Gemfile.lock
|
4
|
+
/_yardoc/
|
5
|
+
/coverage/
|
6
|
+
/doc/
|
7
|
+
/pkg/
|
8
|
+
/spec/reports/
|
9
|
+
/tmp/
|
10
|
+
|
11
|
+
/log/*
|
12
|
+
|
13
|
+
# rspec failure tracking
|
14
|
+
.rspec_status
|
15
|
+
.ruby-version
|
data/.rspec
ADDED
data/.travis.yml
CHANGED
@@ -1,8 +1,11 @@
|
|
1
|
+
sudo: false
|
1
2
|
language: ruby
|
2
3
|
rvm:
|
3
|
-
- 2.
|
4
|
-
-
|
5
|
-
-
|
4
|
+
- 2.4.2
|
5
|
+
- 2.3.5
|
6
|
+
- 2.2.8
|
7
|
+
before_install: gem install bundler -v 1.16 --no-rdoc --no-ri
|
6
8
|
env:
|
7
|
-
- "RAILS_VERSION=
|
8
|
-
- "RAILS_VERSION=
|
9
|
+
- "RAILS_VERSION=4.2.0"
|
10
|
+
- "RAILS_VERSION=5.0.0"
|
11
|
+
- "RAILS_VERSION=5.1.0"
|
data/Gemfile
CHANGED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2017 Pascal Houliston
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/{README.rdoc → README.md}
RENAMED
@@ -1,7 +1,8 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# Migrant
|
2
|
+
[![Build Status](https://api.travis-ci.org/pascalh1011/migrant.png)](https://travis-ci.org/pascalh1011/migrant)
|
3
|
+
[![Coverage Status](https://coveralls.io/repos/github/pascalh1011/migrant/badge.svg?branch=master)](https://coveralls.io/github/pascalh1011/migrant?branch=master)
|
3
4
|
|
4
|
-
|
5
|
+
## Summary
|
5
6
|
|
6
7
|
Migrant gives you a clean DSL to describe your model schema (somewhat similar to DataMapper).
|
7
8
|
It generates your migrations for you so you can spend more time describing your domain
|
@@ -9,22 +10,27 @@ model cleanly and less time managing your database layer.
|
|
9
10
|
|
10
11
|
You'll also get a handy .mock method to instantiate a filled-in model for testing or debugging.
|
11
12
|
|
12
|
-
|
13
|
+
## Getting Started
|
13
14
|
|
14
15
|
In your Gemfile:
|
15
16
|
|
17
|
+
```
|
16
18
|
gem "migrant"
|
19
|
+
```
|
17
20
|
|
18
|
-
|
21
|
+
## Usage
|
19
22
|
|
20
23
|
Start by creating some models with the structure you need:
|
21
24
|
|
25
|
+
```
|
22
26
|
> rails generate migrant:model business
|
27
|
+
```
|
23
28
|
|
29
|
+
```ruby
|
24
30
|
class Business < ActiveRecord::Base
|
25
31
|
belongs_to :user
|
26
32
|
|
27
|
-
#
|
33
|
+
# Heres where you describe the columns in your model
|
28
34
|
structure do
|
29
35
|
name "The kernel's favourite fried chickens"
|
30
36
|
website "http://www.google.co.za/"
|
@@ -32,11 +38,12 @@ Start by creating some models with the structure you need:
|
|
32
38
|
date_established Time.now - 300.years
|
33
39
|
end
|
34
40
|
end
|
35
|
-
|
41
|
+
```
|
36
42
|
Simply specify an example of the type of data you'll be storing, and Migrant will work out the
|
37
43
|
correct database schema for you. Note that you don't need to specify foreign keys in the structure,
|
38
44
|
they are automatically inferred from your relations. Here is a further example:
|
39
45
|
|
46
|
+
```ruby
|
40
47
|
class User < ActiveRecord::Base
|
41
48
|
has_many :businesses
|
42
49
|
|
@@ -50,35 +57,45 @@ they are automatically inferred from your relations. Here is a further example:
|
|
50
57
|
secret_code 5521, :validates => [:uniqueness, :numericality]
|
51
58
|
end
|
52
59
|
end
|
60
|
+
```
|
53
61
|
|
54
62
|
Now, to get your database up to date simply run:
|
55
63
|
|
64
|
+
```
|
56
65
|
> rake db:upgrade
|
57
66
|
|
58
67
|
Wrote db/migrate/20101028192913_create_businesses.rb...
|
59
68
|
Wrote db/migrate/20101028192916_create_users.rb...
|
69
|
+
```
|
60
70
|
|
61
71
|
OR, if you'd prefer to look over the migrations yourself first, run:
|
62
72
|
|
73
|
+
```
|
63
74
|
> rails generate migrations
|
75
|
+
```
|
64
76
|
|
65
77
|
Result:
|
66
78
|
|
79
|
+
```r
|
67
80
|
irb(main):001:0> Business
|
68
81
|
=> Business(id: integer, user_id: integer, name: string, website: string, address: text, date_established: datetime)
|
69
82
|
|
70
83
|
irb(main):002:0> Awesome!!!!
|
71
84
|
NoMethodError: undefined method `Awesome!!!!' for main:Object
|
85
|
+
```
|
72
86
|
|
73
87
|
By default, your database structure will be cloned to your test environment. If you don't want this to happen
|
74
88
|
automatically, simply specify an environment variable directly:
|
75
89
|
|
90
|
+
```
|
76
91
|
> rake db:upgrade RAILS_ENV=development
|
92
|
+
```
|
77
93
|
|
78
|
-
|
94
|
+
### Serialization
|
79
95
|
|
80
96
|
Keeping track of your serialized attributes can be done in the Migrant DSL (v1.3+), here's some examples:
|
81
97
|
|
98
|
+
```ruby
|
82
99
|
class Business < ActiveRecord::Base
|
83
100
|
structure do
|
84
101
|
# Specify serialization automatically (e.g. using Hash, Array, OpenStruct)
|
@@ -92,28 +109,33 @@ Keeping track of your serialized attributes can be done in the Migrant DSL (v1.3
|
|
92
109
|
locations :serialized
|
93
110
|
end
|
94
111
|
end
|
112
|
+
```
|
95
113
|
|
96
114
|
These will call ActiveRecord::Base.serialize for you so don't do it again yourself! The mock generated would appear as:
|
97
115
|
|
116
|
+
```
|
98
117
|
irb(main):002:0> my_business = Business.mock
|
99
118
|
=> #<Business id: nil, awards: ["Best Chicken 2007", "Business of the year 2008"], staff: #<OpenStruct manager="Joe">,
|
100
119
|
locations: {}>
|
120
|
+
```
|
101
121
|
|
102
|
-
|
122
|
+
### Want more examples?
|
103
123
|
|
104
|
-
Check out the test models in
|
124
|
+
Check out the test models in `spec/support/models.rb`
|
105
125
|
|
106
|
-
|
126
|
+
### Model Generator
|
107
127
|
|
128
|
+
```
|
108
129
|
> rails generate migrant:model business name:string website:text
|
109
|
-
|
130
|
+
```
|
131
|
+
|
110
132
|
The model generator works as per the default ActiveRecord one, i.e. you can specify
|
111
133
|
fields to be included in the model. However, a migration is not generated immediately,
|
112
134
|
but the structure block in the model is automatically filled out for you.
|
113
135
|
|
114
|
-
Simply run rake db:upgrade or rails generate migrations to get the required migrations when you're ready.
|
136
|
+
Simply run `rake db:upgrade` or rails generate migrations to get the required migrations when you're ready.
|
115
137
|
|
116
|
-
|
138
|
+
## What will happen seamlessly
|
117
139
|
|
118
140
|
* Creating tables or adding columns (as appropriate)
|
119
141
|
* Adding indexes (happens on foreign keys automatically)
|
@@ -121,15 +143,20 @@ Simply run rake db:upgrade or rails generate migrations to get the required migr
|
|
121
143
|
* Changing column types
|
122
144
|
* Rollbacks for all the above
|
123
145
|
|
124
|
-
|
146
|
+
## Currently unsupported
|
147
|
+
|
148
|
+
* Migrations through plugins (Rails 5+)
|
125
149
|
|
126
|
-
|
127
|
-
* Unofficially supported: Ruby 1.8.7, 1.9.2
|
128
|
-
* Rails 3.0 (all versions)
|
129
|
-
* Rails 4.0 (only from v1.4.3 onwards)
|
150
|
+
## Compatibility
|
130
151
|
|
131
|
-
|
152
|
+
* Ruby 2.2 or greater
|
153
|
+
* Rails 4.2 through to Rails 5.1
|
132
154
|
|
155
|
+
**Note**: Really old Ruby versions (1.8) and Rails (3.2+) are supported on v1.4
|
156
|
+
|
157
|
+
## Getting a mock of your model
|
158
|
+
|
159
|
+
```
|
133
160
|
> rails console
|
134
161
|
|
135
162
|
irb(main):002:0> my_business = Business.mock
|
@@ -138,60 +165,33 @@ Simply run rake db:upgrade or rails generate migrations to get the required migr
|
|
138
165
|
|
139
166
|
irb(main):003:0> my_business.user
|
140
167
|
=> #<User id: nil, name: "John", surname: "Smith", description: "Some string">
|
168
|
+
```
|
141
169
|
|
142
|
-
|
143
|
-
|
144
|
-
Add the following to support/env/pickle.rb:
|
145
|
-
|
146
|
-
require 'pickle/migrant'
|
147
|
-
Pickle.configure do |config|
|
148
|
-
config.adapters = [Pickle::Migrant]
|
149
|
-
end
|
150
|
-
|
151
|
-
All pickle steps will then return a mocked model by default, overriden with any values you provide.
|
152
|
-
|
153
|
-
== Help
|
170
|
+
## Help
|
154
171
|
|
155
172
|
Be sure to check out the Github Wiki, or give me a shout on Twitter: @101pascal
|
156
173
|
|
157
|
-
|
174
|
+
## Maintability / Usability concerns
|
158
175
|
* You don't have to define a structure on every model, Migrant ignores models with no definitions
|
159
176
|
* You can remove the structure definitions later and nothing bad will happen (besides losing automigration for those fields)
|
160
177
|
* If you have a model with relations but no columns, you can still have migrations generated by adding "no_structure" or define a blank structure block.
|
161
178
|
* It's probably a good idea to review the generated migrations before committing to SCM, just to check there's nothing left out.
|
162
179
|
|
163
|
-
|
180
|
+
## Roadmap / Planned features
|
164
181
|
* Rake task to consolidate a given set of migrations (a lot of people like to do this once in a while to keep migration levels sane)
|
165
182
|
* Fabricator/Factory integration/seperation - Need to assess how useful this is, then optimize or kill.
|
166
183
|
|
167
|
-
|
168
|
-
|
169
|
-
Copyright (c) 2011 Pascal Houliston
|
170
|
-
|
171
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
172
|
-
a copy of this software and associated documentation files (the
|
173
|
-
"Software"), to deal in the Software without restriction, including
|
174
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
175
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
176
|
-
permit persons to whom the Software is furnished to do so, subject to
|
177
|
-
the following conditions:
|
178
|
-
|
179
|
-
The above copyright notice and this permission notice shall be
|
180
|
-
included in all copies or substantial portions of the Software.
|
184
|
+
## License
|
181
185
|
|
182
|
-
|
183
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
184
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
185
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
186
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
187
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
188
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
186
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
189
187
|
|
190
|
-
|
188
|
+
## Development
|
191
189
|
|
192
190
|
Please be sure to install all the development dependencies via Bundler, then to run tests do:
|
193
191
|
|
194
|
-
|
192
|
+
```
|
193
|
+
> bundle exec rake
|
194
|
+
```
|
195
195
|
|
196
196
|
Simplecov reports will be generated for each run. If it's not at 100% line coverage, something's wrong!
|
197
197
|
|
data/Rakefile
CHANGED
@@ -1,33 +1,6 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require 'simplecov'
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require "rspec/core/rake_task"
|
4
3
|
|
5
|
-
|
6
|
-
Bundler.setup(:default, :development)
|
7
|
-
rescue Bundler::BundlerError => e
|
8
|
-
$stderr.puts e.message
|
9
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
-
exit e.status_code
|
11
|
-
end
|
12
|
-
|
13
|
-
SimpleCov.adapters.define 'migrant' do
|
14
|
-
add_filter '/test'
|
15
|
-
add_filter '/lib/tasks'
|
16
|
-
add_filter '/lib/railtie' # Not covering lines it's running here .. disabling for now
|
17
|
-
add_filter '/lib/simple_object'
|
18
|
-
|
19
|
-
add_group 'Core Extensions', '/lib/migrant'
|
20
|
-
add_group 'Schema Data Types', '/lib/datatype'
|
21
|
-
end
|
22
|
-
SimpleCov.start 'migrant'
|
23
|
-
|
24
|
-
require 'rake'
|
25
|
-
require 'rake/testtask'
|
26
|
-
Rake::TestTask.new(:test) do |test|
|
27
|
-
test.libs << 'lib' << 'test'
|
28
|
-
test.pattern = 'test/**/test_*.rb'
|
29
|
-
test.verbose = true
|
30
|
-
end
|
31
|
-
|
32
|
-
task :default => :test
|
4
|
+
RSpec::Core::RakeTask.new(:spec)
|
33
5
|
|
6
|
+
task :default => :spec
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
2.0.0.pre
|
data/lib/dsl/data_type.rb
CHANGED
@@ -59,7 +59,7 @@ module DataType
|
|
59
59
|
# General RDBMS data loss scenarios
|
60
60
|
if new_structure[:limit] && current_structure[:limit].to_i != new_structure[:limit].to_i ||
|
61
61
|
new_structure[:type] != current_structure[:type] ||
|
62
|
-
new_structure[:default] &&
|
62
|
+
!new_structure[:default].nil? && column_default_changed?(current_structure[:default], new_structure[:default])
|
63
63
|
|
64
64
|
column
|
65
65
|
else
|
@@ -73,6 +73,10 @@ module DataType
|
|
73
73
|
def dangerous_migration_from?(current_structure = nil)
|
74
74
|
current_structure && (column[:type] != :text && [:string, :text].include?(current_structure[:type]) && column[:type] != current_structure[:type])
|
75
75
|
end
|
76
|
+
|
77
|
+
def column_default_changed?(old_default, new_default)
|
78
|
+
new_default.to_s != old_default.to_s
|
79
|
+
end
|
76
80
|
|
77
81
|
def self.migrant_data_type?; true; end
|
78
82
|
end
|
@@ -12,12 +12,20 @@ module DataType
|
|
12
12
|
def self.default_mock
|
13
13
|
true
|
14
14
|
end
|
15
|
+
|
16
|
+
def column_default_changed?(old_default, new_default)
|
17
|
+
old_default.to_s[0] != new_default.to_s[0]
|
18
|
+
end
|
15
19
|
end
|
16
20
|
|
17
21
|
class FalseClass < TrueClass
|
18
22
|
def self.default_mock
|
19
23
|
false
|
20
24
|
end
|
25
|
+
|
26
|
+
def column_default_changed?(old_default, new_default)
|
27
|
+
old_default.to_s[0] != new_default.to_s[0]
|
28
|
+
end
|
21
29
|
end
|
22
30
|
|
23
31
|
# Datetime
|
@@ -60,6 +68,9 @@ module DataType
|
|
60
68
|
end
|
61
69
|
end
|
62
70
|
|
71
|
+
class Integer < Bignum
|
72
|
+
end
|
73
|
+
|
63
74
|
class Float < Base
|
64
75
|
def column_defaults
|
65
76
|
{:type => :float}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class <%= @activity.camelize.gsub(/\s/, '') %> < ActiveRecord::Migration
|
1
|
+
class <%= @activity.camelize.gsub(/\s/, '') %> < ActiveRecord::Migration<%= @class_suffix %>
|
2
2
|
def self.up
|
3
3
|
<% @columns[:added].each do |field, options| %>
|
4
4
|
add_column :<%= @table_name %>, :<%= field %>, :<%= options.delete(:type) %><%= (options.blank?)? '': ", "+options.inspect[1..-2] %>
|