randomized_field 0.1.0 → 1.0.0

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.
Files changed (70) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +46 -0
  3. data/.rspec +3 -0
  4. data/.rubocop.yml +24 -0
  5. data/.travis.yml +7 -0
  6. data/Gemfile +5 -0
  7. data/Gemfile.lock +81 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +33 -68
  10. data/Rakefile +4 -35
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/lib/randomized_field.rb +18 -4
  14. data/lib/randomized_field/callback.rb +30 -0
  15. data/lib/randomized_field/generator.rb +23 -0
  16. data/lib/randomized_field/version.rb +1 -2
  17. data/randomized_field.gemspec +49 -0
  18. metadata +133 -144
  19. data/MIT-LICENSE +0 -20
  20. data/lib/randomized_field/base.rb +0 -21
  21. data/lib/randomized_field/defaults.rb +0 -8
  22. data/lib/randomized_field/randomizer.rb +0 -31
  23. data/lib/tasks/randomized_field_tasks.rake +0 -4
  24. data/test/dummy/Rakefile +0 -7
  25. data/test/dummy/app/assets/javascripts/application.js +0 -9
  26. data/test/dummy/app/assets/stylesheets/application.css +0 -7
  27. data/test/dummy/app/controllers/application_controller.rb +0 -3
  28. data/test/dummy/app/helpers/application_helper.rb +0 -2
  29. data/test/dummy/app/models/default_model.rb +0 -3
  30. data/test/dummy/app/models/prefix_model.rb +0 -3
  31. data/test/dummy/app/models/single_character_model.rb +0 -3
  32. data/test/dummy/app/views/layouts/application.html.erb +0 -14
  33. data/test/dummy/config.ru +0 -4
  34. data/test/dummy/config/application.rb +0 -45
  35. data/test/dummy/config/boot.rb +0 -10
  36. data/test/dummy/config/database.yml +0 -25
  37. data/test/dummy/config/environment.rb +0 -5
  38. data/test/dummy/config/environments/development.rb +0 -30
  39. data/test/dummy/config/environments/production.rb +0 -60
  40. data/test/dummy/config/environments/test.rb +0 -39
  41. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  42. data/test/dummy/config/initializers/inflections.rb +0 -10
  43. data/test/dummy/config/initializers/mime_types.rb +0 -5
  44. data/test/dummy/config/initializers/secret_token.rb +0 -7
  45. data/test/dummy/config/initializers/session_store.rb +0 -8
  46. data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
  47. data/test/dummy/config/locales/en.yml +0 -5
  48. data/test/dummy/config/routes.rb +0 -58
  49. data/test/dummy/db/development.sqlite3 +0 -0
  50. data/test/dummy/db/migrate/20120204224641_create_default_models.rb +0 -9
  51. data/test/dummy/db/migrate/20120204235832_create_prefix_models.rb +0 -9
  52. data/test/dummy/db/migrate/20120205000853_create_single_character_models.rb +0 -9
  53. data/test/dummy/db/schema.rb +0 -34
  54. data/test/dummy/db/test.sqlite3 +0 -0
  55. data/test/dummy/log/development.log +0 -269
  56. data/test/dummy/log/test.log +0 -1186
  57. data/test/dummy/public/404.html +0 -26
  58. data/test/dummy/public/422.html +0 -26
  59. data/test/dummy/public/500.html +0 -26
  60. data/test/dummy/public/favicon.ico +0 -0
  61. data/test/dummy/script/rails +0 -6
  62. data/test/dummy/test/fixtures/default_models.yml +0 -7
  63. data/test/dummy/test/fixtures/prefix_models.yml +0 -7
  64. data/test/dummy/test/fixtures/simple_models.yml +0 -7
  65. data/test/dummy/test/fixtures/single_character_models.yml +0 -7
  66. data/test/dummy/test/unit/default_model_test.rb +0 -7
  67. data/test/dummy/test/unit/prefix_model_test.rb +0 -7
  68. data/test/dummy/test/unit/single_character_model_test.rb +0 -7
  69. data/test/randomized_field_test.rb +0 -69
  70. data/test/test_helper.rb +0 -10
@@ -0,0 +1,23 @@
1
+ module RandomizedField
2
+ # Class to generate a random string with a given length and set of valid
3
+ # characters.
4
+ class Generator
5
+ DEFAULTS = {
6
+ length: 8,
7
+ valid_characters: [*("0".."9"), *("a".."z")]
8
+ }.freeze
9
+
10
+ attr_reader :callback, :length, :valid_characters
11
+ private :callback, :length, :valid_characters
12
+
13
+ def initialize(options = {}, &block)
14
+ @length = options.fetch(:length, DEFAULTS[:length])
15
+ @valid_characters = options.fetch(:valid_characters, DEFAULTS[:valid_characters])
16
+ @callback = block || :itself.to_proc
17
+ end
18
+
19
+ def generate
20
+ callback.call(Array.new(length) { valid_characters.sample }.join)
21
+ end
22
+ end
23
+ end
@@ -1,4 +1,3 @@
1
1
  module RandomizedField
2
- # The current version of randomized_field
3
- VERSION = "0.1.0"
2
+ VERSION = "1.0.0".freeze
4
3
  end
@@ -0,0 +1,49 @@
1
+ lib = File.expand_path("lib", __dir__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require "randomized_field/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "randomized_field"
7
+ spec.version = RandomizedField::VERSION
8
+ spec.authors = ["Jesse Farmer"]
9
+ spec.email = ["jesse@strive.co"]
10
+
11
+ spec.summary = "An ActiveRecord module to populate a database field with a unique, randomly-generated string."
12
+ spec.description = <<~EOM
13
+ RandomizedField is a simple ActiveRecord module that populates a field with a unique,
14
+ randomly-generated string. This is useful for generating one-off tokens or creating a
15
+ non-incrementing unique ID. See the project page for example uses.
16
+ EOM
17
+ spec.homepage = "http://github.com/strivetalent/randomized_field"
18
+ spec.license = "MIT"
19
+
20
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
21
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
22
+ if spec.respond_to?(:metadata)
23
+ spec.metadata["allowed_push_host"] = "https://rubygems.org"
24
+
25
+ spec.metadata["homepage_uri"] = spec.homepage
26
+ spec.metadata["source_code_uri"] = spec.homepage
27
+ spec.metadata["changelog_uri"] = spec.homepage
28
+ else
29
+ raise "RubyGems 2.0 or newer is required to protect against " \
30
+ "public gem pushes."
31
+ end
32
+
33
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
34
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
35
+ end
36
+ spec.bindir = "exe"
37
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
38
+ spec.require_paths = ["lib"]
39
+
40
+ spec.add_dependency "activerecord", ">= 4.0.0"
41
+
42
+ spec.add_development_dependency "bundler", "~> 1.16"
43
+ spec.add_development_dependency "rake", "~> 10.0"
44
+ spec.add_development_dependency "rspec", "~> 3.0"
45
+ spec.add_development_dependency "rubocop", "~> 0.59"
46
+ spec.add_development_dependency "rubocop-rspec", "~> 1.30"
47
+ spec.add_development_dependency "shoulda-matchers", "~> 3.1"
48
+ spec.add_development_dependency "sqlite3"
49
+ end
metadata CHANGED
@@ -1,191 +1,180 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: randomized_field
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
5
- prerelease:
4
+ version: 1.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Jesse Farmer
9
8
  autorequire:
10
- bindir: bin
9
+ bindir: exe
11
10
  cert_chain: []
12
- date: 2012-02-05 00:00:00.000000000 Z
11
+ date: 2018-10-23 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: sqlite3
16
- requirement: &70320797453040 !ruby/object:Gem::Requirement
17
- none: false
14
+ name: activerecord
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
- version: '0'
19
+ version: 4.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 4.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.16'
22
34
  type: :development
23
35
  prerelease: false
24
- version_requirements: *70320797453040
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.16'
25
41
  - !ruby/object:Gem::Dependency
26
- name: rails
27
- requirement: &70320797452540 !ruby/object:Gem::Requirement
28
- none: false
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
29
44
  requirements:
30
- - - ~>
45
+ - - "~>"
31
46
  - !ruby/object:Gem::Version
32
- version: '3.1'
47
+ version: '10.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.0'
33
62
  type: :development
34
63
  prerelease: false
35
- version_requirements: *70320797452540
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.0'
36
69
  - !ruby/object:Gem::Dependency
37
- name: activerecord
38
- requirement: &70320797452040 !ruby/object:Gem::Requirement
39
- none: false
70
+ name: rubocop
71
+ requirement: !ruby/object:Gem::Requirement
40
72
  requirements:
41
- - - ~>
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.59'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.59'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop-rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.30'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.30'
97
+ - !ruby/object:Gem::Dependency
98
+ name: shoulda-matchers
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
42
102
  - !ruby/object:Gem::Version
43
103
  version: '3.1'
44
104
  type: :development
45
105
  prerelease: false
46
- version_requirements: *70320797452040
47
- description: ! 'RandomizedField is a simple plugin for ActiveRecord that populates
48
- a field with a unique,
49
-
50
- randomly-generated string. This is useful for generating one-off tokens or creating
51
- a
52
-
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.1'
111
+ - !ruby/object:Gem::Dependency
112
+ name: sqlite3
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ description: |
126
+ RandomizedField is a simple ActiveRecord module that populates a field with a unique,
127
+ randomly-generated string. This is useful for generating one-off tokens or creating a
53
128
  non-incrementing unique ID. See the project page for example uses.
54
-
55
- '
56
129
  email:
57
- - jesse@20bits.com
130
+ - jesse@strive.co
58
131
  executables: []
59
132
  extensions: []
60
133
  extra_rdoc_files: []
61
134
  files:
62
- - lib/randomized_field/base.rb
63
- - lib/randomized_field/defaults.rb
64
- - lib/randomized_field/randomizer.rb
65
- - lib/randomized_field/version.rb
66
- - lib/randomized_field.rb
67
- - lib/tasks/randomized_field_tasks.rake
68
- - MIT-LICENSE
69
- - Rakefile
135
+ - ".gitignore"
136
+ - ".rspec"
137
+ - ".rubocop.yml"
138
+ - ".travis.yml"
139
+ - Gemfile
140
+ - Gemfile.lock
141
+ - LICENSE.txt
70
142
  - README.md
71
- - test/dummy/app/assets/javascripts/application.js
72
- - test/dummy/app/assets/stylesheets/application.css
73
- - test/dummy/app/controllers/application_controller.rb
74
- - test/dummy/app/helpers/application_helper.rb
75
- - test/dummy/app/models/default_model.rb
76
- - test/dummy/app/models/prefix_model.rb
77
- - test/dummy/app/models/single_character_model.rb
78
- - test/dummy/app/views/layouts/application.html.erb
79
- - test/dummy/config/application.rb
80
- - test/dummy/config/boot.rb
81
- - test/dummy/config/database.yml
82
- - test/dummy/config/environment.rb
83
- - test/dummy/config/environments/development.rb
84
- - test/dummy/config/environments/production.rb
85
- - test/dummy/config/environments/test.rb
86
- - test/dummy/config/initializers/backtrace_silencers.rb
87
- - test/dummy/config/initializers/inflections.rb
88
- - test/dummy/config/initializers/mime_types.rb
89
- - test/dummy/config/initializers/secret_token.rb
90
- - test/dummy/config/initializers/session_store.rb
91
- - test/dummy/config/initializers/wrap_parameters.rb
92
- - test/dummy/config/locales/en.yml
93
- - test/dummy/config/routes.rb
94
- - test/dummy/config.ru
95
- - test/dummy/db/development.sqlite3
96
- - test/dummy/db/migrate/20120204224641_create_default_models.rb
97
- - test/dummy/db/migrate/20120204235832_create_prefix_models.rb
98
- - test/dummy/db/migrate/20120205000853_create_single_character_models.rb
99
- - test/dummy/db/schema.rb
100
- - test/dummy/db/test.sqlite3
101
- - test/dummy/log/development.log
102
- - test/dummy/log/test.log
103
- - test/dummy/public/404.html
104
- - test/dummy/public/422.html
105
- - test/dummy/public/500.html
106
- - test/dummy/public/favicon.ico
107
- - test/dummy/Rakefile
108
- - test/dummy/script/rails
109
- - test/dummy/test/fixtures/default_models.yml
110
- - test/dummy/test/fixtures/prefix_models.yml
111
- - test/dummy/test/fixtures/simple_models.yml
112
- - test/dummy/test/fixtures/single_character_models.yml
113
- - test/dummy/test/unit/default_model_test.rb
114
- - test/dummy/test/unit/prefix_model_test.rb
115
- - test/dummy/test/unit/single_character_model_test.rb
116
- - test/randomized_field_test.rb
117
- - test/test_helper.rb
118
- homepage: http://github.com/jfarmer/randomzied_field
119
- licenses: []
143
+ - Rakefile
144
+ - bin/console
145
+ - bin/setup
146
+ - lib/randomized_field.rb
147
+ - lib/randomized_field/callback.rb
148
+ - lib/randomized_field/generator.rb
149
+ - lib/randomized_field/version.rb
150
+ - randomized_field.gemspec
151
+ homepage: http://github.com/strivetalent/randomized_field
152
+ licenses:
153
+ - MIT
154
+ metadata:
155
+ allowed_push_host: https://rubygems.org
156
+ homepage_uri: http://github.com/strivetalent/randomized_field
157
+ source_code_uri: http://github.com/strivetalent/randomized_field
158
+ changelog_uri: http://github.com/strivetalent/randomized_field
120
159
  post_install_message:
121
160
  rdoc_options: []
122
161
  require_paths:
123
162
  - lib
124
163
  required_ruby_version: !ruby/object:Gem::Requirement
125
- none: false
126
164
  requirements:
127
- - - ! '>='
165
+ - - ">="
128
166
  - !ruby/object:Gem::Version
129
167
  version: '0'
130
168
  required_rubygems_version: !ruby/object:Gem::Requirement
131
- none: false
132
169
  requirements:
133
- - - ! '>='
170
+ - - ">="
134
171
  - !ruby/object:Gem::Version
135
172
  version: '0'
136
173
  requirements: []
137
174
  rubyforge_project:
138
- rubygems_version: 1.8.10
175
+ rubygems_version: 2.7.6
139
176
  signing_key:
140
- specification_version: 3
141
- summary: An ActiveRecord plugin to populate a database field with a unique, randomly-generated
142
- string
143
- test_files:
144
- - test/dummy/app/assets/javascripts/application.js
145
- - test/dummy/app/assets/stylesheets/application.css
146
- - test/dummy/app/controllers/application_controller.rb
147
- - test/dummy/app/helpers/application_helper.rb
148
- - test/dummy/app/models/default_model.rb
149
- - test/dummy/app/models/prefix_model.rb
150
- - test/dummy/app/models/single_character_model.rb
151
- - test/dummy/app/views/layouts/application.html.erb
152
- - test/dummy/config/application.rb
153
- - test/dummy/config/boot.rb
154
- - test/dummy/config/database.yml
155
- - test/dummy/config/environment.rb
156
- - test/dummy/config/environments/development.rb
157
- - test/dummy/config/environments/production.rb
158
- - test/dummy/config/environments/test.rb
159
- - test/dummy/config/initializers/backtrace_silencers.rb
160
- - test/dummy/config/initializers/inflections.rb
161
- - test/dummy/config/initializers/mime_types.rb
162
- - test/dummy/config/initializers/secret_token.rb
163
- - test/dummy/config/initializers/session_store.rb
164
- - test/dummy/config/initializers/wrap_parameters.rb
165
- - test/dummy/config/locales/en.yml
166
- - test/dummy/config/routes.rb
167
- - test/dummy/config.ru
168
- - test/dummy/db/development.sqlite3
169
- - test/dummy/db/migrate/20120204224641_create_default_models.rb
170
- - test/dummy/db/migrate/20120204235832_create_prefix_models.rb
171
- - test/dummy/db/migrate/20120205000853_create_single_character_models.rb
172
- - test/dummy/db/schema.rb
173
- - test/dummy/db/test.sqlite3
174
- - test/dummy/log/development.log
175
- - test/dummy/log/test.log
176
- - test/dummy/public/404.html
177
- - test/dummy/public/422.html
178
- - test/dummy/public/500.html
179
- - test/dummy/public/favicon.ico
180
- - test/dummy/Rakefile
181
- - test/dummy/script/rails
182
- - test/dummy/test/fixtures/default_models.yml
183
- - test/dummy/test/fixtures/prefix_models.yml
184
- - test/dummy/test/fixtures/simple_models.yml
185
- - test/dummy/test/fixtures/single_character_models.yml
186
- - test/dummy/test/unit/default_model_test.rb
187
- - test/dummy/test/unit/prefix_model_test.rb
188
- - test/dummy/test/unit/single_character_model_test.rb
189
- - test/randomized_field_test.rb
190
- - test/test_helper.rb
191
- has_rdoc:
177
+ specification_version: 4
178
+ summary: An ActiveRecord module to populate a database field with a unique, randomly-generated
179
+ string.
180
+ test_files: []
@@ -1,20 +0,0 @@
1
- Copyright 2012 Jesse Farmer
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,21 +0,0 @@
1
- module RandomizedField
2
- module Base
3
- extend ActiveSupport::Concern
4
-
5
- module ClassMethods
6
-
7
-
8
- def randomized_field(field_name, options = {})
9
- cattr_accessor :randomized_field_name
10
- cattr_accessor :randomized_field_options
11
-
12
- self.randomized_field_name = field_name
13
- self.randomized_field_options = RandomizedField::DEFAULTS.merge(options)
14
-
15
- before_create RandomizedField::Randomizer.new(field_name, self.randomized_field_options)
16
- end
17
- end
18
- end
19
- end
20
-
21
- ActiveRecord::Base.send :include, RandomizedField::Base