toastyapps-migratory 0.0.1 → 0.0.2

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/README.textile CHANGED
@@ -1,4 +1,4 @@
1
- h1. Thinking Sphinx
1
+ h1. Migratory
2
2
 
3
3
  h2. Usage
4
4
 
@@ -6,12 +6,18 @@ Migratory overrides the default rails model migration and gives you the ability
6
6
 
7
7
  h3. Specify Default Values
8
8
 
9
- script/generate model User username:string password_encrypted:string email:string *is_admin:boolean:false* *rating:integer:0* *role:string:"member"*
9
+ script/generate model User username:string password_encrypted:string email:string _**is_admin:boolean:false**_ _**rating:integer:0**_ _**role:string:"member"**_
10
10
 
11
- script/generate resource User username:string password_encrypted:string email:string *is_admin:boolean:false* *rating:integer:0* *role:string:"member"*
11
+ script/generate resource User username:string password_encrypted:string email:string _**is_admin:boolean:false**_ _**rating:integer:0**_ _**role:string:"member"**_
12
12
 
13
13
  h3. Specify Indexes
14
14
 
15
- script/generate model User **username:string* password_encrypted:string **email:string* is_admin:boolean:false
15
+ script/generate model User _***username:string**_ password_encrypted:string _***email:string**_ is_admin:boolean:false
16
16
 
17
- script/generate resource User **username:string* password_encrypted:string **email:string* is_admin:boolean:false
17
+ script/generate resource User _***username:string**_ password_encrypted:string _***email:string**_ is_admin:boolean:false
18
+
19
+ h3. Specify Limit, Precision, and Scale
20
+
21
+ script/generate model Product _**name:string<notextile>[30]</notextile>**_ _**cost:decimal<notextile>[10,2]</notextile>:0.00**_
22
+
23
+ script/generate resource Product _**name:string<notextile>[30]</notextile>**_ _**cost:decimal<notextile>[10,2]</notextile>:0.00**_
data/Rakefile CHANGED
@@ -3,8 +3,9 @@ require 'rake/testtask'
3
3
 
4
4
  gem_spec = Gem::Specification.new do |gem_spec|
5
5
  gem_spec.name = 'migratory'
6
- gem_spec.version = '0.0.1'
6
+ gem_spec.version = '0.0.2'
7
7
  gem_spec.summary = 'Rails migration extender for default values and adding indexes'
8
+ gem_spec.description = 'Rails migration extender for default values and adding indexes'
8
9
  gem_spec.email = 'matt@toastyapps.com'
9
10
  gem_spec.homepage = 'http://github.com/toastyapps/migratory'
10
11
  gem_spec.authors = ["Matthew Mongeau"]
@@ -1,19 +1,37 @@
1
1
  module Rails
2
2
  module Generator
3
3
  class GeneratedAttribute
4
- attr_accessor :default, :is_indexed
4
+ attr_accessor :default, :is_indexed, :limit, :precision, :scale
5
5
 
6
6
  def initialize_with_migratory(name, type, default = nil)
7
7
  @default = default
8
8
  @is_indexed = (name =~ /^\*/) && true
9
- initialize_without_migratory(name.gsub!(/^\*/, ''), type)
9
+ if type =~ /\[.*?\]/
10
+ details = type.match(/\[(.*?)\]/)[1]
11
+ if details =~ /,/
12
+ @precision, @scale = details.split(/,/).map(&:to_i)
13
+ else
14
+ case type.gsub(/\[.*?\]/, '').to_s
15
+ when 'string','text','binary','integer' then @limit = details.to_i
16
+ when 'decimal', 'float' then @precision = details.to_i
17
+ end
18
+ end
19
+ end
20
+ initialize_without_migratory(name.gsub(/^\*/, ''), type.gsub(/\[.*?\]/, ''))
10
21
  end
11
22
 
12
- def default_value
13
- case @type.to_s
14
- when 'string', 'text', 'date', 'datetime', 'time', 'timestamp' then '"'+@default+'"'
15
- else @default
23
+ def options
24
+ options = []
25
+ options << ", :limit => #{@limit}" if @limit
26
+ options << ", :precision => #{@precision}" if @precision
27
+ options << ", :scale => #{@scale}" if @scale
28
+ if @default
29
+ options << case @type.to_s
30
+ when 'string', 'text', 'date', 'datetime', 'time', 'timestamp' then ', :default => "'+@default+'"'
31
+ else ", :default => #{@default}"
32
+ end
16
33
  end
34
+ options.join('')
17
35
  end
18
36
 
19
37
  alias_method_chain :initialize, :migratory
@@ -2,7 +2,7 @@ class <%= migration_name %> < ActiveRecord::Migration
2
2
  def self.up
3
3
  create_table :<%= table_name %> do |t|
4
4
  <% for attribute in attributes -%>
5
- t.<%= attribute.type %> :<%= attribute.name %><%= ", :default => #{attribute.default_value}" if attribute.default %>
5
+ t.<%= attribute.type %> :<%= attribute.name %><%= attribute.options %>
6
6
  <% end -%>
7
7
  <% unless options[:skip_timestamps] %>
8
8
  t.timestamps
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: toastyapps-migratory
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Mongeau
@@ -9,11 +9,11 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-07-30 21:00:00 -07:00
12
+ date: 2009-08-01 21:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
16
- description:
16
+ description: Rails migration extender for default values and adding indexes
17
17
  email: matt@toastyapps.com
18
18
  executables: []
19
19