disposable 0.4.7 → 0.6.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 60b151f3e5bb984a08ae4631bb836caa4b08b62e64b57d260a93e156129c4729
4
- data.tar.gz: f793d20d7b3fb398d07baddbaf9c835e1944b4f6bfe60f1fb36eb325bf6a5919
3
+ metadata.gz: 503eaa80c2c7e5c2808e22cfff709fa359fc3c582b8db5c7917800c406ec55db
4
+ data.tar.gz: 28b2091c2f06ff81e5ee2bbed56a496b91421753afd97782f3a2e3f298dbc53b
5
5
  SHA512:
6
- metadata.gz: e8ab3254e28140e886dc65341cb8d3f8ae53328f7bb304cd8e0760869e894440c615cafaae1b2d5b2aab1bf721d86d5d659fc40ac1f7301bb6a39d1303cbea02
7
- data.tar.gz: ac09aaa979ddc3de44d409740d3d8a1121d07b498c59ac2d77496091c799b692fcc22d7f495174886a75491d71f230e1544fb87ebc89713e0d97d5bf22db9d82
6
+ metadata.gz: 9ddecb0c8eaa4d66162d059c23fb2f495658fd67e5bc35aaf568cdf39bb9d21b4816703577a732daac330e279876b06cfec6a624eeb7c7a6da724d764e224c27
7
+ data.tar.gz: 9728842db88f5794ccf1e4729801d28badf5389cabdd0bda11c5391283ab41317275a5fe0aefa3cb259e2b63026de5174aba51e38bf6a87b06c968b0e50a6c22
@@ -0,0 +1,29 @@
1
+ name: CI
2
+ on: [push, pull_request]
3
+ jobs:
4
+ test:
5
+ strategy:
6
+ fail-fast: false
7
+ matrix:
8
+ ruby: [2.6]
9
+ active_record: [5.2, 6.0]
10
+ dry_types: [1.0, 1.2]
11
+
12
+ include:
13
+ - ruby: 2.7
14
+ active_record: 6.1
15
+ dry_types: 1.5
16
+ # Due to https://github.com/actions/runner/issues/849, we have to use quotes for '3.0'
17
+ - ruby: '3.0'
18
+ active_record: 6.1
19
+ dry_types: 1.5
20
+
21
+ runs-on: ubuntu-latest
22
+ steps:
23
+ - uses: actions/checkout@v2
24
+ - uses: ruby/setup-ruby@v1
25
+ with:
26
+ ruby-version: ${{ matrix.ruby }}
27
+ # bundler-cache: true # runs 'bundle install' and caches installed gems automatically
28
+ - run: ACTIVERECORD=${{ matrix.active_record}} DRY_TYPES=${{ matrix.dry_types }} bundle install
29
+ - run: ACTIVERECORD=${{ matrix.active_record}} DRY_TYPES=${{ matrix.dry_types }} bundle exec rake
data/CHANGES.md CHANGED
@@ -1,3 +1,23 @@
1
+ # 0.6.2
2
+
3
+ * Remove `Forwardable` from `Unnest` and refrain from including it into the `Twin` class.
4
+ This may overwrite the same-named `ActiveSupport::delegate` method and breaks things.
5
+ Instead, do manual delegation and plan for 2023 to allow using `Forwardable.delegate(target, what, where)`.
6
+
7
+
8
+ # 0.6.1
9
+
10
+ * Remove `**options` argument from `#property` as it's inconsistent with underlying gems.
11
+
12
+ # 0.6.0
13
+
14
+ * Remove `uber` gem.
15
+ * Remove `declarative-builder` dependency and make it optional. Add `gem "declarative-builder"` to your `Gemfile` should you need this feature.
16
+
17
+ # 0.5.0
18
+
19
+ * Upgrade `representable` to replace `Declarative::Option` with `Representable::Option` in order to support ruby-3 style of keyword arguments.
20
+
1
21
  # 0.4.7
2
22
 
3
23
  * Deprecation warning for nilify options for dry-v >= 1.x
data/Gemfile CHANGED
@@ -7,4 +7,6 @@ gem "minitest-line"
7
7
  gem gem_name, dependency
8
8
  end
9
9
 
10
- gem "sqlite3", ENV.fetch('ACTIVERECORD', '5.2').to_f >= 6 ? '~> 1.4' : '~> 1.3.0'
10
+ gem "sqlite3", '~> 1.4' # => , ENV.fetch('ACTIVERECORD', '5.2').to_f >= 6 ? '~> 1.4' : '~> 1.3.0'
11
+
12
+ # gem "declarative-builder"
@@ -0,0 +1,6 @@
1
+ source "https://rubygems.org"
2
+ gemspec
3
+ gem "minitest-line"
4
+ gem "sqlite3"
5
+
6
+ gem "declarative-builder", "0.2.0"
data/README.md CHANGED
@@ -640,3 +640,7 @@ Note that this will internally add a `parent` property.
640
640
 
641
641
  * [Reform](https://github.com/apotonick/reform) forms are based on twins and add a little bit of form decoration on top. Every nested form is a twin.
642
642
  * [Trailblazer](https://github.com/apotonick/trailblazer) uses twins as decorators and callbacks in operations to structure business logic.
643
+
644
+ ## Development
645
+
646
+ * `rake test` runs all tests without `builder_test.rb`. For the latter, run `BUNDLE_GEMFILE=Gemfile_builder_test.rb bundle exec rake test_builder`
data/Rakefile CHANGED
@@ -4,6 +4,12 @@ require "rake/testtask"
4
4
  task :default => [:test]
5
5
  Rake::TestTask.new(:test) do |test|
6
6
  test.libs << 'test'
7
- test.test_files = FileList['test/**/*_test.rb']
7
+ test.test_files = FileList['test/**/*_test.rb'] - ["test/twin/builder_test.rb"]
8
8
  test.verbose = true
9
- end
9
+ end
10
+
11
+ Rake::TestTask.new(:test_builder) do |test|
12
+ test.libs << 'test'
13
+ test.test_files = FileList["test/twin/builder_test.rb"]
14
+ test.verbose = true
15
+ end
data/disposable.gemspec CHANGED
@@ -16,11 +16,9 @@ Gem::Specification.new do |spec|
16
16
  spec.test_files = spec.files.grep(%r{^(test)/})
17
17
  spec.require_paths = ["lib"]
18
18
 
19
- spec.add_dependency "uber", "< 0.2.0"
20
19
  spec.add_dependency "declarative", ">= 0.0.9", "< 1.0.0"
21
- spec.add_dependency "declarative-builder", "< 0.2.0"
22
- spec.add_dependency "declarative-option", "< 0.2.0"
23
- spec.add_dependency "representable", ">= 2.4.0", "<= 3.1.0"
20
+ # spec.add_dependency "declarative-builder" #, ">= 0.2.0"
21
+ spec.add_dependency "representable", ">= 3.1.1", "< 3.2.0"
24
22
 
25
23
  spec.add_development_dependency "bundler"#, "~> 1.3"
26
24
  spec.add_development_dependency "rake"
@@ -1,3 +1,4 @@
1
+ gem "declarative-builder", "0.2.0"
1
2
  require "declarative/builder"
2
3
 
3
4
  module Disposable
@@ -1,4 +1,4 @@
1
- require "declarative/option"
1
+ require "representable/option"
2
2
 
3
3
  # TODO: allow default: -> for hashes, etc.
4
4
  module Disposable::Twin::Default
@@ -12,13 +12,13 @@ module Disposable::Twin::Default
12
12
  # TODO: introduce Null object in Declarative::Definition#[].
13
13
  # dfn[:default].(self) # dfn#[] should return a Null object here if empty.
14
14
  return unless dfn[:default]
15
- dfn[:default].(self)
15
+ dfn[:default].(exec_context: self) # Representable::Option#call
16
16
  end
17
17
 
18
18
  module ClassMethods
19
19
  private
20
20
  def build_definition(name, options={}, &block)
21
- options = options.merge(default: Declarative::Option(options[:default], instance_exec: true)) if options.has_key?(:default)
21
+ options = options.merge(default: ::Representable::Option(options[:default])) if options.has_key?(:default)
22
22
  super
23
23
  end
24
24
  end
@@ -1,11 +1,6 @@
1
- require "uber/delegates"
2
-
3
1
  module Disposable::Twin::Property
4
2
  module Unnest
5
3
  # TODO: test that nested properties options are "unnested", too, e.g. populator.
6
- def self.included(includer)
7
- includer.send(:include, Uber::Delegates)
8
- end
9
4
 
10
5
  def unnest(name, options)
11
6
  from = options.delete(:from)
@@ -15,7 +10,15 @@ module Disposable::Twin::Property
15
10
  options = options.merge(virtual: true, _inherited: true, private_name: nil)
16
11
 
17
12
  property(name, options)
18
- delegates from, name, "#{name}="
13
+ # def_delegators from, name, "#{name}=" # FIXME: this overwrites ActiveSupport#delegate in some cases.
14
+
15
+ define_method name do
16
+ send(from).send(name) # TODO: fix Forwardable in Ruby.
17
+ end
18
+
19
+ define_method "#{name}=" do |value|
20
+ send(from).send("#{name}=", value)
21
+ end
19
22
  end
20
23
  end
21
24
  end
@@ -1,4 +1,4 @@
1
- require "uber/inheritable_attr"
1
+ # require "uber/inheritable_attr"
2
2
  require "declarative/schema"
3
3
  require "representable/decorator"
4
4
 
@@ -28,6 +28,10 @@ module Disposable
28
28
  Definition::Each.new(self.class.definitions) # TODO: change this interface.
29
29
  end
30
30
 
31
+ def self.schema
32
+ Definition::Each.new(definitions)
33
+ end
34
+
31
35
  class << self
32
36
  def default_nested_class
33
37
  Twin
@@ -140,7 +144,7 @@ require "disposable/twin/definitions"
140
144
  require "disposable/twin/collection"
141
145
  require "disposable/twin/sync"
142
146
  require "disposable/twin/save"
143
- require "disposable/twin/builder"
147
+ # require "disposable/twin/builder"
144
148
  require "disposable/twin/changed"
145
149
  require "disposable/twin/property_processor"
146
150
  require "disposable/twin/persisted"
@@ -1,3 +1,3 @@
1
1
  module Disposable
2
- VERSION = "0.4.7"
2
+ VERSION = "0.6.2"
3
3
  end
data/test/test_helper.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require "disposable"
2
2
  require "minitest/autorun"
3
- require "representable/debug"
3
+ # require "representable/debug"
4
4
  # require "pp"
5
5
  require "declarative/testing"
6
6
 
@@ -1,5 +1,9 @@
1
+ # BUNDLE_GEMFILE=Gemfile_builder_test.rb be rake test_builder
2
+
1
3
  require "test_helper"
2
4
 
5
+ require "disposable/twin/builder"
6
+
3
7
  class BuilderTest < MiniTest::Spec
4
8
  module Model
5
9
  Song = Struct.new(:id, :title)
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: disposable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.7
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Sutterer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-12 00:00:00.000000000 Z
11
+ date: 2021-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: uber
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "<"
18
- - !ruby/object:Gem::Version
19
- version: 0.2.0
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "<"
25
- - !ruby/object:Gem::Version
26
- version: 0.2.0
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: declarative
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -44,54 +30,26 @@ dependencies:
44
30
  - - "<"
45
31
  - !ruby/object:Gem::Version
46
32
  version: 1.0.0
47
- - !ruby/object:Gem::Dependency
48
- name: declarative-builder
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - "<"
52
- - !ruby/object:Gem::Version
53
- version: 0.2.0
54
- type: :runtime
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - "<"
59
- - !ruby/object:Gem::Version
60
- version: 0.2.0
61
- - !ruby/object:Gem::Dependency
62
- name: declarative-option
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "<"
66
- - !ruby/object:Gem::Version
67
- version: 0.2.0
68
- type: :runtime
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - "<"
73
- - !ruby/object:Gem::Version
74
- version: 0.2.0
75
33
  - !ruby/object:Gem::Dependency
76
34
  name: representable
77
35
  requirement: !ruby/object:Gem::Requirement
78
36
  requirements:
79
37
  - - ">="
80
38
  - !ruby/object:Gem::Version
81
- version: 2.4.0
82
- - - "<="
39
+ version: 3.1.1
40
+ - - "<"
83
41
  - !ruby/object:Gem::Version
84
- version: 3.1.0
42
+ version: 3.2.0
85
43
  type: :runtime
86
44
  prerelease: false
87
45
  version_requirements: !ruby/object:Gem::Requirement
88
46
  requirements:
89
47
  - - ">="
90
48
  - !ruby/object:Gem::Version
91
- version: 2.4.0
92
- - - "<="
49
+ version: 3.1.1
50
+ - - "<"
93
51
  - !ruby/object:Gem::Version
94
- version: 3.1.0
52
+ version: 3.2.0
95
53
  - !ruby/object:Gem::Dependency
96
54
  name: bundler
97
55
  requirement: !ruby/object:Gem::Requirement
@@ -169,10 +127,11 @@ executables: []
169
127
  extensions: []
170
128
  extra_rdoc_files: []
171
129
  files:
130
+ - ".github/workflows/ci.yml"
172
131
  - ".gitignore"
173
- - ".travis.yml"
174
132
  - CHANGES.md
175
133
  - Gemfile
134
+ - Gemfile_builder_test.rb
176
135
  - LICENSE.txt
177
136
  - README.md
178
137
  - Rakefile
@@ -259,7 +218,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
259
218
  - !ruby/object:Gem::Version
260
219
  version: '0'
261
220
  requirements: []
262
- rubygems_version: 3.0.6
221
+ rubygems_version: 3.2.3
263
222
  signing_key:
264
223
  specification_version: 4
265
224
  summary: Decorators on top of your ORM layer with change tracking, collection semantics
data/.travis.yml DELETED
@@ -1,44 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - ruby-head
4
- - 2.6
5
- - 2.5
6
- - 2.4
7
- env:
8
- - "ACTIVERECORD=5.0 DRY_TYPES=0.13"
9
- - "ACTIVERECORD=5.0 DRY_TYPES=0.14"
10
- - "ACTIVERECORD=5.0 DRY_TYPES=0.15"
11
- - "ACTIVERECORD=5.0 DRY_TYPES=1.0"
12
- - "ACTIVERECORD=5.0 DRY_TYPES=1.1"
13
- - "ACTIVERECORD=5.0 DRY_TYPES=1.2"
14
- - "ACTIVERECORD=5.1 DRY_TYPES=0.13"
15
- - "ACTIVERECORD=5.1 DRY_TYPES=0.14"
16
- - "ACTIVERECORD=5.1 DRY_TYPES=0.15"
17
- - "ACTIVERECORD=5.1 DRY_TYPES=1.0"
18
- - "ACTIVERECORD=5.1 DRY_TYPES=1.1"
19
- - "ACTIVERECORD=5.1 DRY_TYPES=1.2"
20
- - "ACTIVERECORD=5.2 DRY_TYPES=0.13"
21
- - "ACTIVERECORD=5.2 DRY_TYPES=0.14"
22
- - "ACTIVERECORD=5.2 DRY_TYPES=0.15"
23
- - "ACTIVERECORD=5.2 DRY_TYPES=1.0"
24
- - "ACTIVERECORD=5.2 DRY_TYPES=1.1"
25
- - "ACTIVERECORD=5.2 DRY_TYPES=1.2"
26
- - "ACTIVERECORD=6.0 DRY_TYPES=0.13"
27
- - "ACTIVERECORD=6.0 DRY_TYPES=0.14"
28
- - "ACTIVERECORD=6.0 DRY_TYPES=0.15"
29
- - "ACTIVERECORD=6.0 DRY_TYPES=1.0"
30
- - "ACTIVERECORD=6.0 DRY_TYPES=1.1"
31
- - "ACTIVERECORD=6.0 DRY_TYPES=1.2"
32
- gemfile:
33
- - Gemfile
34
- matrix:
35
- fast_finish: true
36
- allow_failures:
37
- - rvm: ruby-head
38
- exclude:
39
- - {rvm: 2.4, env: "ACTIVERECORD=6.0 DRY_TYPES=0.13"}
40
- - {rvm: 2.4, env: "ACTIVERECORD=6.0 DRY_TYPES=0.14"}
41
- - {rvm: 2.4, env: "ACTIVERECORD=6.0 DRY_TYPES=0.15"}
42
- - {rvm: 2.4, env: "ACTIVERECORD=6.0 DRY_TYPES=1.0"}
43
- - {rvm: 2.4, env: "ACTIVERECORD=6.0 DRY_TYPES=1.1"}
44
- - {rvm: 2.4, env: "ACTIVERECORD=6.0 DRY_TYPES=1.2"}