unique_generator 1.0.0 → 1.0.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 74335b57c6d7ce26df0a01fd7490337474d3edef
4
+ data.tar.gz: 056548ba888c27d79b2ecec9821626dc32f44599
5
+ SHA512:
6
+ metadata.gz: 500a65c0d1cf28c0f99f9044a91ccb2d78dcd5a3db274a1ad5b197f1f76099eca1495b6f94e1f7c077cb40a5a60c7b66b77fcdfa5a425b59d36fdb70a0e145f1
7
+ data.tar.gz: 5e618b03ba2ba83f93941ab53e8a692ed2f58a69b8f901d07718ed74a9d715a91b090645aa4f55e7cd57a1216658f655604311e99699a1379d1409160d424129
@@ -0,0 +1,14 @@
1
+ ---
2
+ language: ruby
3
+ rvm:
4
+ - 1.9.3
5
+ env:
6
+ - RAILS_VERSION=""
7
+ - RAILS_VERSION="~>4.0.0"
8
+ - RAILS_VERSION="~>3.2.0"
9
+ - RAILS_VERSION="~>3.1.0"
10
+ - RAILS_VERSION="~>3.0.0"
11
+ services: mongodb
12
+ notifications:
13
+ email:
14
+ - sutto@sutto.net
data/Gemfile CHANGED
@@ -3,6 +3,13 @@ source "http://rubygems.org"
3
3
  # Specify your gem's dependencies in unique_generator.gemspec
4
4
  gemspec
5
5
 
6
+ # Allow testing multiple versions with Travis.
7
+ rails_version = ENV['RAILS_VERSION']
8
+ if rails_version && rails_version.length > 0
9
+ puts "Testing Rails Version = #{rails_version}"
10
+ gem 'activerecord', rails_version
11
+ end
12
+
6
13
  gem "sqlite3"
7
14
  gem "bson_ext"
8
- gem "ci_reporter"
15
+ gem "rake"
data/LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2012 Filter Squad
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
@@ -0,0 +1,73 @@
1
+ # Unique Generator [![Build Status](https://secure.travis-ci.org/filtersquad/unique_generator.png?branch=master)](http://travis-ci.org/filtersquad/unique_generator) [![Dependency Status](https://gemnasium.com/filtersquad/unique_generator.png)](https://gemnasium.com/filtersquad/unique_generator)
2
+
3
+ ## Introduction
4
+
5
+ Unique Generator is a plugin for ActiveRecord and MongoMapper which makes it simple to generate
6
+ unique fields and unique tokens e.g. for invites, api keys and the like.
7
+
8
+ Unique Generator is only available for Rails 3.0+.
9
+
10
+ ## Installation
11
+
12
+ Installing Unique Generator is simple, just add the following to your Gemfile:
13
+
14
+ ```ruby
15
+ gem 'unique_generator', '~> 1.0'
16
+ ```
17
+
18
+ We'll automatically hook into ActiveRecord and MongoMapper via a railtie, adding three methods.
19
+
20
+ ## Usage
21
+
22
+ Unique Generator defines a very simple method, adding only four methods:
23
+
24
+ * `YourModelClass.generate_random(length = 32)` - Generates a case sensitive field with size characters.
25
+ * `YourModelClass.generate_unique(length = 32, &block)` - Taking a block which defines the predicate of a given value,
26
+ it will generate a random toke of the specified length until the block returns true.
27
+ * `YourModelClass#unique_field?(name)` - Called on an instance, tells you whether that instances value for a given
28
+ field is unique in the database.
29
+
30
+ And finally, for most people, the only method that matters:
31
+
32
+ * `YourModelClass#generate_unique_field!(name, length = 32)` - Generates a random token of the specified length, combining
33
+ the above methods to ensure it has a unique value.
34
+
35
+ **Note:** Please keep in mind, in your migration your field accepting a random token should ideally be case sensitive.
36
+
37
+ ## Example
38
+
39
+ As a simple example, say we want to generate a unique invite token on a model, to do this, we'd do something like:
40
+
41
+ ```ruby
42
+ class Invite < ActiveRecord::Base
43
+
44
+ before_save :generate_invite_token
45
+
46
+ def generate_invite_token
47
+ generate_unique_field! :token, 32 if token.blank?
48
+ end
49
+
50
+ end
51
+ ```
52
+
53
+ ## Contributors
54
+
55
+ - [Darcy Laycock](https://github.com/Sutto) - Main developer, current maintainer.
56
+
57
+ ## Contributing
58
+
59
+ We encourage all community contributions. Keeping this in mind, please follow these general guidelines when contributing:
60
+
61
+ * Fork the project
62
+ * Create a topic branch for what you’re working on (git checkout -b awesome_feature)
63
+ * Commit away, push that up (git push your\_remote awesome\_feature)
64
+ * Create a new GitHub Issue with the commit, asking for review. Alternatively, send a pull request with details of what you added.
65
+ * Once it’s accepted, if you want access to the core repository feel free to ask! Otherwise, you can continue to hack away in your own fork.
66
+
67
+ Other than that, our guidelines very closely match the GemCutter guidelines [here](http://wiki.github.com/qrush/gemcutter/contribution-guidelines).
68
+
69
+ (Thanks to [GemCutter](http://wiki.github.com/qrush/gemcutter/) for the contribution guide)
70
+
71
+ ## License
72
+
73
+ RocketPants is released under the MIT License (see the [license file](https://github.com/filtersquad/unique_generator/blob/master/LICENSE)) and is copyright Filter Squad, 2012.
@@ -36,7 +36,7 @@ module UniqueGenerator
36
36
  scope = self.class.where(field_name => send(field_name))
37
37
  # When we have an id, check for those with a different id.
38
38
  if id.present?
39
- conditions = self.class.scoped.table[:id].eq(id).not
39
+ conditions = self.class.arel_table[:id].eq(id).not
40
40
  scope = scope.where(conditions)
41
41
  end
42
42
  scope.empty?
@@ -44,7 +44,7 @@ module UniqueGenerator
44
44
  end
45
45
 
46
46
  end
47
-
47
+
48
48
  module ClassMethods
49
49
 
50
50
  # Generate a unique field
@@ -58,10 +58,10 @@ module UniqueGenerator
58
58
  def generate_random(length = 32)
59
59
  (1..length).inject("") { |token, _| token << CHOICES.sample }
60
60
  end
61
-
61
+
62
62
  end
63
-
64
-
63
+
64
+
65
65
  # Generate unique field.
66
66
  def generate_unique_field!(name, size = 32)
67
67
  return if send(name).present?
@@ -70,7 +70,7 @@ module UniqueGenerator
70
70
  unique_field? name
71
71
  end
72
72
  end
73
-
73
+
74
74
 
75
75
  setup!
76
76
 
@@ -81,5 +81,5 @@ module UniqueGenerator
81
81
  end
82
82
  end
83
83
  end
84
-
84
+
85
85
  end
@@ -1,3 +1,3 @@
1
1
  module UniqueGenerator
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
metadata CHANGED
@@ -1,82 +1,99 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unique_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
5
- prerelease:
4
+ version: 1.0.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Darcy Laycock
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-01-21 00:00:00.000000000 Z
11
+ date: 2014-02-02 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activesupport
16
- requirement: &70276972324760 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *70276972324760
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: activerecord
27
- requirement: &70276972324340 !ruby/object:Gem::Requirement
28
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
- - - ! '>='
31
+ - - ">="
31
32
  - !ruby/object:Gem::Version
32
33
  version: '0'
33
34
  type: :development
34
35
  prerelease: false
35
- version_requirements: *70276972324340
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
36
41
  - !ruby/object:Gem::Dependency
37
42
  name: mongo_mapper
38
- requirement: &70276972323920 !ruby/object:Gem::Requirement
39
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
40
44
  requirements:
41
- - - ! '>='
45
+ - - ">="
42
46
  - !ruby/object:Gem::Version
43
47
  version: '0'
44
48
  type: :development
45
49
  prerelease: false
46
- version_requirements: *70276972323920
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
47
55
  - !ruby/object:Gem::Dependency
48
56
  name: reversible_data
49
- requirement: &70276972323500 !ruby/object:Gem::Requirement
50
- none: false
57
+ requirement: !ruby/object:Gem::Requirement
51
58
  requirements:
52
- - - ! '>='
59
+ - - ">="
53
60
  - !ruby/object:Gem::Version
54
61
  version: '0'
55
62
  type: :development
56
63
  prerelease: false
57
- version_requirements: *70276972323500
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: rr
60
- requirement: &70276972323080 !ruby/object:Gem::Requirement
61
- none: false
71
+ requirement: !ruby/object:Gem::Requirement
62
72
  requirements:
63
- - - ! '>='
73
+ - - ">="
64
74
  - !ruby/object:Gem::Version
65
75
  version: '0'
66
76
  type: :development
67
77
  prerelease: false
68
- version_requirements: *70276972323080
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: rspec
71
- requirement: &70276972339040 !ruby/object:Gem::Requirement
72
- none: false
85
+ requirement: !ruby/object:Gem::Requirement
73
86
  requirements:
74
- - - ! '>='
87
+ - - ">="
75
88
  - !ruby/object:Gem::Version
76
89
  version: '0'
77
90
  type: :development
78
91
  prerelease: false
79
- version_requirements: *70276972339040
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
80
97
  description: ActiveRecord, MongoMapper and general tools for generating unique values
81
98
  e.g. api keys and tokens.
82
99
  email:
@@ -85,10 +102,13 @@ executables: []
85
102
  extensions: []
86
103
  extra_rdoc_files: []
87
104
  files:
88
- - .gitignore
89
- - .rspec
90
- - .rvmrc
105
+ - ".gitignore"
106
+ - ".rspec"
107
+ - ".rvmrc"
108
+ - ".travis.yml"
91
109
  - Gemfile
110
+ - LICENSE
111
+ - README.md
92
112
  - Rakefile
93
113
  - lib/unique_generator.rb
94
114
  - lib/unique_generator/version.rb
@@ -101,27 +121,26 @@ files:
101
121
  - unique_generator.gemspec
102
122
  homepage: http://github.com/filtersquad/unique_generator
103
123
  licenses: []
124
+ metadata: {}
104
125
  post_install_message:
105
126
  rdoc_options: []
106
127
  require_paths:
107
128
  - lib
108
129
  required_ruby_version: !ruby/object:Gem::Requirement
109
- none: false
110
130
  requirements:
111
- - - ! '>='
131
+ - - ">="
112
132
  - !ruby/object:Gem::Version
113
133
  version: '0'
114
134
  required_rubygems_version: !ruby/object:Gem::Requirement
115
- none: false
116
135
  requirements:
117
- - - ! '>='
136
+ - - ">="
118
137
  - !ruby/object:Gem::Version
119
138
  version: '0'
120
139
  requirements: []
121
140
  rubyforge_project:
122
- rubygems_version: 1.8.10
141
+ rubygems_version: 2.2.0
123
142
  signing_key:
124
- specification_version: 3
143
+ specification_version: 4
125
144
  summary: Makes generating unique fields in MongoMapper and ActiveRecord easy.
126
145
  test_files:
127
146
  - spec/spec_helper.rb