blueprinter 0.25.1 → 0.25.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 +4 -4
- data/CHANGELOG.md +4 -1
- data/README.md +27 -0
- data/lib/blueprinter/base.rb +1 -0
- data/lib/blueprinter/configuration.rb +2 -1
- data/lib/blueprinter/deprecation.rb +35 -0
- data/lib/blueprinter/empty_types.rb +6 -1
- data/lib/blueprinter/field.rb +1 -1
- data/lib/blueprinter/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e5e7be1f829035c332a5baa935ef724f52c381bd60f039a20a89368acc7cfde
|
4
|
+
data.tar.gz: 7307febc9d3a860aa3b3ffe00a83066b808329a32a3d81dde5a7af7439dc4609
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 24411ac6c3068b7c08c167e1f91a6e4e25757fd4a32df56f710b0fbe84d07e7507cbdf05eb54645ba3b9b29b8b90c81cede3e68254b254c0523975c9c9236dc0
|
7
|
+
data.tar.gz: baef6ae7db2fcc0e6ab9eb4e4c11baf6453ecaf30519462bd6ea5d4dbd5cbd8b1e791f202b2b74e9f15ccc4d265d19828c33b339dc65041916d09351d7729e1f
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
|
+
## 0.25.2 - 2020/11/19
|
2
|
+
* 🚀 [FEATURE] Make deprecation behavior configurable (`:silence`, `:stderror`, `:raise`). See [#248](https://github.com/procore/blueprinter/pull/248) thanks to [@mcclayton](https://github.com/mcclayton)
|
3
|
+
|
1
4
|
## 0.25.1 - 2020/8/18
|
2
|
-
*
|
5
|
+
* 🐛 [BUGFIX] Raise Blueprinter::BlueprinterError if Blueprint given is not of class Blueprinter::Base. Before it just raised a generic `undefined method 'prepare'`. See [#233](https://github.com/procore/blueprinter/pull/233) thanks to [@caws](https://github.com/caws)
|
3
6
|
|
4
7
|
## 0.25.0 - 2020/7/06
|
5
8
|
* 🚀 [FEATURE] Enable default `Blueprinter::Transformer`s to be set in the global configuration. [#222](https://github.com/procore/blueprinter/pull/222). Thanks to [@supremebeing7](https://github.com/supremebeing7).
|
data/README.md
CHANGED
@@ -869,6 +869,33 @@ Output:
|
|
869
869
|
</details>
|
870
870
|
|
871
871
|
|
872
|
+
<details>
|
873
|
+
<summary>Deprecations</summary>
|
874
|
+
|
875
|
+
---
|
876
|
+
|
877
|
+
When functionality in Blueprinter is invoked, that has been deprecated, the default behavior is to
|
878
|
+
write a deprecation notice to stderror.
|
879
|
+
|
880
|
+
However, deprecations can be configured to report at three different levels:
|
881
|
+
|
882
|
+
| Key | Result |
|
883
|
+
|:-----------------:|:---------------------------------------------------------------:|
|
884
|
+
| `:stderr` (Default) | Deprecations will be written to stderror |
|
885
|
+
| `:raise` | Deprecations will be raised as `Blueprinter::BlueprinterError`s |
|
886
|
+
| `:silence` | Deprecations will be silenced and will not be raised or logged |
|
887
|
+
|
888
|
+
### Example:
|
889
|
+
```ruby
|
890
|
+
Blueprinter.configure do |config|
|
891
|
+
config.deprecations = :raise
|
892
|
+
end
|
893
|
+
```
|
894
|
+
|
895
|
+
---
|
896
|
+
</details>
|
897
|
+
|
898
|
+
|
872
899
|
<details>
|
873
900
|
<summary>render_as_hash</summary>
|
874
901
|
|
data/lib/blueprinter/base.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
module Blueprinter
|
2
2
|
class Configuration
|
3
|
-
attr_accessor :association_default, :datetime_format, :field_default, :generator, :if, :method, :sort_fields_by, :unless, :extractor_default, :default_transformers
|
3
|
+
attr_accessor :association_default, :datetime_format, :deprecations, :field_default, :generator, :if, :method, :sort_fields_by, :unless, :extractor_default, :default_transformers
|
4
4
|
|
5
5
|
VALID_CALLABLES = %i(if unless).freeze
|
6
6
|
|
7
7
|
def initialize
|
8
|
+
@deprecations = :stderror
|
8
9
|
@association_default = nil
|
9
10
|
@datetime_format = nil
|
10
11
|
@field_default = nil
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# @api private
|
2
|
+
module Blueprinter
|
3
|
+
class Deprecation
|
4
|
+
class << self
|
5
|
+
VALID_BEHAVIORS = %i(silence stderror raise).freeze
|
6
|
+
MESSAGE_PREFIX = "[DEPRECATION::WARNING] Blueprinter:".freeze
|
7
|
+
|
8
|
+
def report(message)
|
9
|
+
full_msg = qualified_message(message)
|
10
|
+
|
11
|
+
case behavior
|
12
|
+
when :silence
|
13
|
+
# Silence deprecation (noop)
|
14
|
+
when :stderror
|
15
|
+
warn full_msg
|
16
|
+
when :raise
|
17
|
+
raise BlueprinterError, full_msg
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def qualified_message(message)
|
24
|
+
"#{MESSAGE_PREFIX} #{message}"
|
25
|
+
end
|
26
|
+
|
27
|
+
def behavior
|
28
|
+
configured = Blueprinter.configuration.deprecations
|
29
|
+
return configured unless !VALID_BEHAVIORS.include?(configured)
|
30
|
+
|
31
|
+
:stderror
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -10,6 +10,8 @@ module Blueprinter
|
|
10
10
|
private
|
11
11
|
|
12
12
|
def use_default_value?(value, empty_type)
|
13
|
+
return value.nil? unless empty_type
|
14
|
+
|
13
15
|
case empty_type
|
14
16
|
when Blueprinter::EMPTY_COLLECTION
|
15
17
|
array_like?(value) && value.empty?
|
@@ -18,7 +20,10 @@ module Blueprinter
|
|
18
20
|
when Blueprinter::EMPTY_STRING
|
19
21
|
value.to_s == ""
|
20
22
|
else
|
21
|
-
|
23
|
+
Blueprinter::Deprecation.report(
|
24
|
+
"Invalid empty type '#{empty_type}' received. Blueprinter will raise an error in the next major version."\
|
25
|
+
"Must be one of [nil, Blueprinter::EMPTY_COLLECTION, Blueprinter::EMPTY_HASH, Blueprinter::EMPTY_STRING]"
|
26
|
+
)
|
22
27
|
end
|
23
28
|
end
|
24
29
|
end
|
data/lib/blueprinter/field.rb
CHANGED
@@ -34,7 +34,7 @@ class Blueprinter::Field
|
|
34
34
|
callable = old_callable_from(condition)
|
35
35
|
|
36
36
|
if callable && callable.arity == 2
|
37
|
-
|
37
|
+
Blueprinter::Deprecation.report("`:#{condition}` conditions now expects 3 arguments instead of 2.")
|
38
38
|
->(_field_name, obj, options) { callable.call(obj, options) }
|
39
39
|
else
|
40
40
|
callable
|
data/lib/blueprinter/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blueprinter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.25.
|
4
|
+
version: 0.25.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Hess
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-
|
12
|
+
date: 2020-11-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: factory_bot
|
@@ -197,6 +197,7 @@ files:
|
|
197
197
|
- lib/blueprinter/base.rb
|
198
198
|
- lib/blueprinter/blueprinter_error.rb
|
199
199
|
- lib/blueprinter/configuration.rb
|
200
|
+
- lib/blueprinter/deprecation.rb
|
200
201
|
- lib/blueprinter/empty_types.rb
|
201
202
|
- lib/blueprinter/extractor.rb
|
202
203
|
- lib/blueprinter/extractors/association_extractor.rb
|