praxis-blueprints 2.1 → 2.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
  SHA1:
3
- metadata.gz: 14169dd33330be68f4e42c2db5ed8884e243b893
4
- data.tar.gz: c4fb566937d470785645d7899ba7351dfa174289
3
+ metadata.gz: c0621988651c28b2a7067510da6b334b3bb788fd
4
+ data.tar.gz: f89f81316cb31874e7353cf86b85e5f29552112e
5
5
  SHA512:
6
- metadata.gz: 23dbe2797e5ce3575608d619f56908e21fad55baa53934c2a78dccf594231def06d18b28dc24110b8f09b79a290284eae7cf68d313129925eb8ffd8b32a91c0a
7
- data.tar.gz: 4dc85caab7023389dcda2a6974328e815850c07adfbc17ce32ffed83423c58803462bbf5cedb3e799d3fe8b72ecf7d7f46451c1d805f56686e8fa6d7baa8dbcb
6
+ metadata.gz: a9d0c616bb141113114edadd7aa8446ad686da969bb0bb7f4b018b5999a7190cb8f8f570b003503728849841dfbee17be1c5bd21a14e50cd9a1e147e58724f82
7
+ data.tar.gz: e5c20f1b9577216b1a480cabfbf1fcb0941391f3937b0096ce0f1e7c11212e6eba64e60aad6b3be0b4403a6f6584a4ba83d561c53bc3591d6e017d0e1deff60c
data/CHANGELOG.md CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  ## next
4
4
 
5
+ ## 2.2
6
+
7
+ * Added instrumentation through `ActiveSupport::Notifications`
8
+ * Use the 'praxis.blueprint.render to subscribe to `Blueprint#render` calls
9
+
5
10
 
6
11
  ## 2.1
7
12
 
@@ -9,7 +14,7 @@
9
14
  * Bumped attributor dependnecy to >= 4.0.1
10
15
 
11
16
 
12
- ## 2.0.1
17
+ ## 2.0.1
13
18
 
14
19
  * relaxed attributor dependency to >= 3.0
15
20
 
@@ -300,7 +300,7 @@ module Praxis
300
300
  raise "view with name '#{view_name.inspect}' is not defined in #{self.class}"
301
301
  end
302
302
 
303
- rendered_key = if fields = opts[:fields]
303
+ rendered_key = if (fields = opts[:fields])
304
304
  if fields.is_a? Array
305
305
  # Accept a simple array of fields, and transform it to a 1-level hash with nil values
306
306
  opts[:fields] = opts[:fields].each_with_object({}) {|field, hash| hash[field] = nil }
@@ -315,7 +315,15 @@ module Praxis
315
315
  return CIRCULAR_REFERENCE_MARKER if @active_renders.include?(rendered_key)
316
316
  @active_renders << rendered_key
317
317
 
318
- @rendered_views[rendered_key] = view.dump(self, context: context,**opts)
318
+ notification_payload = {
319
+ blueprint: self,
320
+ view: view,
321
+ fields: fields
322
+ }
323
+
324
+ ActiveSupport::Notifications.instrument 'praxis.blueprint.render'.freeze, notification_payload do
325
+ @rendered_views[rendered_key] = view.dump(self, context: context,**opts)
326
+ end
319
327
  ensure
320
328
  @active_renders.delete rendered_key
321
329
  end
@@ -1,3 +1,3 @@
1
1
  module Praxis
2
- BLUEPRINTS_VERSION = "2.1"
2
+ BLUEPRINTS_VERSION = "2.2"
3
3
  end
@@ -29,7 +29,6 @@ module Praxis
29
29
  @contents
30
30
  end
31
31
 
32
-
33
32
  def dump(object, context: Attributor::DEFAULT_ROOT_CONTEXT,**opts)
34
33
  fields = opts[:fields]
35
34
  # Restrict which attributes to output if we receive a fields parameter
@@ -92,7 +91,6 @@ module Praxis
92
91
 
93
92
  end
94
93
 
95
-
96
94
  def example(context=nil)
97
95
  object = self.schema.example(context)
98
96
  opts = {}
@@ -114,7 +112,7 @@ module Praxis
114
112
  end
115
113
 
116
114
  private
117
- def add_subfield_options( fields, name, existing_options)
115
+ def add_subfield_options(fields, name, existing_options)
118
116
  sub_opts = if fields && fields[name]
119
117
  {fields: fields[name] }
120
118
  else
@@ -101,6 +101,19 @@ describe Praxis::Blueprint do
101
101
  it 'has the right values' do
102
102
  subject[:name].should eq(expected_name)
103
103
  end
104
+
105
+ it 'sends the correct ActiveSupport::Notification' do
106
+ notification_payload = {
107
+ blueprint: blueprint_instance,
108
+ view: blueprint_class.views[:name_only],
109
+ fields: nil
110
+ }
111
+ ActiveSupport::Notifications.should_receive(:instrument).
112
+ with('praxis.blueprint.render',notification_payload).
113
+ and_call_original
114
+
115
+ blueprint_instance.render(view: :name_only)
116
+ end
104
117
  end
105
118
 
106
119
  context 'validation' do
@@ -217,7 +230,7 @@ describe Praxis::Blueprint do
217
230
  end
218
231
  end
219
232
  end
220
-
233
+
221
234
  context '.validate' do
222
235
  let(:hash) { {name: 'bob'} }
223
236
  let(:person) { Person.load(hash) }
@@ -34,6 +34,9 @@ class Person < Praxis::Blueprint
34
34
  attribute :address
35
35
  end
36
36
 
37
+ view :name_only do
38
+ attribute :name
39
+ end
37
40
 
38
41
  view :extended do
39
42
  attribute :name
@@ -76,7 +79,7 @@ end
76
79
 
77
80
 
78
81
  class FullName < Attributor::Model
79
-
82
+
80
83
  attributes do
81
84
  attribute :first, String, example: /[:first_name:]/
82
85
  attribute :last, String, example: /[:last_name:]/
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: praxis-blueprints
3
3
  version: !ruby/object:Gem::Version
4
- version: '2.1'
4
+ version: '2.2'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josep M. Blanquer
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-08-27 00:00:00.000000000 Z
12
+ date: 2015-09-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: randexp
@@ -259,7 +259,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
259
259
  version: '0'
260
260
  requirements: []
261
261
  rubyforge_project:
262
- rubygems_version: 2.2.2
262
+ rubygems_version: 2.4.5.1
263
263
  signing_key:
264
264
  specification_version: 4
265
265
  summary: Attributes, views, rendering and example generation for common Blueprint