has_uuid 0.0.7 → 0.0.8

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/.gitignore CHANGED
@@ -2,3 +2,4 @@
2
2
  .bundle
3
3
  Gemfile.lock
4
4
  pkg/*
5
+ *.swp
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm --create 1.9.2-p180@has_uuid
@@ -0,0 +1 @@
1
+ * (troessner) Refactor the whole gem and use `class_attribute`.
@@ -5,15 +5,7 @@ has_uuid
5
5
 
6
6
  It depends on the [uuidtools](http://uuidtools.rubyforge.org/) gem.
7
7
 
8
- This is a fork - full credits for the source code go to [has_uuid](http://github.com/norbert/has_uuid).
9
-
10
- What I changed:
11
-
12
- a) Made it rails 3.1 compatible.
13
-
14
- b) Bundler'ized it - you can now use and manage it as a gem, not as a rails plugin.
15
-
16
- c) Added generate_uuid as a class method
8
+ Initial credits go to [has_uuid](http://github.com/norbert/has_uuid).
17
9
 
18
10
  Installation
19
11
  ------------
@@ -29,39 +21,33 @@ to your Gemfile and run
29
21
  Usage
30
22
  -----
31
23
 
32
- class Post < ActiveRecord::Base
33
- # automatically assign a UUID to the "uuid" column on create
34
- has_uuid
35
- end
36
-
37
- class Comment < ActiveRecord::Base
38
- # skip assignment on create
39
- has_uuid :auto => false
40
- end
24
+ class Post < ActiveRecord::Base
25
+ # automatically assign a UUID to the "uuid" column on create
26
+ has_uuid
27
+ end
41
28
 
42
- class User < ActiveRecord::Base
43
- # store the UUID in the "token" column, generate version 1 UUIDs
44
- has_uuid :column => :token, :generator => :timestamp
45
- end
29
+ class Comment < ActiveRecord::Base
30
+ # skip assignment on create
31
+ has_uuid :auto => false
32
+ end
46
33
 
47
- # assign a UUID if a valid one is not already present
48
- @post.assign_uuid
34
+ class User < ActiveRecord::Base
35
+ # store the UUID in the "token" column
36
+ has_uuid :column => :token, :generator => :timestamp
37
+ end
49
38
 
50
- # assign a UUID, replacing whatever is already there
51
- @post.assign_uuid(:force => true)
39
+ # assign a UUID if a valid one is not already present
40
+ @post.assign_uuid
52
41
 
53
- # assign a UUID and save, replacing whatever is there
54
- @post.assign_uuid!
42
+ # assign a UUID, replacing whatever is already there
43
+ @post.assign_uuid(:force => true)
55
44
 
56
- # check if the current UUID is valid
57
- @post.uuid_valid?
45
+ # assign a UUID and save, replacing whatever is there
46
+ @post.assign_uuid!
58
47
 
59
- # Generate a UUID to use it later
60
- Post.generate_uuid
48
+ # check if the current UUID is valid
49
+ @post.uuid_valid?
61
50
 
62
- Credits
63
- -------
51
+ # Generate a UUID to use it later
52
+ Post.generate_uuid
64
53
 
65
- * Norbert Crombach
66
- * Todd Eichel
67
- * Joerg Batterman
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
15
15
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
16
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
17
  s.require_paths = ["lib"]
18
- s.add_dependency 'activerecord', '>= 3.0'
18
+ s.add_dependency 'activerecord', '~> 3.1.0'
19
19
  s.add_dependency 'uuidtools'
20
20
  s.add_development_dependency 'rake'
21
21
  s.add_development_dependency 'sqlite3'
@@ -1,34 +1,26 @@
1
1
  require 'uuidtools'
2
2
 
3
- module ActiveRecord #:nodoc:
4
- module Acts #:nodoc:
5
- # Use this extension to assign a UUID to your models.
6
- #
7
- # Example:
8
- #
9
- # class Post < ActiveRecord::Base
10
- # has_uuid
11
- # end
12
- #
13
- # That is all.
3
+ module ActiveRecord
4
+ module Acts
5
+ # has_uuid adds a UUID to your models. See the README for details.
14
6
  module HasUuid
15
- GENERATORS = [:random, :timestamp] #:nodoc:
7
+ GENERATORS = [:random, :timestamp]
8
+ DEFAULT_OPTIONS = {:auto => true, :generator => :random, :column => :uuid}
16
9
 
17
- # Configuration options are:
18
- #
19
- # * <tt>:column</tt> - specifies the column in which to store the UUID (default: +uuid+).
20
- # * <tt>:auto</tt> - specifies whether the plugin should assign a UUID on create (default: true).
21
- # * <tt>:generator</tt> - sets the UUID generator. Possible values are <tt>:random</tt> for version 4 (default) and <tt>:timestamp</tt> for version 1.
10
+ # Class Macro which actually lets models use has_uuid
11
+ # @param options:
12
+ # * column: The column in which to store the UUID (default: uuid).
13
+ # * auto: Assign a UUID on create (default: true).
14
+ # * generator The UUID generator. Possible values are `random` default) and `timestamp`.
22
15
  def has_uuid(options = {})
23
- options.reverse_merge!(:auto => true, :generator => :random, :column => :uuid)
24
- raise ArgumentError, "invalid UUID generator" unless GENERATORS.include?(options[:generator])
16
+ options.reverse_merge! DEFAULT_OPTIONS
17
+ raise ArgumentError, "Invalid UUID generator #{options[:generator]}" unless GENERATORS.include?(options[:generator])
25
18
 
26
19
  class_eval do
27
- send :include, InstanceMethods # hide include from RDoc
20
+ include InstanceMethods
28
21
 
29
22
  if options[:auto]
30
- # always applies to subclasses
31
- before_validation(:on => :create) { assign_uuid }
23
+ before_save(:on => :create) { assign_uuid }
32
24
  end
33
25
 
34
26
  class_attribute :uuid_column
@@ -43,8 +35,7 @@ module ActiveRecord #:nodoc:
43
35
  UUIDTools::UUID.send("#{uuid_generator}_create").to_s
44
36
  end
45
37
 
46
-
47
- module InstanceMethods #:nodoc:
38
+ module InstanceMethods
48
39
  def assign_uuid(options = {})
49
40
  return if uuid_valid? unless options[:force]
50
41
 
@@ -1,3 +1,3 @@
1
1
  module HasUuid
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
@@ -85,4 +85,12 @@ class HasUuidTest < Test::Unit::TestCase
85
85
  @thingy.reload
86
86
  assert_nil @thingy.uuid
87
87
  end
88
+
89
+ def should_assign_an_uuid_if_we_do_not_validate_the_overall_record
90
+ @widget = Widget.new
91
+ assert_nil @widget.uuid
92
+ @widget.save :validate => false
93
+ @widget.reload
94
+ assert @widget.uuid_valid?
95
+ end
88
96
  end
metadata CHANGED
@@ -1,73 +1,71 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: has_uuid
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.8
4
5
  prerelease:
5
- version: 0.0.7
6
6
  platform: ruby
7
- authors:
8
- - "Timo R\xC3\xB6\xC3\x9Fner"
7
+ authors:
8
+ - Timo Rößner
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-09-28 00:00:00 +02:00
14
- default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
12
+ date: 2012-04-27 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
17
15
  name: activerecord
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &77501590 !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "3.0"
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 3.1.0
24
22
  type: :runtime
25
23
  prerelease: false
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
24
+ version_requirements: *77501590
25
+ - !ruby/object:Gem::Dependency
28
26
  name: uuidtools
29
- requirement: &id002 !ruby/object:Gem::Requirement
27
+ requirement: &77501200 !ruby/object:Gem::Requirement
30
28
  none: false
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
35
33
  type: :runtime
36
34
  prerelease: false
37
- version_requirements: *id002
38
- - !ruby/object:Gem::Dependency
35
+ version_requirements: *77501200
36
+ - !ruby/object:Gem::Dependency
39
37
  name: rake
40
- requirement: &id003 !ruby/object:Gem::Requirement
38
+ requirement: &77500880 !ruby/object:Gem::Requirement
41
39
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- version: "0"
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
46
44
  type: :development
47
45
  prerelease: false
48
- version_requirements: *id003
49
- - !ruby/object:Gem::Dependency
46
+ version_requirements: *77500880
47
+ - !ruby/object:Gem::Dependency
50
48
  name: sqlite3
51
- requirement: &id004 !ruby/object:Gem::Requirement
49
+ requirement: &77500450 !ruby/object:Gem::Requirement
52
50
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- version: "0"
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
57
55
  type: :development
58
56
  prerelease: false
59
- version_requirements: *id004
57
+ version_requirements: *77500450
60
58
  description: The has_uuid gem adds a UUID to your AR models. See the README for details.
61
- email:
59
+ email:
62
60
  - timo.roessner@googlemail.com
63
61
  executables: []
64
-
65
62
  extensions: []
66
-
67
63
  extra_rdoc_files: []
68
-
69
- files:
64
+ files:
70
65
  - .gitignore
66
+ - .has_uuid.gemspec.swp
67
+ - .rvmrc
68
+ - CHANGELOG.md
71
69
  - Gemfile
72
70
  - LICENSE
73
71
  - README.markdown
@@ -78,39 +76,28 @@ files:
78
76
  - rails/init.rb
79
77
  - test/has_uuid_test.rb
80
78
  - test/test_helper.rb
81
- has_rdoc: true
82
79
  homepage: https://github.com/troessner/has_uuid
83
80
  licenses: []
84
-
85
81
  post_install_message:
86
82
  rdoc_options: []
87
-
88
- require_paths:
83
+ require_paths:
89
84
  - lib
90
- required_ruby_version: !ruby/object:Gem::Requirement
85
+ required_ruby_version: !ruby/object:Gem::Requirement
91
86
  none: false
92
- requirements:
93
- - - ">="
94
- - !ruby/object:Gem::Version
95
- hash: 835200193
96
- segments:
97
- - 0
98
- version: "0"
99
- required_rubygems_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ! '>='
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ required_rubygems_version: !ruby/object:Gem::Requirement
100
92
  none: false
101
- requirements:
102
- - - ">="
103
- - !ruby/object:Gem::Version
104
- hash: 835200193
105
- segments:
106
- - 0
107
- version: "0"
93
+ requirements:
94
+ - - ! '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
108
97
  requirements: []
109
-
110
98
  rubyforge_project:
111
- rubygems_version: 1.6.2
99
+ rubygems_version: 1.8.12
112
100
  signing_key:
113
101
  specification_version: 3
114
102
  summary: The has_uuid gem adds a UUID to your AR models.
115
103
  test_files: []
116
-