disposable 0.4.7 → 0.6.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: 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"}