dekorator 1.3.0 → 1.5.0

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: 65b1b1e3eab54d74eb9ac8a975bd21b685cebe43ad26e96c39695731176de03d
4
- data.tar.gz: 89311b6a6b7c9319994c85e62bee7a58034bd97c3598b30fb3026304f8e317f5
3
+ metadata.gz: 1a8cf77e0e4432f46ef49b35fd5b33353baab42b6bae0422107fcdde1af45a56
4
+ data.tar.gz: d37560a12fa9881661f0f819b59da82e31f6c54d2ef902642699eee6b5855085
5
5
  SHA512:
6
- metadata.gz: bb081f14a84f51bec57c5a6625cdfed0cffc48d0a8c88a83ab40a828a5a0e5bab4eba62710bd82a22a42e56c0601332da250d8f2c61f2d8af87be2d948fa674d
7
- data.tar.gz: c7aa2f27e8e85ed0b2d4c615967478a8fe795e9f30be92378c1b6ab29a63c4576c55ef1555f081014e819734e43041a80416a82c5e5386fc666ffc4f7d9bcb36
6
+ metadata.gz: 2376a0cfd846905cffc58b06c97606a5d2ffe1a10fd7161173fc626000617edfcf3a417c0e32f008bf5ab352803102cb8eeab6358f1bf1e5a2dc752838d1fbec
7
+ data.tar.gz: 1424f697f9b2a6f82c341aaa2b21f6b860bab7dcdece497f611790ead322551e4559ce40c8e70262180b1e001afa7a08b2e8f3573da5b15f0f08aa04e38aa532
data/CHANGELOG.md CHANGED
@@ -6,17 +6,32 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
8
  ## [Unreleased]
9
- Nothing yet
9
+ Nothing yet.
10
+
11
+ ## [1.5.0] - 2024-03-06
12
+ ### Added
13
+ - Add Ruby 3.3 support ([#53](https://github.com/komposable/dekorator/pull/53))
14
+ - Include `#decorated` method in `ActiveRecord::Base` ([#52](https://github.com/komposable/dekorator/pull/52))
15
+ ### Removed
16
+ - Drop Ruby 2.7 support ([#53](https://github.com/komposable/dekorator/pull/53))
17
+ - Drop Rails 6.0 support ([#53](https://github.com/komposable/dekorator/pull/53))
18
+
19
+ ## [1.4.0] - 2023-11-09
20
+ ### Changed
21
+ - ⚠️ **Breaking** `.decorates_association` now generate `#decorated_[ASSOCIATION_NAME]` instead `#[ASSOCIATION_NAME]` ([#48](https://github.com/komposable/dekorator/pull/48))
10
22
 
11
23
  ## [1.3.0] - 2023-11-06
12
24
  ### Added
13
25
  - Add Rails 7.1 support ([#49](https://github.com/komposable/dekorator/pull/49))
26
+ ### Fixes
27
+ - Fix RSpec `decorator_spec.rb` template by using `File#exist?` instead `File#exists?` ([#51](https://github.com/komposable/dekorator/pull/51))
14
28
  ### Removed
15
29
  - Add Rails 7.0 on CI tests via Appraisals ([#47](https://github.com/komposable/dekorator/pull/47))
16
30
  - Drop Ruby 2.5 and 2.6 support ([#47](https://github.com/komposable/dekorator/pull/47))
17
31
  - Remove Coveralls usage ([#47](https://github.com/komposable/dekorator/pull/47))
18
32
 
19
33
  ## [1.2.1] - 2021-10-14
34
+ ### Changed
20
35
  - Make decorated `Enumerable` not lazy anymore ([#46](https://github.com/komposable/dekorator/pull/46))
21
36
 
22
37
  ## [1.2.0] - 2021-10-14
@@ -57,7 +72,9 @@ Nothing yet
57
72
  - Create `dekorator:install` generator ([a2a36d66](https://github.com/komposable/dekorator/commit/a2a36d66c6de6cb0a00f783794cd29f899bc04b6))
58
73
  - Create `decorator` generator ([a2a36d66](https://github.com/komposable/dekorator/commit/a2a36d66c6de6cb0a00f783794cd29f899bc04b6))
59
74
 
60
- [Unreleased]: https://github.com/komposable/dekorator/compare/v1.3.0...main
75
+ [Unreleased]: https://github.com/komposable/dekorator/compare/v1.5.0...main
76
+ [1.5.0]: https://github.com/komposable/dekorator/compare/v1.4.0...v1.5.0
77
+ [1.4.0]: https://github.com/komposable/dekorator/compare/v1.3.0...v1.4.0
61
78
  [1.3.0]: https://github.com/komposable/dekorator/compare/v1.2.1...v1.3.0
62
79
  [1.2.1]: https://github.com/komposable/dekorator/compare/v1.2.0...v1.2.1
63
80
  [1.2.0]: https://github.com/komposable/dekorator/compare/v1.1.0...v1.2.0
data/README.md CHANGED
@@ -12,8 +12,8 @@ This gem has been inspired by our Rails development practices at [Pantographe](h
12
12
 
13
13
  ## Compatibility
14
14
 
15
- * Ruby 2.7+
16
- * Rails 6.0+
15
+ * Ruby 3.0+
16
+ * Rails 6.1+
17
17
 
18
18
  ## Installation
19
19
 
@@ -108,12 +108,12 @@ class PostDecorator < ApplicationDecorator
108
108
  end
109
109
  ```
110
110
 
111
- In this example, `UserDecorator#posts` will be decorated.
111
+ In this example, `UserDecorator#posts` will be decorated as `#decorated_posts`.
112
112
 
113
113
  ```ruby
114
114
  decorated_user = decorate(User.first)
115
115
  decorated_user # => UserDecorator
116
- decorated_user.posts.first # => PostDecorator
116
+ decorated_user.decorated_posts.first # => PostDecorator
117
117
  ```
118
118
 
119
119
  ### Custom decorator
@@ -148,31 +148,11 @@ end
148
148
 
149
149
  decorated_user = decorate(User.first)
150
150
  decorated_user # => UserDecorator
151
- decorated_user.posts.first # => ArticleDecorator
151
+ decorated_user.decorated_posts.first # => ArticleDecorator
152
152
  ```
153
153
 
154
154
  ## Compatibility
155
155
 
156
- ### ActiveAdmin
157
-
158
- This gem is compatible with [`activeadmin`][activeadmin] ([2.8+](https://github.com/activeadmin/activeadmin/pull/6249)).
159
- For `activeadmin` before `2.8`, use `dekorator` `1.0.*`.
160
-
161
- Simply use `#decorate_with`
162
-
163
- ```ruby
164
- # app/admin/post.rb
165
- ActiveAdmin.register Post do
166
- decorate_with PostDecorator
167
-
168
- index do
169
- column :title
170
- column :image
171
- actions
172
- end
173
- end
174
- ```
175
-
176
156
  ### Devise
177
157
 
178
158
  If you use the [`Devise`][devise] gem you may have an issue if you decorate your
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "active_support/concern"
4
+
5
+ module Dekorator
6
+ module Record
7
+ def decorated
8
+ @decorated ||= Dekorator::Base.decorate(self)
9
+ end
10
+ end
11
+ end
@@ -2,6 +2,7 @@
2
2
 
3
3
  module Dekorator
4
4
  require "dekorator/rails/controller"
5
+ require "dekorator/rails/record"
5
6
 
6
7
  class Railtie < ::Rails::Railtie
7
8
  rake_tasks do
@@ -10,6 +11,7 @@ module Dekorator
10
11
 
11
12
  config.to_prepare do |_app|
12
13
  ActionController::Base.include Dekorator::Controller
14
+ ActiveRecord::Base.include Dekorator::Record
13
15
  end
14
16
  end
15
17
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dekorator
4
- VERSION = "1.3.0".freeze
4
+ VERSION = "1.5.0".freeze
5
5
  end
data/lib/dekorator.rb CHANGED
@@ -54,7 +54,7 @@ module Dekorator
54
54
  def decorates_association(relation_name, with: :__guess__)
55
55
  relation_name = relation_name.to_sym
56
56
 
57
- define_method(relation_name) do
57
+ define_method(:"decorated_#{relation_name}") do
58
58
  @_decorated_associations[relation_name] ||= decorate(__getobj__.public_send(relation_name), with: with)
59
59
  end
60
60
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require '<%= File.exists?("spec/rails_helper.rb") ? "rails_helper" : "spec_helper" %>'
3
+ require '<%= File.exist?("spec/rails_helper.rb") ? "rails_helper" : "spec_helper" %>'
4
4
 
5
5
  # Example:
6
6
  #
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dekorator
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pantographe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-06 00:00:00.000000000 Z
11
+ date: 2024-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionview
@@ -16,7 +16,7 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '6.0'
19
+ version: '6.1'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: '7.2'
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '6.0'
29
+ version: '6.1'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '7.2'
@@ -36,7 +36,7 @@ dependencies:
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: '6.0'
39
+ version: '6.1'
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
42
  version: '7.2'
@@ -46,7 +46,7 @@ dependencies:
46
46
  requirements:
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: '6.0'
49
+ version: '6.1'
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
52
  version: '7.2'
@@ -56,7 +56,7 @@ dependencies:
56
56
  requirements:
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
- version: '6.0'
59
+ version: '6.1'
60
60
  - - "<"
61
61
  - !ruby/object:Gem::Version
62
62
  version: '7.2'
@@ -66,7 +66,7 @@ dependencies:
66
66
  requirements:
67
67
  - - ">="
68
68
  - !ruby/object:Gem::Version
69
- version: '6.0'
69
+ version: '6.1'
70
70
  - - "<"
71
71
  - !ruby/object:Gem::Version
72
72
  version: '7.2'
@@ -83,6 +83,7 @@ files:
83
83
  - README.md
84
84
  - lib/dekorator.rb
85
85
  - lib/dekorator/rails/controller.rb
86
+ - lib/dekorator/rails/record.rb
86
87
  - lib/dekorator/rails/tasks/dekorator.rake
87
88
  - lib/dekorator/railtie.rb
88
89
  - lib/dekorator/version.rb
@@ -112,14 +113,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
112
113
  requirements:
113
114
  - - ">="
114
115
  - !ruby/object:Gem::Version
115
- version: 2.7.0
116
+ version: 3.0.0
116
117
  required_rubygems_version: !ruby/object:Gem::Requirement
117
118
  requirements:
118
119
  - - ">="
119
120
  - !ruby/object:Gem::Version
120
121
  version: '0'
121
122
  requirements: []
122
- rubygems_version: 3.4.21
123
+ rubygems_version: 3.5.6
123
124
  signing_key:
124
125
  specification_version: 4
125
126
  summary: An opinionated way of organizing model-view code in Ruby on Rails, based