ensurance 0.1.11 → 0.1.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6c2795f5ffad6f234f89476f098b2f896e3bd93ef0cf0ede2fa219650d44b8b8
4
- data.tar.gz: 2f834914ad3001f3414a100ca4a4a2c4b43b0f459b3bf6fd7135f892913fd301
3
+ metadata.gz: 24900d5e0ba09dc7d49614c4127aa5e60d78f4e03c24679f41ae9a54333f2f26
4
+ data.tar.gz: 8894c3ecc01c1d5abd59e6d2aa4dd9a8bec1b04fced86d2f26d45c1a5f32350f
5
5
  SHA512:
6
- metadata.gz: 3df2e840fec5e9049986bb4a173c0478e108822d5c2d8bdc127a7a3045daa96419b4a99ec8cdbd0a05431564519ab1cc8043ec59976ac41f7de9b48f7632e4b6
7
- data.tar.gz: aba8cc1b92a9e1324d4065aa99f7084af3e49906d852f322fd74911e6ffefe223a536012051630cf64a553aae47920a816d2ede8a245cb5f374e88dcfb52bb48
6
+ metadata.gz: 89156b067f5f907fe599f0ed5a4f50bce5f2460c62afeb7457d25e4f0867f3886ac2da7779c77f3f1e568cb2762b02bb41ed1d0ada3c3372d83e1108970636af
7
+ data.tar.gz: 0dfde2a6f8fbd245c757bc4560c6cdf45aa7c30ad4356a47fb41565d1fd96b0e432c16cdefaec59e19666a161f1963c85d3a5743624e3fdca527a50de56ee8e8
data/Gemfile CHANGED
@@ -1,7 +1,6 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
3
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
4
 
5
5
  # Specify your gem's dependencies in ensurance.gemspec
6
6
  gemspec
7
-
@@ -1,49 +1,49 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ensurance (0.1.5)
4
+ ensurance (0.1.11)
5
5
  activesupport (>= 3, < 6)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- activemodel (5.1.4)
11
- activesupport (= 5.1.4)
12
- activerecord (5.1.4)
13
- activemodel (= 5.1.4)
14
- activesupport (= 5.1.4)
15
- arel (~> 8.0)
16
- activesupport (5.1.4)
10
+ activemodel (5.2.1)
11
+ activesupport (= 5.2.1)
12
+ activerecord (5.2.1)
13
+ activemodel (= 5.2.1)
14
+ activesupport (= 5.2.1)
15
+ arel (>= 9.0)
16
+ activesupport (5.2.1)
17
17
  concurrent-ruby (~> 1.0, >= 1.0.2)
18
- i18n (~> 0.7)
18
+ i18n (>= 0.7, < 2)
19
19
  minitest (~> 5.1)
20
20
  tzinfo (~> 1.1)
21
- arel (8.0.0)
21
+ arel (9.0.0)
22
22
  awesome_print (1.8.0)
23
23
  concurrent-ruby (1.0.5)
24
24
  diff-lcs (1.3)
25
25
  globalid (0.4.1)
26
26
  activesupport (>= 4.2.0)
27
- i18n (0.9.0)
27
+ i18n (1.1.0)
28
28
  concurrent-ruby (~> 1.0)
29
- minitest (5.10.3)
29
+ minitest (5.11.3)
30
30
  rake (10.5.0)
31
- rspec (3.7.0)
32
- rspec-core (~> 3.7.0)
33
- rspec-expectations (~> 3.7.0)
34
- rspec-mocks (~> 3.7.0)
35
- rspec-core (3.7.0)
36
- rspec-support (~> 3.7.0)
37
- rspec-expectations (3.7.0)
31
+ rspec (3.8.0)
32
+ rspec-core (~> 3.8.0)
33
+ rspec-expectations (~> 3.8.0)
34
+ rspec-mocks (~> 3.8.0)
35
+ rspec-core (3.8.0)
36
+ rspec-support (~> 3.8.0)
37
+ rspec-expectations (3.8.1)
38
38
  diff-lcs (>= 1.2.0, < 2.0)
39
- rspec-support (~> 3.7.0)
40
- rspec-mocks (3.7.0)
39
+ rspec-support (~> 3.8.0)
40
+ rspec-mocks (3.8.0)
41
41
  diff-lcs (>= 1.2.0, < 2.0)
42
- rspec-support (~> 3.7.0)
43
- rspec-support (3.7.0)
42
+ rspec-support (~> 3.8.0)
43
+ rspec-support (3.8.0)
44
44
  sqlite3 (1.3.13)
45
45
  thread_safe (0.3.6)
46
- tzinfo (1.2.4)
46
+ tzinfo (1.2.5)
47
47
  thread_safe (~> 0.1)
48
48
 
49
49
  PLATFORMS
@@ -60,4 +60,4 @@ DEPENDENCIES
60
60
  sqlite3 (>= 1.3.0, < 4)
61
61
 
62
62
  BUNDLED WITH
63
- 1.16.0
63
+ 1.16.2
data/Rakefile CHANGED
@@ -1,6 +1,6 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec)
5
5
 
6
- task :default => :spec
6
+ task default: :spec
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
- require "ensurance"
3
+ require 'bundler/setup'
4
+ require 'ensurance'
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
7
7
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +10,5 @@ require "ensurance"
10
10
  # require "pry"
11
11
  # Pry.start
12
12
 
13
- require "irb"
13
+ require 'irb'
14
14
  IRB.start(__FILE__)
@@ -1,18 +1,17 @@
1
-
2
- lib = File.expand_path("../lib", __FILE__)
1
+ lib = File.expand_path('lib', __dir__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require "ensurance/version"
3
+ require 'ensurance/version'
5
4
 
6
5
  Gem::Specification.new do |spec|
7
- spec.name = "ensurance"
6
+ spec.name = 'ensurance'
8
7
  spec.version = Ensurance::VERSION
9
- spec.authors = ["Ben Sharpe"]
10
- spec.email = ["bsharpe@gmail.com"]
8
+ spec.authors = ['Ben Sharpe']
9
+ spec.email = ['bsharpe@gmail.com']
11
10
 
12
- spec.summary = %q{Add ability to ensure ActiveRecord models}
13
- spec.description = %q{A handy shortcut for user = user.is_a?(User) ? user : User.find(user)}
14
- spec.homepage = "https://github.com/bsharpe/ensurance"
15
- spec.license = "MIT"
11
+ spec.summary = 'Add ability to ensure ActiveRecord models'
12
+ spec.description = 'A handy shortcut for user = user.is_a?(User) ? user : User.find(user)'
13
+ spec.homepage = 'https://github.com/bsharpe/ensurance'
14
+ spec.license = 'MIT'
16
15
 
17
16
  # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
17
  # to allow pushing to a single host or delete this section to allow pushing to any host.
@@ -26,18 +25,17 @@ Gem::Specification.new do |spec|
26
25
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
27
26
  f.match(%r{^(test|spec|features)/})
28
27
  end
29
- spec.bindir = "exe"
28
+ spec.bindir = 'exe'
30
29
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
- spec.require_paths = ["lib"]
30
+ spec.require_paths = ['lib']
32
31
 
33
32
  spec.add_runtime_dependency 'activesupport', '>= 3', '< 6'
34
33
 
35
- spec.add_development_dependency "bundler", "~> 1.16"
36
- spec.add_development_dependency "rake", "~> 10.0"
37
- spec.add_development_dependency "rspec", "~> 3.0"
38
- spec.add_development_dependency "activerecord", '>= 3', '< 6'
39
- spec.add_development_dependency "globalid", '>= 0.3.6', '< 2'
40
- spec.add_development_dependency "sqlite3", '>= 1.3.0', '< 4'
41
- spec.add_development_dependency "awesome_print", '>= 1.0', '< 2'
34
+ spec.add_development_dependency 'activerecord', '>= 3', '< 6'
35
+ spec.add_development_dependency 'awesome_print', '>= 1.0', '< 2'
36
+ spec.add_development_dependency 'bundler', '~> 1.16'
37
+ spec.add_development_dependency 'globalid', '>= 0.3.6', '< 2'
38
+ spec.add_development_dependency 'rake', '~> 10.0'
39
+ spec.add_development_dependency 'rspec', '~> 3.0'
40
+ spec.add_development_dependency 'sqlite3', '>= 1.3.0', '< 4'
42
41
  end
43
-
@@ -1,9 +1,10 @@
1
- require "ensurance/version"
1
+ require 'ensurance/version'
2
2
  require 'active_support'
3
3
 
4
4
  require 'ensurance/date_ensure'
5
5
  require 'ensurance/time_ensure'
6
6
  require 'ensurance/hash_ensure'
7
+ require 'ensurance/array_ensure'
7
8
 
8
9
  module Ensurance
9
10
  extend ActiveSupport::Concern
@@ -27,10 +28,10 @@ module Ensurance
27
28
  return found
28
29
  end
29
30
 
30
- @_ensure_by ||= [@_additional_ensure_by || self.primary_key].flatten.compact.uniq
31
+ @_ensure_by ||= [@_additional_ensure_by || primary_key].flatten.compact.uniq
31
32
 
32
33
  found = []
33
- things = Array(thing)
34
+ things = [thing].flatten
34
35
  things.each do |thing|
35
36
  record = nil
36
37
  @_ensure_by.each do |ensure_field|
@@ -53,16 +54,14 @@ module Ensurance
53
54
  end
54
55
  found.compact!
55
56
 
56
-
57
57
  thing.is_a?(Array) ? found : found.first
58
58
  end
59
59
 
60
60
  def ensure!(thing = nil)
61
61
  return nil unless thing.present?
62
62
  result = self.ensure(thing)
63
- raise ::ActiveRecord::RecordNotFound.new("#{self} not found") unless result
63
+ raise ActiveRecord::RecordNotFound, "#{self} not found" unless result
64
64
  result
65
65
  end
66
-
67
66
  end
68
67
  end
@@ -0,0 +1,32 @@
1
+ # NOTE: https://blog.daveallie.com/clean-monkey-patching/
2
+
3
+ require 'active_support/core_ext/array'
4
+
5
+ module Ensurance
6
+ module ArrayEnsure
7
+ def self.prepended(base)
8
+ base.singleton_class.prepend(ClassMethods)
9
+ end
10
+
11
+ module ClassMethods
12
+ def ensure(thing)
13
+ case thing.class.name
14
+ when 'NilClass'
15
+ nil
16
+ when 'String'
17
+ thing.split(',')
18
+ else
19
+ Array(thing)
20
+ end
21
+ end
22
+
23
+ def ensure!(thing)
24
+ result = self.ensure(thing)
25
+ raise ArgumentError, "Cannot Array.ensure(#{thing || 'nil'})" unless result
26
+ result
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ ::Array.prepend(Ensurance::ArrayEnsure)
@@ -9,21 +9,21 @@ module Ensurance
9
9
  end
10
10
 
11
11
  module ClassMethods
12
- DATE_ENSURE_FORMATS = %w|%m/%d/%Y %Y/%m/%d|.freeze
12
+ DATE_ENSURE_FORMATS = %w[%m/%d/%Y %Y/%m/%d].freeze
13
13
  def ensure(thing)
14
14
  case thing.class.name
15
- when "NilClass"
15
+ when 'NilClass'
16
16
  nil
17
- when "Integer","Float"
17
+ when 'Integer', 'Float'
18
18
  Time.ensure(thing).to_date
19
- when "Date"
19
+ when 'Date'
20
20
  thing
21
- when "String"
21
+ when 'String'
22
22
  if thing.to_i.to_s == thing
23
23
  ::Time.at(thing.to_i).to_date
24
24
  elsif thing.to_f.to_s == thing
25
25
  ::Time.at(thing.to_f).to_date
26
- elsif thing.index("/")
26
+ elsif thing.index('/')
27
27
  # Assume US Date format
28
28
  result = nil
29
29
  DATE_ENSURE_FORMATS.each do |f|
@@ -33,7 +33,7 @@ module Ensurance
33
33
  rescue ArgumentError
34
34
  end
35
35
  end
36
- raise ArgumentError.new("Bad Date: #{thing}".yellow) unless result
36
+ raise ArgumentError, "Bad Date: #{thing}".yellow unless result
37
37
  result
38
38
  else
39
39
  ::Date.parse(thing)
@@ -42,7 +42,7 @@ module Ensurance
42
42
  if thing.respond_to?(:to_date)
43
43
  thing.to_date
44
44
  else
45
- raise ArgumentError.new("Unknown Type for Date to ensure: #{thing.class.name}")
45
+ raise ArgumentError, "Unknown Type for Date to ensure: #{thing.class.name}"
46
46
  end
47
47
  end
48
48
  end
@@ -56,4 +56,4 @@ module Ensurance
56
56
  end
57
57
  end
58
58
 
59
- ::Date.prepend(Ensurance::DateEnsure)
59
+ ::Date.prepend(Ensurance::DateEnsure)
@@ -12,23 +12,23 @@ module Ensurance
12
12
  module ClassMethods
13
13
  def ensure(thing)
14
14
  case thing.class.name
15
- when "Hash","HashWithIndifferentAccess"
15
+ when 'Hash', 'HashWithIndifferentAccess'
16
16
  thing
17
- when "String"
17
+ when 'String'
18
18
  JSON.parse(thing)
19
- when "NilClass"
19
+ when 'NilClass'
20
20
  nil
21
- when "ActionController::UnfilteredParameters", "ActionController::Parameters"
21
+ when 'ActionController::UnfilteredParameters', 'ActionController::Parameters'
22
22
  thing.permit!.to_h
23
23
  else
24
24
  if thing.respond_to?(:to_h)
25
25
  begin
26
26
  thing.to_h
27
27
  rescue TypeError
28
- raise ArgumentError.new("Unhandled Type for Hash to ensure: #{thing.class}")
28
+ raise ArgumentError, "Unhandled Type for Hash to ensure: #{thing.class}"
29
29
  end
30
30
  else
31
- raise ArgumentError.new("Unhandled Type for Hash to ensure: #{thing.class}")
31
+ raise ArgumentError, "Unhandled Type for Hash to ensure: #{thing.class}"
32
32
  end
33
33
  end
34
34
  end
@@ -42,4 +42,4 @@ module Ensurance
42
42
  end
43
43
  end
44
44
 
45
- ::Hash.prepend( Ensurance::HashEnsure )
45
+ ::Hash.prepend(Ensurance::HashEnsure)
@@ -11,15 +11,15 @@ module Ensurance
11
11
  module ClassMethods
12
12
  def ensure(thing)
13
13
  case thing.class.name
14
- when "NilClass"
14
+ when 'NilClass'
15
15
  thing
16
- when "Time"
16
+ when 'Time'
17
17
  thing
18
- when "Date"
18
+ when 'Date'
19
19
  thing.beginning_of_day
20
- when "Integer", "Float"
20
+ when 'Integer', 'Float'
21
21
  ::Time.at(thing)
22
- when "String"
22
+ when 'String'
23
23
  if thing.to_i.to_s == thing
24
24
  ::Time.at(thing.to_i)
25
25
  elsif thing.to_f.to_s == thing
@@ -31,23 +31,20 @@ module Ensurance
31
31
  if thing.respond_to?(:to_time)
32
32
  thing.to_time
33
33
  else
34
- raise ArgumentError.new("Unhandled Type for Time to ensure: #{thing.class}")
34
+ raise ArgumentError, "Unhandled Type for Time to ensure: #{thing.class}"
35
35
  end
36
36
  end
37
37
  end
38
38
 
39
- def ensure!(thing)
39
+ def ensure!(_thing)
40
40
  def ensure!(thing)
41
41
  result = self.ensure(thing)
42
42
  raise ArgumentError, "Cannot Time.ensure(#{thing})" unless result
43
43
  result
44
44
  end
45
45
  end
46
-
47
46
  end
48
-
49
47
  end
50
48
  end
51
49
 
52
50
  ::Time.prepend(Ensurance::TimeEnsure)
53
-
@@ -1,3 +1,3 @@
1
1
  module Ensurance
2
- VERSION = "0.1.11"
3
- end
2
+ VERSION = '0.1.12'.freeze
3
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ensurance
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.11
4
+ version: 0.1.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Sharpe
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-04-26 00:00:00.000000000 Z
11
+ date: 2018-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -31,127 +31,127 @@ dependencies:
31
31
  - !ruby/object:Gem::Version
32
32
  version: '6'
33
33
  - !ruby/object:Gem::Dependency
34
- name: bundler
34
+ name: activerecord
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - "~>"
37
+ - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: '1.16'
39
+ version: '3'
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '6'
40
43
  type: :development
41
44
  prerelease: false
42
45
  version_requirements: !ruby/object:Gem::Requirement
43
46
  requirements:
44
- - - "~>"
47
+ - - ">="
45
48
  - !ruby/object:Gem::Version
46
- version: '1.16'
49
+ version: '3'
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '6'
47
53
  - !ruby/object:Gem::Dependency
48
- name: rake
54
+ name: awesome_print
49
55
  requirement: !ruby/object:Gem::Requirement
50
56
  requirements:
51
- - - "~>"
57
+ - - ">="
52
58
  - !ruby/object:Gem::Version
53
- version: '10.0'
59
+ version: '1.0'
60
+ - - "<"
61
+ - !ruby/object:Gem::Version
62
+ version: '2'
54
63
  type: :development
55
64
  prerelease: false
56
65
  version_requirements: !ruby/object:Gem::Requirement
57
66
  requirements:
58
- - - "~>"
67
+ - - ">="
59
68
  - !ruby/object:Gem::Version
60
- version: '10.0'
69
+ version: '1.0'
70
+ - - "<"
71
+ - !ruby/object:Gem::Version
72
+ version: '2'
61
73
  - !ruby/object:Gem::Dependency
62
- name: rspec
74
+ name: bundler
63
75
  requirement: !ruby/object:Gem::Requirement
64
76
  requirements:
65
77
  - - "~>"
66
78
  - !ruby/object:Gem::Version
67
- version: '3.0'
79
+ version: '1.16'
68
80
  type: :development
69
81
  prerelease: false
70
82
  version_requirements: !ruby/object:Gem::Requirement
71
83
  requirements:
72
84
  - - "~>"
73
85
  - !ruby/object:Gem::Version
74
- version: '3.0'
86
+ version: '1.16'
75
87
  - !ruby/object:Gem::Dependency
76
- name: activerecord
88
+ name: globalid
77
89
  requirement: !ruby/object:Gem::Requirement
78
90
  requirements:
79
91
  - - ">="
80
92
  - !ruby/object:Gem::Version
81
- version: '3'
93
+ version: 0.3.6
82
94
  - - "<"
83
95
  - !ruby/object:Gem::Version
84
- version: '6'
96
+ version: '2'
85
97
  type: :development
86
98
  prerelease: false
87
99
  version_requirements: !ruby/object:Gem::Requirement
88
100
  requirements:
89
101
  - - ">="
90
102
  - !ruby/object:Gem::Version
91
- version: '3'
103
+ version: 0.3.6
92
104
  - - "<"
93
105
  - !ruby/object:Gem::Version
94
- version: '6'
106
+ version: '2'
95
107
  - !ruby/object:Gem::Dependency
96
- name: globalid
108
+ name: rake
97
109
  requirement: !ruby/object:Gem::Requirement
98
110
  requirements:
99
- - - ">="
100
- - !ruby/object:Gem::Version
101
- version: 0.3.6
102
- - - "<"
111
+ - - "~>"
103
112
  - !ruby/object:Gem::Version
104
- version: '2'
113
+ version: '10.0'
105
114
  type: :development
106
115
  prerelease: false
107
116
  version_requirements: !ruby/object:Gem::Requirement
108
117
  requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- version: 0.3.6
112
- - - "<"
118
+ - - "~>"
113
119
  - !ruby/object:Gem::Version
114
- version: '2'
120
+ version: '10.0'
115
121
  - !ruby/object:Gem::Dependency
116
- name: sqlite3
122
+ name: rspec
117
123
  requirement: !ruby/object:Gem::Requirement
118
124
  requirements:
119
- - - ">="
120
- - !ruby/object:Gem::Version
121
- version: 1.3.0
122
- - - "<"
125
+ - - "~>"
123
126
  - !ruby/object:Gem::Version
124
- version: '4'
127
+ version: '3.0'
125
128
  type: :development
126
129
  prerelease: false
127
130
  version_requirements: !ruby/object:Gem::Requirement
128
131
  requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: 1.3.0
132
- - - "<"
132
+ - - "~>"
133
133
  - !ruby/object:Gem::Version
134
- version: '4'
134
+ version: '3.0'
135
135
  - !ruby/object:Gem::Dependency
136
- name: awesome_print
136
+ name: sqlite3
137
137
  requirement: !ruby/object:Gem::Requirement
138
138
  requirements:
139
139
  - - ">="
140
140
  - !ruby/object:Gem::Version
141
- version: '1.0'
141
+ version: 1.3.0
142
142
  - - "<"
143
143
  - !ruby/object:Gem::Version
144
- version: '2'
144
+ version: '4'
145
145
  type: :development
146
146
  prerelease: false
147
147
  version_requirements: !ruby/object:Gem::Requirement
148
148
  requirements:
149
149
  - - ">="
150
150
  - !ruby/object:Gem::Version
151
- version: '1.0'
151
+ version: 1.3.0
152
152
  - - "<"
153
153
  - !ruby/object:Gem::Version
154
- version: '2'
154
+ version: '4'
155
155
  description: 'A handy shortcut for user = user.is_a?(User) ? user : User.find(user)'
156
156
  email:
157
157
  - bsharpe@gmail.com
@@ -171,6 +171,7 @@ files:
171
171
  - bin/setup
172
172
  - ensurance.gemspec
173
173
  - lib/ensurance.rb
174
+ - lib/ensurance/array_ensure.rb
174
175
  - lib/ensurance/date_ensure.rb
175
176
  - lib/ensurance/hash_ensure.rb
176
177
  - lib/ensurance/time_ensure.rb