blueprinter 0.25.1 → 0.25.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|