act_with_bag 0.5.3 → 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
- SHA1:
3
- metadata.gz: 74be06d69e0735cdb7f86a7008c9e6673ebfaeec
4
- data.tar.gz: b21f869b278feece5b9bd139b3658df04f83029d
2
+ SHA256:
3
+ metadata.gz: 4f63fb96d66263716e8ba07368225c04c756521812bddeae7660e59b359d39b4
4
+ data.tar.gz: 17e357dd8bb99e77e71c5b5a5589344a83debc7c6489fdf8ff7b74c6442ae9ad
5
5
  SHA512:
6
- metadata.gz: bc2521bcdd011be523018f48e49cde5f125b2efb33741ac95cf36ae002ac6ffd06b3e5cadbe03eaded0bb73c4e2aade059551f1a52611f14d2b536a132a3024b
7
- data.tar.gz: 31843f4c41d87a3beb619c1ecb41f8d3b1ab891c7fa16fa06e6c76997d6b9cc17ddfab508660e223386adc8e992a505e356edcb90e520623be612cb8114a0bfb
6
+ metadata.gz: fb0ca13797f98d2475d06ddd4299b0f1b91abad2556853ac3b7a93326f8bbe238fa1055f6bdd218b460571674e6abae1a09d2a6c4eeee2d94c8ca75841f22c7b
7
+ data.tar.gz: 9ce019e70d1bb2a5523721656cc44b51100c552b0af7d903e03193746c5ef0b19602efa0fb9221134e6e446f39bf3402bbd74d7135ccc8f0e418bda7d3bbb8e9
data/.gitignore CHANGED
@@ -1,6 +1,10 @@
1
+ .bundle/
2
+ coverage/
3
+
1
4
  *.gem
2
- .bundle
3
- Gemfile.lock
4
- pkg/*
5
+ *.log
6
+ *.lock
5
7
  *.sqlite3
6
- .ruby-version
8
+ **/*.gem
9
+ **/*.log
10
+ **/*.lock
@@ -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'
@@ -0,0 +1 @@
1
+ rails-6.0
@@ -0,0 +1 @@
1
+ ruby-2.6.6
@@ -1,20 +1,33 @@
1
1
  language: ruby
2
+ sudo: false
3
+
2
4
  bundler_args: --without production
3
- before_install: rm -f Gemfile.lock
5
+ #before_install:
6
+ #- gem update bundler --no-document
7
+ #- gem update bundler --no-rdoc --no-ri
8
+ script: "bundle exec rake test"
4
9
 
5
10
  rvm:
11
+ - 2.6.6
12
+ # - 2.6.5
13
+ # - 2.6.4
14
+ # - 2.6.3
15
+ # - 2.6.1
16
+ # - 2.6.0
17
+ - 2.5.1
18
+ # - 2.2.4
6
19
  # - 1.9.3
7
- - 2.2.3
8
- - 2.3.1
9
- - 2.4.1
20
+ ## - 2.2.3
21
+ # - 2.3.1
22
+ ## - 2.4.1
10
23
 
11
- env:
12
- # - "RAILS_VERSION=3.2.16" # making problems at travis
13
- - "RAILS_VERSION=4.2.4"
14
- # - "RAILS_VERSION=5.0.0.1"
15
- - "RAILS_VERSION=5.1.2"
24
+ gemfile:
25
+ - gemfiles/rails_6.0.gemfile
26
+ # - gemfiles/rails_5.2.gemfile
27
+ # - gemfiles/rails_5.0.gemfile
28
+ # - gemfiles/rails_4.1.gemfile
16
29
 
17
- #matrix:
30
+ matrix:
18
31
  # exclude:
19
32
  # - rvm: 2.2.3
20
33
  # env: "RAILS_VERSION=3.2.16"
data/.watchr CHANGED
@@ -16,36 +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" -rubygems #{file}}
20
- # when 'spec'; run %Q{spring rspec -X #{file}}
19
+ when 'test'; run %(ruby -I test #{file})
20
+ # when 'spec'; run %(rspec -X #{file})
21
21
  else; puts "#{H} unknown type: #{type}, file: #{file}"
22
22
  end
23
23
  end
24
24
 
25
25
  def run_all_tests
26
26
  puts "\n#{HH} Running all tests #{HH}\n"
27
- # %w{test spec}.each { |dir| run "spring rake #{dir} RAILS_ENV=test" if File.exists?(dir) }
28
- # %w{test}.each { |dir| run "spring rake #{dir} RAILS_ENV=test" if File.exists?(dir) }
29
- %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) }
30
28
  end
31
29
 
32
30
  def run_matching_files(base)
33
31
  base = base.split('_').first
34
- %w{test spec}.each { |type|
32
+ %w[test spec].each { |type|
35
33
  files = Dir["#{type}/**/*.rb"].select { |file| file =~ /#{base}_.*\.rb/ }
36
34
  run_it type, files.join(' ') unless files.empty?
37
35
  }
38
36
  end
39
37
 
40
- %w{test spec}.each { |type|
38
+ %w[test spec].each { |type|
41
39
  watch("#{type}/#{type}_helper\.rb") { run_all_tests }
40
+ watch('lib/.*\.rb') { run_all_tests }
42
41
  watch("#{type}/.*/*_#{type}\.rb") { |match| run_it type, match[0] }
43
42
  }
44
- %w{rb erb haml slim}.each { |type|
45
- watch("app/.*/.*\.#{type}") { |m|
46
- run_matching_files("#{m[0].split('/').at(2).split('.').first}")
47
- }
48
- }
49
43
 
50
44
  # Ctrl-\ or ctrl-4
51
45
  Signal.trap('QUIT') { run_all_tests }
@@ -0,0 +1,19 @@
1
+ appraise 'rails-6.0' do
2
+ gem 'rails', '~> 6.0.0'
3
+ gem 'dryer-config', '~> 5.2.0'
4
+ end
5
+
6
+ appraise 'rails-5.2' do
7
+ gem 'rails', '~> 5.2.0'
8
+ gem 'dryer-config', '~> 5.2.0'
9
+ end
10
+
11
+ #appraise 'rails-5.0' do
12
+ # gem 'rails', '~> 5.0.0'
13
+ # gem 'dryer-config', '~> 5.0.0'
14
+ #end
15
+
16
+ #appraise 'rails-4.1' do
17
+ # gem 'rails', '= 4.1.1'
18
+ ## gem 'dryer-config', '~> 5.1.0'
19
+ #end
data/Gemfile CHANGED
@@ -1,15 +1,11 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
  gemspec
3
3
 
4
- group :development, :test do
5
- gem 'sqlite3'
6
- gem 'observr'
7
- # gem 'spork'
8
- # gem 'spring'
9
- end
4
+ gem 'rails'
10
5
 
11
6
  group :test do
12
- version = ENV["RAILS_VERSION"]
13
- gem 'rails', version ? "~> #{version}" : "~> 5.1"
7
+ gem 'observr'
8
+ gem 'rubocop', require: false
14
9
  gem 'simplecov', require: false
10
+ gem 'capybara'
15
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,20 +7,20 @@ 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.
14
14
  Additional fields or removal of them are easy;
15
15
  no migrations are required for them.
16
16
 
17
- Keep in mind that the collection is kept in a YAML bag, i.e.
18
- SQL commands can't access the bag fields.
17
+ Keep in mind that the collection is kept in a YAML bag,
18
+ i.e. SQL commands can't access the bag fields.
19
19
 
20
20
  Boolean and Date fields require explicit typing.
21
21
 
22
22
  Fields without typing accept any values which YAML can handle
23
- (e.g. @order.color = ['red', 'yellow']).
23
+ (e.g. @order.colors = ['red', 'yellow']).
24
24
 
25
25
  Types :integer, :float and :string
26
26
  forces a conversion (.to_i, .to_f, .to_s) before storing the value,
@@ -40,13 +40,17 @@ Obsolete fields are deleted before_save by:
40
40
  Warning
41
41
  =======
42
42
 
43
- Please add a:
43
+ 1. Please add a:
44
44
 
45
45
  serialize :bag, Hash
46
46
 
47
47
  to each subclass accessing a bag field from a superclass.
48
48
  Using an "add_to_bag" in the subclass obsoletes the "serialize".
49
49
 
50
+ 2. delete_from_bag just delete the field from the record being saved.
51
+ Other records are untouched,
52
+ i.e. the value of the field will be kept in the database.
53
+
50
54
 
51
55
  Example
52
56
  =======
@@ -88,4 +92,4 @@ Test
88
92
 
89
93
  rake
90
94
 
91
- Copyright (c) 2009-2016 [Dittmar Krall], released under the MIT license
95
+ Copyright (c) 2009-2020 [Dittmar Krall], released under the MIT license
data/Rakefile CHANGED
@@ -1,24 +1,11 @@
1
- require "bundler/gem_tasks"
2
- require 'rake'
3
1
  require 'rake/testtask'
4
- require 'rdoc/task'
5
2
 
6
- desc 'Default: run unit tests.'
7
- task :default => :test
8
-
9
- desc 'Test the act_with_bag plugin.'
10
- Rake::TestTask.new(:test) do |t|
3
+ desc 'Run the tests.'
4
+ Rake::TestTask.new do |t|
11
5
  t.libs << 'lib'
12
6
  t.libs << 'test'
13
7
  t.pattern = 'test/**/*_test.rb'
14
- t.verbose = true
8
+ t.verbose = false
15
9
  end
16
10
 
17
- desc 'Generate documentation for the act_with_bag plugin.'
18
- Rake::RDocTask.new(:rdoc) do |rdoc|
19
- rdoc.rdoc_dir = 'rdoc'
20
- rdoc.title = 'act_with_bag'
21
- rdoc.options << '--line-numbers' << '--inline-source'
22
- rdoc.rdoc_files.include('README')
23
- rdoc.rdoc_files.include('lib/**/*.rb')
24
- end
11
+ task default: :test
@@ -1,22 +1,27 @@
1
- $:.push File.expand_path('../lib', __FILE__)
2
-
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
  require 'act_with_bag/version'
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = 'act_with_bag'
7
7
  s.version = ActWithBag::VERSION
8
- s.licenses = ['MIT']
9
- s.platform = Gem::Platform::RUBY
10
8
  s.summary = %q{act_with_bag (baggies) gem}
11
9
  s.description = %q{Add a bag to a Rails model}
12
10
  s.authors = ['Dittmar Krall']
13
11
  s.email = ['dittmar.krall@matique.de']
14
12
  s.homepage = 'http://matique.de'
15
13
 
16
- s.files = `git ls-files`.split("\n")
17
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
14
+ s.license = 'MIT'
15
+ s.platform = Gem::Platform::RUBY
16
+
17
+ s.files = `git ls-files -z`.split("\x0")
18
+ s.test_files = s.files.grep(%r{^(test|spec|features)/})
19
19
  s.require_paths = ['lib']
20
20
 
21
- s.add_development_dependency 'sqlite3', '~> 0' # for testing
21
+ s.add_development_dependency 'bundler', '~>1'
22
+ s.add_development_dependency 'rake', '~>13'
23
+ s.add_development_dependency 'appraisal', '~> 2'
24
+
25
+ s.add_development_dependency 'minitest', '~> 5.0'
26
+ s.add_development_dependency 'sqlite3', '~> 1'
22
27
  end
@@ -0,0 +1,16 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 5.0.0"
6
+ gem "dryer-config", "~> 5.0.0"
7
+
8
+ group :test do
9
+ gem "observr"
10
+ gem "simplecov", require: false
11
+ gem "minitest"
12
+ gem "capybara"
13
+ gem "sqlite3", "~> 1.3.6"
14
+ end
15
+
16
+ gemspec path: "../"
@@ -0,0 +1,16 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 5.1.0"
6
+ gem "dryer-config", "~> 5.1.0"
7
+
8
+ group :test do
9
+ gem "observr"
10
+ gem "simplecov", require: false
11
+ gem "minitest"
12
+ gem "capybara"
13
+ gem "sqlite3", "~> 1.3.6"
14
+ end
15
+
16
+ gemspec path: "../"
@@ -0,0 +1,16 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 5.2.0"
6
+ gem "dryer-config", "~> 5.2.0"
7
+
8
+ group :test do
9
+ gem "observr"
10
+ gem "simplecov", require: false
11
+ gem "minitest"
12
+ gem "capybara"
13
+ gem "sqlite3"
14
+ end
15
+
16
+ gemspec path: "../"
@@ -0,0 +1,16 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 6.0.0"
6
+ gem "dryer-config", "~> 5.2.0"
7
+
8
+ group :test do
9
+ gem "observr"
10
+ gem "simplecov", require: false
11
+ gem "minitest"
12
+ gem "capybara"
13
+ gem "sqlite3"
14
+ end
15
+
16
+ gemspec path: "../"
@@ -1,149 +1,163 @@
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
90
 
91
+ # MARS patch, new:
92
+ #
93
+ # The @baggies field is indispensable. Otherwise mistakes in renaming
94
+ # or deleting baggies (without renaming/deleting) the value entry from the
95
+ # bag, e. g. via delete_from_bag) cannot be detected in a clean way.
96
+ # Detecting the accessor would be not sufficient, as the accessor may be
97
+ # created by ActiveRecord::Base or the derived model and it may be
98
+ # doing completely other things (e. g. accessing a database column).
99
+ #
100
+ @baggies ||= {}
101
+ baggies = (@baggies[to_s.underscore.to_sym] ||= {})
102
+ baggies[baggie] = type
103
+ # END
104
+
88
105
  type_sym = type.to_sym
89
106
  typing = {integer: '.to_i', float: '.to_f',
90
- string: '.to_s'}[type_sym] || ''
91
- #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}"
92
109
 
93
110
  @baggies_date[baggie] = type if type_sym == :date
94
111
 
95
- unless type_sym == :boolean
96
- self.class_eval %{
97
- def #{accessor}
98
- self.bag && self.bag[:#{baggie}]
99
- end
100
- }
101
-
102
- self.class_eval %{
103
- def #{accessor}=(value)
104
- @attributes['bag'] = {} unless bag.is_a?(Hash)
105
- unless value.nil?
106
- self.bag[:#{baggie}] = value#{typing}
107
- else
108
- self.bag.delete(:#{baggie})
109
- nil
110
- end
111
- end
112
- }
113
-
114
- else ################ now boolean handling ###################
115
-
116
- self.class_eval %{
117
- def #{accessor}
118
- res = bag && bag[:#{baggie}]
119
- return res if res.class == FalseClass
120
- return res if res.class == TrueClass
121
- return res.to_i != 0
122
- res
123
- end
124
- }
125
-
126
- self.class_eval %{
127
- def #{accessor}=(value)
128
- @attributes['bag'] = {} unless bag.is_a?(Hash)
129
- falsys = [false, "false", 0, "0", nil]
130
- unless falsys.include?(value)
131
- self.bag[:#{baggie}] = (value == 'true') || value
132
- else
133
- self.bag.delete(:#{baggie})
134
- nil
135
- end
136
- end
137
- }
138
-
139
- self.class_eval %{
140
- def #{accessor}?
141
- #{accessor}
142
- end
143
- }
144
-
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
+ )
145
161
  end
146
-
147
162
  end
148
-
149
163
  end
@@ -1,3 +1,10 @@
1
+ # rubocop: disable all
2
+
1
3
  module ActWithBag
2
- VERSION = "0.5.3"
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'
3
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,29 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: act_with_bag
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
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: 2017-07-28 00:00:00.000000000 Z
11
+ date: 2020-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '13'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '13'
41
+ - !ruby/object:Gem::Dependency
42
+ name: appraisal
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '5.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '5.0'
13
69
  - !ruby/object:Gem::Dependency
14
70
  name: sqlite3
15
71
  requirement: !ruby/object:Gem::Requirement
16
72
  requirements:
17
73
  - - "~>"
18
74
  - !ruby/object:Gem::Version
19
- version: '0'
75
+ version: '1'
20
76
  type: :development
21
77
  prerelease: false
22
78
  version_requirements: !ruby/object:Gem::Requirement
23
79
  requirements:
24
80
  - - "~>"
25
81
  - !ruby/object:Gem::Version
26
- version: '0'
82
+ version: '1'
27
83
  description: Add a bag to a Rails model
28
84
  email:
29
85
  - dittmar.krall@matique.de
@@ -32,12 +88,21 @@ extensions: []
32
88
  extra_rdoc_files: []
33
89
  files:
34
90
  - ".gitignore"
91
+ - ".rubocop.yml"
92
+ - ".ruby-gemset"
93
+ - ".ruby-version"
35
94
  - ".travis.yml"
36
95
  - ".watchr"
96
+ - Appraisals
37
97
  - Gemfile
98
+ - MIT-LICENSE
38
99
  - README.md
39
100
  - Rakefile
40
101
  - act_with_bag.gemspec
102
+ - gemfiles/rails_5.0.gemfile
103
+ - gemfiles/rails_5.1.gemfile
104
+ - gemfiles/rails_5.2.gemfile
105
+ - gemfiles/rails_6.0.gemfile
41
106
  - lib/act_with_bag.rb
42
107
  - lib/act_with_bag/version.rb
43
108
  - test/accessor_test.rb
@@ -69,9 +134,18 @@ required_rubygems_version: !ruby/object:Gem::Requirement
69
134
  - !ruby/object:Gem::Version
70
135
  version: '0'
71
136
  requirements: []
72
- rubyforge_project:
73
- rubygems_version: 2.6.12
137
+ rubygems_version: 3.0.8
74
138
  signing_key:
75
139
  specification_version: 4
76
140
  summary: act_with_bag (baggies) gem
77
- test_files: []
141
+ test_files:
142
+ - test/accessor_test.rb
143
+ - test/bag_boolean_test.rb
144
+ - test/bag_test.rb
145
+ - test/boolean_test.rb
146
+ - test/clean_test.rb
147
+ - test/delete_test.rb
148
+ - test/sti_test.rb
149
+ - test/string_test.rb
150
+ - test/test_helper.rb
151
+ - test/type_test.rb