act_with_bag 1.0.0 → 1.0.2

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: 330c7550cfb054044f0b55af218d2583ec0355d4b90b2ef89524a6fc381e0f6c
4
- data.tar.gz: 27af83366874a66054ff502b1d47f64affa30ce796a8e04b1a89a464806f3b27
3
+ metadata.gz: 4f63fb96d66263716e8ba07368225c04c756521812bddeae7660e59b359d39b4
4
+ data.tar.gz: 17e357dd8bb99e77e71c5b5a5589344a83debc7c6489fdf8ff7b74c6442ae9ad
5
5
  SHA512:
6
- metadata.gz: 501bcab6bb29bc4b62d86c3a1f64a039f50cf3b5f6fab2eaabb8ff1b31027b9196e72149ea0233c6754da8062ab106974288dc86d1321f9ac7095fa3ebed4929
7
- data.tar.gz: b8d72ad5b40959d229a61ec155d611d24da84d4aa33ced4dc1b87700055c6fceb2d56f9c627c46e49cabd0a81415a9d07689fa24ea3bb0f7c4fbf162a33f31d4
6
+ metadata.gz: fb0ca13797f98d2475d06ddd4299b0f1b91abad2556853ac3b7a93326f8bbe238fa1055f6bdd218b460571674e6abae1a09d2a6c4eeee2d94c8ca75841f22c7b
7
+ data.tar.gz: 9ce019e70d1bb2a5523721656cc44b51100c552b0af7d903e03193746c5ef0b19602efa0fb9221134e6e446f39bf3402bbd74d7135ccc8f0e418bda7d3bbb8e9
@@ -0,0 +1,30 @@
1
+ inherit_from:
2
+ - ~/configs/.rubocop.yml
3
+
4
+ AllCops:
5
+ Include:
6
+ - 'lib/**/*.rb'
7
+ Exclude:
8
+ - 'test/**/*'
9
+
10
+ Layout/AccessModifierIndentation:
11
+ Enabled: false
12
+ Layout/EmptyLinesAroundAccessModifier:
13
+ Enabled: false
14
+ Layout/ExtraSpacing:
15
+ Enabled: false
16
+
17
+ Metrics/AbcSize:
18
+ Enabled: false
19
+ Metrics/CyclomaticComplexity:
20
+ Enabled: false
21
+ Metrics/MethodLength:
22
+ Enabled: false
23
+ Metrics/PerceivedComplexity:
24
+ Enabled: false
25
+
26
+ Style/EvalWithLocation:
27
+ Enabled: false
28
+ Style/RescueModifier:
29
+ Exclude:
30
+ - 'lib/act_with_bag.rb'
@@ -1 +1 @@
1
- ruby-2.6.4
1
+ ruby-2.6.6
@@ -8,7 +8,9 @@ bundler_args: --without production
8
8
  script: "bundle exec rake test"
9
9
 
10
10
  rvm:
11
- - 2.6.4
11
+ - 2.6.6
12
+ # - 2.6.5
13
+ # - 2.6.4
12
14
  # - 2.6.3
13
15
  # - 2.6.1
14
16
  # - 2.6.0
data/.watchr CHANGED
@@ -16,37 +16,30 @@ end
16
16
 
17
17
  def run_it(type, file)
18
18
  case type
19
- when 'test'; run %Q{ruby -I"lib:test" -r rubygems #{file}}
20
- # when 'test'; run %Q{rails test #{file}}
21
- # when 'spec'; run %Q{spring rspec -X #{file}}
19
+ when 'test'; run %(ruby -I test #{file})
20
+ # when 'spec'; run %(rspec -X #{file})
22
21
  else; puts "#{H} unknown type: #{type}, file: #{file}"
23
22
  end
24
23
  end
25
24
 
26
25
  def run_all_tests
27
26
  puts "\n#{HH} Running all tests #{HH}\n"
28
- # %w{test spec}.each { |dir| run "spring rake #{dir} RAILS_ENV=test" if File.exists?(dir) }
29
- # %w{test}.each { |dir| run "spring rake #{dir} RAILS_ENV=test" if File.exists?(dir) }
30
- %w{test}.each { |dir| run "rake #{dir} RAILS_ENV=test" if File.exists?(dir) }
27
+ %w[test spec].each { |dir| run "rake #{dir}" if File.exist?(dir) }
31
28
  end
32
29
 
33
30
  def run_matching_files(base)
34
31
  base = base.split('_').first
35
- %w{test spec}.each { |type|
32
+ %w[test spec].each { |type|
36
33
  files = Dir["#{type}/**/*.rb"].select { |file| file =~ /#{base}_.*\.rb/ }
37
34
  run_it type, files.join(' ') unless files.empty?
38
35
  }
39
36
  end
40
37
 
41
- %w{test spec}.each { |type|
38
+ %w[test spec].each { |type|
42
39
  watch("#{type}/#{type}_helper\.rb") { run_all_tests }
40
+ watch('lib/.*\.rb') { run_all_tests }
43
41
  watch("#{type}/.*/*_#{type}\.rb") { |match| run_it type, match[0] }
44
42
  }
45
- %w{rb erb haml slim}.each { |type|
46
- watch("app/.*/.*\.#{type}") { |m|
47
- run_matching_files("#{m[0].split('/').at(2).split('.').first}")
48
- }
49
- }
50
43
 
51
44
  # Ctrl-\ or ctrl-4
52
45
  Signal.trap('QUIT') { run_all_tests }
data/Gemfile CHANGED
@@ -1,11 +1,11 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
  gemspec
3
3
 
4
+ gem 'rails'
5
+
4
6
  group :test do
5
7
  gem 'observr'
8
+ gem 'rubocop', require: false
6
9
  gem 'simplecov', require: false
7
- gem 'minitest'
8
10
  gem 'capybara'
9
- gem 'sqlite3'
10
- # gem 'slim'
11
11
  end
@@ -0,0 +1,20 @@
1
+ Copyright 2010-2020 Dittmar Krall - www.matique.com
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.
data/README.md CHANGED
@@ -7,7 +7,7 @@ In Gemfile:
7
7
 
8
8
  gem 'act_with_bag'
9
9
 
10
- Bag helps when fields in a table are not yet settled down
10
+ Bag helps when fields in a Rails database table are not yet settled down
11
11
  or when many fields without business logic are required.
12
12
 
13
13
  Install (migrate) one bag as a text field in a table to collect many fields.
@@ -92,4 +92,4 @@ Test
92
92
 
93
93
  rake
94
94
 
95
- Copyright (c) 2009-2019 [Dittmar Krall], released under the MIT license
95
+ Copyright (c) 2009-2020 [Dittmar Krall], released under the MIT license
data/Rakefile CHANGED
@@ -1,13 +1,11 @@
1
- require "bundler/setup"
2
-
3
1
  require 'rake/testtask'
4
2
 
5
- desc 'Test the act_with_bag plugin.'
6
- Rake::TestTask.new(:test) do |t|
3
+ desc 'Run the tests.'
4
+ Rake::TestTask.new do |t|
7
5
  t.libs << 'lib'
8
6
  t.libs << 'test'
9
7
  t.pattern = 'test/**/*_test.rb'
10
8
  t.verbose = false
11
9
  end
12
10
 
13
- task :default => :test
11
+ task default: :test
@@ -18,8 +18,10 @@ Gem::Specification.new do |s|
18
18
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
19
19
  s.require_paths = ['lib']
20
20
 
21
- s.add_development_dependency 'rails'
22
- s.add_development_dependency 'bundler'
23
- s.add_development_dependency 'rake', '~> 12'
21
+ s.add_development_dependency 'bundler', '~>1'
22
+ s.add_development_dependency 'rake', '~>13'
24
23
  s.add_development_dependency 'appraisal', '~> 2'
24
+
25
+ s.add_development_dependency 'minitest', '~> 5.0'
26
+ s.add_development_dependency 'sqlite3', '~> 1'
25
27
  end
@@ -1,90 +1,94 @@
1
- class << ActiveRecord::Base
1
+ # frozen_string_literal: true
2
2
 
3
+ class << ActiveRecord::Base
3
4
  def add_to_bag(*baglets)
4
- #p "baglets #{baglets.inspect}"
5
+ # p "baglets #{baglets.inspect}"
5
6
  serialize :bag, Hash
6
7
 
7
- self.class_eval %{
8
+ class_eval %{
8
9
  def bag=(x)
9
- #bag changes disabled as it must be handled by Bag himself
10
+ #bag changes disabled as it must be handled by Bag himself
10
11
  end
11
12
  }
12
13
 
13
14
  @baggies_date ||= {}
14
- baglets.each {|b|
15
+ baglets.each { |b|
15
16
  if b.is_a?(Hash)
16
- b.each {|baggie, type|
17
- add_accessor(baggie, type)
18
- }
17
+ b.each { |baggie, type|
18
+ add_accessor(baggie, type)
19
+ }
19
20
  else
20
- add_accessor(b, :field)
21
+ add_accessor(b, :field)
21
22
  end
22
23
  }
23
24
  end
24
25
 
25
26
  def delete_from_bag(*baglets)
26
- #p "delete_from_bag baglets #{baglets.inspect}"
27
+ # p "delete_from_bag baglets #{baglets.inspect}"
27
28
 
28
- self.class_eval %{
29
+ class_eval %{
29
30
  before_save do
30
- #{baglets}.each {|b|
31
- if b.is_a?(Hash)
32
- b.each {|baggie, type|
33
- self.bag.delete(baggie.to_sym)
34
- }
35
- else
36
- self.bag.delete(b.to_sym)
37
- end
38
- }
31
+ #{baglets}.each { |b|
32
+ if b.is_a?(Hash)
33
+ b.each { |baggie, type|
34
+ self.bag.delete(baggie.to_sym)
35
+ }
36
+ else
37
+ self.bag.delete(b.to_sym)
38
+ end
39
+ }
39
40
  end
40
41
  }
41
-
42
42
  end
43
43
 
44
- def merge(bag, params)
45
- model = self.to_s.underscore.to_sym
44
+ def merge(_bag, params)
45
+ model = to_s.underscore.to_sym
46
46
  return params unless params[model]
47
47
 
48
- (@baggies_date || {}).each {|baggie, type|
49
- res, found, stopped = [], false, false
50
- (1..3).each {|i|
51
- p = params[model].delete("#{baggie}(#{i}i)")
52
- break if p.nil?
53
- found = true
54
- stopped = true if p.empty?
55
- res << p.to_i unless stopped
48
+ (@baggies_date || {}).each { |baggie, _type|
49
+ res = []
50
+ found = false
51
+ stopped = false
52
+ (1..3).each { |i|
53
+ p = params[model].delete("#{baggie}(#{i}i)")
54
+ break if p.nil?
55
+
56
+ found = true
57
+ stopped = true if p.empty?
58
+ res << p.to_i unless stopped
56
59
  }
57
60
  next unless found
58
- ## weird Timestamp, Hash and YAML problem
61
+
62
+ ## weird Timestamp, Hash and YAML problem
59
63
  res = [0] if res == []
60
64
  res[0] = 0 unless res[0] >= 0
61
65
 
62
- value = Date.new(*res) rescue value = nil
66
+ value = Date.new(*res) rescue nil
63
67
  params[model][baggie] = value
64
68
  }
65
69
  params
66
70
  end
67
71
 
68
-
69
72
  protected
70
73
  def accessor_present?(accessor)
71
74
  accessor_sym = accessor.to_sym
72
75
  res = false
73
76
 
74
- res = true if self.method_defined?(accessor_sym)
75
- res = true if self.respond_to?(:attribute_names) &&
76
- self.attribute_names.include?(accessor)
77
+ res = true if method_defined?(accessor_sym)
78
+ res = true if respond_to?(:attribute_names) &&
79
+ attribute_names.include?(accessor)
77
80
  if res
78
- # logger.info "** Already defined #{self.to_s}.#{accessor}"
79
- #p "** act_to_bag: untouched accessor '#{self.to_s}.#{accessor}'"
81
+ # logger.info "** Already defined #{self.to_s}.#{accessor}"
82
+ # p "** act_to_bag: untouched accessor '#{self.to_s}.#{accessor}'"
80
83
  end
81
- return res
84
+ res
82
85
  end
83
86
 
84
87
  def add_accessor(baggie, type)
85
88
  accessor = baggie.to_s
86
89
  return if accessor_present?(accessor)
87
- #MARS patch, new:
90
+
91
+ # MARS patch, new:
88
92
  #
89
93
  # The @baggies field is indispensable. Otherwise mistakes in renaming
90
94
  # or deleting baggies (without renaming/deleting) the value entry from the
@@ -94,69 +98,66 @@ class << ActiveRecord::Base
94
98
  # doing completely other things (e. g. accessing a database column).
95
99
  #
96
100
  @baggies ||= {}
97
- baggies = ( @baggies[self.to_s.underscore.to_sym] ||= {} )
98
- baggies[ baggie ] = type
99
- #END
101
+ baggies = (@baggies[to_s.underscore.to_sym] ||= {})
102
+ baggies[baggie] = type
103
+ # END
100
104
 
101
105
  type_sym = type.to_sym
102
106
  typing = {integer: '.to_i', float: '.to_f',
103
- string: '.to_s'}[type_sym] || ''
104
- #p "add_accessor #{self.to_s} #{baggie.inspect} #{type_sym.inspect}"
107
+ string: '.to_s'}[type_sym] || ''
108
+ # p "add_accessor #{self.to_s} #{baggie.inspect} #{type_sym.inspect}"
105
109
 
106
110
  @baggies_date[baggie] = type if type_sym == :date
107
111
 
108
- unless type_sym == :boolean
109
- self.class_eval %{
110
- def #{accessor}
111
- self.bag && self.bag[:#{baggie}]
112
- end
113
- }
114
-
115
- self.class_eval %{
116
- def #{accessor}=(value)
117
- @attributes['bag'] = {} unless bag.is_a?(Hash)
118
- unless value.nil?
119
- self.bag[:#{baggie}] = value#{typing}
120
- else
121
- self.bag.delete(:#{baggie})
122
- nil
123
- end
124
- end
125
- }
126
-
127
- else ################ now boolean handling ###################
128
-
129
- self.class_eval %{
130
- def #{accessor}
131
- res = bag && bag[:#{baggie}]
132
- return res if res.class == FalseClass
133
- return res if res.class == TrueClass
134
- return res.to_i != 0
135
- res
136
- end
137
- }
138
-
139
- self.class_eval %{
140
- def #{accessor}=(value)
141
- @attributes['bag'] = {} unless bag.is_a?(Hash)
142
- falsys = [false, "false", 0, "0", nil]
143
- unless falsys.include?(value)
144
- self.bag[:#{baggie}] = (value == 'true') || value
145
- else
146
- self.bag.delete(:#{baggie})
147
- nil
148
- end
149
- end
150
- }
151
-
152
- self.class_eval %{
153
- def #{accessor}?
154
- #{accessor}
155
- end
156
- }
157
-
112
+ if type_sym == :boolean
113
+ class_eval %(
114
+ def #{accessor}
115
+ res = bag && bag[:#{baggie}]
116
+ return res if res.class == FalseClass
117
+ return res if res.class == TrueClass
118
+ return res.to_i != 0
119
+ res
120
+ end
121
+ )
122
+
123
+ class_eval %(
124
+ def #{accessor}=(value)
125
+ @attributes['bag'] = {} unless bag.is_a?(Hash)
126
+ falsys = [false, "false", 0, "0", nil]
127
+ unless falsys.include?(value)
128
+ self.bag[:#{baggie}] = (value == 'true') || value
129
+ else
130
+ self.bag.delete(:#{baggie})
131
+ nil
132
+ end
133
+ end
134
+ )
135
+
136
+ class_eval %(
137
+ def #{accessor}?
138
+ #{accessor}
139
+ end
140
+ )
141
+
142
+ else
143
+
144
+ class_eval %(
145
+ def #{accessor}
146
+ self.bag && self.bag[:#{baggie}]
147
+ end
148
+ )
149
+
150
+ class_eval %(
151
+ def #{accessor}=(value)
152
+ @attributes['bag'] = {} unless bag.is_a?(Hash)
153
+ unless value.nil?
154
+ self.bag[:#{baggie}] = value#{typing}
155
+ else
156
+ self.bag.delete(:#{baggie})
157
+ nil
158
+ end
159
+ end
160
+ )
158
161
  end
159
-
160
162
  end
161
-
162
163
  end
@@ -1,6 +1,10 @@
1
+ # rubocop: disable all
2
+
1
3
  module ActWithBag
2
- VERSION = '1.0.0' # 2019-09-27
3
- # VERSION = '0.5.7' # 2019-03-05
4
- # VERSION = '0.5.6' # 2019-02-15
5
- # VERSION = '0.5.5'
4
+ VERSION = '1.0.2' # 2020-07-16
5
+ # VERSION = '1.0.1' # 2020-04-27
6
+ # VERSION = '1.0.0' # 2019-09-27
7
+ # VERSION = '0.5.7' # 2019-03-05
8
+ # VERSION = '0.5.6' # 2019-02-15
9
+ # VERSION = '0.5.5'
6
10
  end
@@ -1,13 +1,16 @@
1
- require 'simplecov'
1
+ if ENV['COVERAGE']
2
+ require 'simplecov'
3
+ SimpleCov.start do
4
+ add_filter '/test/'
5
+ end
6
+ end
2
7
 
3
- require 'rubygems'
8
+ #require 'rails/test_help'
4
9
  require 'minitest/autorun'
5
- require 'active_record'
10
+ require 'minitest/benchmark'
11
+ #require 'capybara/rails'
6
12
 
7
- #SimpleCov.start do
8
- # add_filter 'test'
9
- # command_name 'Minitest'
10
- #end
13
+ require 'active_record'
11
14
 
12
15
  ActiveRecord::Base.establish_connection({
13
16
  adapter: 'sqlite3',
metadata CHANGED
@@ -1,71 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: act_with_bag
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dittmar Krall
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-27 00:00:00.000000000 Z
11
+ date: 2020-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rails
14
+ name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '1'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '1'
27
27
  - !ruby/object:Gem::Dependency
28
- name: bundler
28
+ name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '13'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '13'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rake
42
+ name: appraisal
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '12'
47
+ version: '2'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '12'
54
+ version: '2'
55
55
  - !ruby/object:Gem::Dependency
56
- name: appraisal
56
+ name: minitest
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '2'
61
+ version: '5.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '2'
68
+ version: '5.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: sqlite3
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1'
69
83
  description: Add a bag to a Rails model
70
84
  email:
71
85
  - dittmar.krall@matique.de
@@ -74,12 +88,14 @@ extensions: []
74
88
  extra_rdoc_files: []
75
89
  files:
76
90
  - ".gitignore"
91
+ - ".rubocop.yml"
77
92
  - ".ruby-gemset"
78
93
  - ".ruby-version"
79
94
  - ".travis.yml"
80
95
  - ".watchr"
81
96
  - Appraisals
82
97
  - Gemfile
98
+ - MIT-LICENSE
83
99
  - README.md
84
100
  - Rakefile
85
101
  - act_with_bag.gemspec
@@ -118,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
134
  - !ruby/object:Gem::Version
119
135
  version: '0'
120
136
  requirements: []
121
- rubygems_version: 3.0.6
137
+ rubygems_version: 3.0.8
122
138
  signing_key:
123
139
  specification_version: 4
124
140
  summary: act_with_bag (baggies) gem