randomized_field 0.1.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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