loggable_activity 0.1.54 → 0.1.55

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: 4e3c72b18d402ce0870b6882beeb7438e46f4955e38ca9182c02bbe8b945ea23
4
- data.tar.gz: e2484e4bec3907cff1d3974b9c58cde65e9c5b48dfd91cc0ab9302ced561d6b7
3
+ metadata.gz: 2e2ab2f4d7ec08a5f53176ae3e3289b8470c5cc39013a1bc48e06c3b596f11ee
4
+ data.tar.gz: 3c5037f59fc9e408fd693afbd3208f530b52cb4f3791b91f8dfad603a66e2513
5
5
  SHA512:
6
- metadata.gz: c39842b15b3fe0ea14970a381ba4b17222549884d90c4b96236d3bffd5a23ed97803011bef1aea4da1586fae6cdba7ab010a6ebe0e4f229b666fe174a49a4748
7
- data.tar.gz: d44d7c04e0b5fcde4f7c8609da270ad7989bae25e84b5d6adaa2428ba5226284fb6e4187320eaa8fb8cbbe697c7804b3ec5b4fd4c9a78afc22d09084582fc305
6
+ metadata.gz: 017f1f1418adb7acd44ed3af4cd08ccdcc396dc9d61c63b2b584c994b46018923832155a1ae64361a8d75c5414257591ff174e33696c356c844c241063343c14
7
+ data.tar.gz: 2da5d2b4981ad8470f6ed75b2710c6e75f36d19dafb99496cc0e49f1e7c2a0f008b94d234780c693e6eb841437ffa6933f7abd133526a6c9eec56b8e75fa1259
data/GETTING-STARTED.md CHANGED
@@ -116,7 +116,7 @@ $ rails g loggable_activity:install_templates
116
116
  ```
117
117
  or for the slim template language. (don't run both)
118
118
  ```
119
- $ rails g loggable_activity:install_templates --template=erb
119
+ $ rails g loggable_activity:install_templates --template=slim
120
120
  ```
121
121
  Now you got the `loggable_activity_helper.rb' installed.<br/>
122
122
  You can use the `render_activity` method from your view like this.
@@ -155,4 +155,4 @@ end
155
155
  If you can download and play around with a demo app
156
156
  - 1 Down the demo project from [demo project on github](https://github.com/maxgronlund/LoggableActivityDemoApp)
157
157
  - 2 Update the Gemfile in the demo project so it points to your localhost.
158
- - 3 you can now build and test you version of the gem `$ gem build loggable_activity.gemspec`
158
+ - 3 you can now build and test you version of the gem `$ gem build loggable_activity.gemspec`
@@ -80,6 +80,7 @@
80
80
  <li ><a href="#method-i-attrs">#attrs</a>
81
81
  <li ><a href="#method-i-must_have_at_least_one_payload">#must_have_at_least_one_payload</a>
82
82
  <li ><a href="#method-i-ordered_payloads">#ordered_payloads</a>
83
+ <li ><a href="#method-i-path">#path</a>
83
84
  <li ><a href="#method-i-previous_associations_attrs">#previous_associations_attrs</a>
84
85
  <li ><a href="#method-i-primary_payload">#primary_payload</a>
85
86
  <li ><a href="#method-i-primary_payload_attrs">#primary_payload_attrs</a>
@@ -130,7 +131,7 @@
130
131
  <p>Returns a list of activities for a given actor.</p>
131
132
 
132
133
  <div class="method-source-code" id="activities_for_actor-source">
133
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 214</span>
134
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 155</span>
134
135
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">activities_for_actor</span>(<span class="ruby-identifier">actor</span>, <span class="ruby-identifier">limit</span> = <span class="ruby-value">20</span>, <span class="ruby-identifier">params</span> = { <span class="ruby-value">offset:</span> <span class="ruby-value">0</span> })
135
136
  <span class="ruby-constant">LoggableActivity</span><span class="ruby-operator">::</span><span class="ruby-constant">Activity</span>.<span class="ruby-identifier">latest</span>(<span class="ruby-identifier">limit</span>, <span class="ruby-identifier">params</span>).<span class="ruby-identifier">where</span>(<span class="ruby-value">actor:</span>)
136
137
  <span class="ruby-keyword">end</span></pre>
@@ -153,7 +154,7 @@
153
154
  <p>Returns the last activity.</p>
154
155
 
155
156
  <div class="method-source-code" id="last-source">
156
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 230</span>
157
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 171</span>
157
158
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">last</span>(<span class="ruby-identifier">limit</span> = <span class="ruby-value">1</span>)
158
159
  <span class="ruby-keyword">return</span> <span class="ruby-identifier">latest</span>(<span class="ruby-value">1</span>).<span class="ruby-identifier">first</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">limit</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
159
160
 
@@ -178,7 +179,7 @@
178
179
  <p>Returns a list of activities ordered by creation date.</p>
179
180
 
180
181
  <div class="method-source-code" id="latest-source">
181
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 219</span>
182
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 160</span>
182
183
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">latest</span>(<span class="ruby-identifier">limit</span> = <span class="ruby-value">20</span>, <span class="ruby-identifier">params</span> = { <span class="ruby-value">offset:</span> <span class="ruby-value">0</span> })
183
184
  <span class="ruby-identifier">offset</span> = <span class="ruby-identifier">params</span>[<span class="ruby-value">:offset</span>] <span class="ruby-operator">||</span> <span class="ruby-value">0</span>
184
185
  <span class="ruby-constant">LoggableActivity</span><span class="ruby-operator">::</span><span class="ruby-constant">Activity</span>
@@ -224,7 +225,7 @@
224
225
  </pre>
225
226
 
226
227
  <div class="method-source-code" id="actor_display_name-source">
227
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 207</span>
228
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 148</span>
228
229
  <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">actor_display_name</span>
229
230
  <span class="ruby-keyword">return</span> <span class="ruby-constant">I18n</span>.<span class="ruby-identifier">t</span>(<span class="ruby-string">&#39;loggable.activity.deleted&#39;</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">encrypted_actor_display_name</span>.<span class="ruby-identifier">nil?</span>
230
231
 
@@ -246,63 +247,40 @@
246
247
  </div>
247
248
 
248
249
  <div class="method-description">
249
- <p>Returns a list of attributes of the activity includig the indliced relations. The included relations are devined in the ‘config/loggable_activity.yaml file. The attributes are packed in a way that they can be used to display the activity in the UI.</p>
250
+ <p>Returns an array of hashes, each representing an activity’s attributes and its associated relations. The structure and relations to include are specified in ‘config/loggable_activity.yaml’. This format is designed for UI display purposes.</p>
250
251
 
251
- <p>Example:</p>
252
+ <p>Each hash in the array contains:</p>
253
+ <ul><li>
254
+ <p>:record_type: The class name of the record.</p>
255
+ </li><li>
256
+ <p>:payload_type: A descriptor of the payload’s role (e.g., ‘primary_payload’ or ‘current_association’).</p>
257
+ </li><li>
258
+ <p>:attrs: A hash of the record’s attributes.</p>
259
+ </li></ul>
260
+
261
+ <p>Example usage:</p>
252
262
 
253
263
  <pre class="ruby"><span class="ruby-ivar">@activity</span>.<span class="ruby-identifier">attrs</span>
254
264
  </pre>
255
265
 
256
- <p>Returns:</p>
266
+ <p>Sample return value:</p>
257
267
 
258
- <pre class="ruby"> [
259
- {
260
- <span class="ruby-value">record_class:</span> <span class="ruby-string">&quot;User&quot;</span>,
261
- <span class="ruby-value">payload_type:</span> <span class="ruby-string">&quot;primary_payload&quot;</span>,
262
- <span class="ruby-value">attrs:</span> {
263
- <span class="ruby-string">&quot;first_name&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;David&quot;</span>,
264
- <span class="ruby-string">&quot;last_name&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;Bowie&quot;</span>,
265
- <span class="ruby-string">&quot;age&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;69&quot;</span>,
266
- <span class="ruby-string">&quot;email&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;david@example.com&quot;</span>,
267
- <span class="ruby-string">&quot;user_type&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;Patient&quot;</span>
268
- }
269
- },
270
- {
271
- <span class="ruby-value">record_class:</span> <span class="ruby-string">&quot;Demo::UserProfile&quot;</span>,
272
- <span class="ruby-value">payload_type:</span> <span class="ruby-string">&quot;current_association&quot;</span>,
273
- <span class="ruby-value">attrs:</span> {
274
- <span class="ruby-string">&quot;sex&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;Male&quot;</span>,
275
- <span class="ruby-string">&quot;religion&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;Agnostic&quot;</span>
276
- }
277
- },
278
- {
279
- <span class="ruby-value">record_class:</span> <span class="ruby-string">&quot;Demo::Address&quot;</span>,
280
- <span class="ruby-value">payload_type:</span> <span class="ruby-string">&quot;current_association&quot;</span>,
281
- <span class="ruby-value">attrs:</span> {
282
- <span class="ruby-string">&quot;street&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;Eiffel Tower&quot;</span>,
283
- <span class="ruby-string">&quot;city&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;Paris&quot;</span>,
284
- <span class="ruby-string">&quot;country&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;France&quot;</span>,
285
- <span class="ruby-string">&quot;postal_code&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;75007&quot;</span>
286
- }
287
- },
288
- {
289
- <span class="ruby-value">record_class:</span> <span class="ruby-string">&quot;Demo::Club&quot;</span>,
290
- <span class="ruby-value">payload_type:</span> <span class="ruby-string">&quot;current_association&quot;</span>,
291
- <span class="ruby-value">attrs:</span> {
292
- <span class="ruby-string">&quot;name&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;Mystic Fusion Lounge&quot;</span>
293
- }
294
- }
295
- ]
296
- </pre>
268
+ <pre>[
269
+ { record_type: MODEL_NAME, payload_type: &quot;primary_payload&quot;, attrs: { &quot;KEY&quot; =&gt; &quot;VALUE&quot;, ... } },
270
+ { record_type: MODEL_NAME, payload_type: &quot;current_association&quot;, attrs: { &quot;KEY&quot; =&gt; &quot;VALUE&quot;, ... } },
271
+ ...
272
+ ]</pre>
297
273
 
298
274
  <div class="method-source-code" id="attrs-source">
299
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 68</span>
275
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 37</span>
300
276
  <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">attrs</span>
301
277
  <span class="ruby-identifier">ordered_payloads</span>.<span class="ruby-identifier">map</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">payload</span><span class="ruby-operator">|</span>
302
278
  {
303
- <span class="ruby-value">record_class:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">record_type</span>,
279
+ <span class="ruby-value">record_type:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">record_type</span>,
280
+ <span class="ruby-value">record_id:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">record_id</span>,
304
281
  <span class="ruby-value">payload_type:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">payload_type</span>,
305
- <span class="ruby-value">attrs:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">attrs</span>
282
+ <span class="ruby-value">attrs:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">attrs</span>,
283
+ <span class="ruby-value">path:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">payload_route</span>
306
284
  }
307
285
  <span class="ruby-keyword">end</span>
308
286
  <span class="ruby-keyword">end</span></pre>
@@ -310,6 +288,39 @@
310
288
  </div>
311
289
 
312
290
 
291
+ </div>
292
+
293
+ <div id="method-i-path" class="method-detail ">
294
+ <div class="method-header">
295
+ <div class="method-heading">
296
+ <span class="method-name">path</span><span
297
+ class="method-args">()</span>
298
+ <span class="method-click-advice">click to toggle source</span>
299
+ </div>
300
+ </div>
301
+
302
+ <div class="method-description">
303
+ <p>Returns the path for the activity.</p>
304
+
305
+ <p>Example:</p>
306
+
307
+ <pre class="ruby"><span class="ruby-ivar">@activity</span>.<span class="ruby-identifier">path</span>
308
+ </pre>
309
+
310
+ <p>Returns:</p>
311
+
312
+ <pre class="ruby"><span class="ruby-string">&quot;/path/to/activity&quot;</span>
313
+ </pre>
314
+
315
+ <div class="method-source-code" id="path-source">
316
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 135</span>
317
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">path</span>
318
+ <span class="ruby-identifier">primary_payload</span>&amp;.<span class="ruby-identifier">route</span>
319
+ <span class="ruby-keyword">end</span></pre>
320
+ </div>
321
+ </div>
322
+
323
+
313
324
  </div>
314
325
 
315
326
  <div id="method-i-primary_payload_attrs" class="method-detail ">
@@ -331,17 +342,10 @@
331
342
 
332
343
  <p>Returns:</p>
333
344
 
334
- <pre class="ruby">{
335
- <span class="ruby-string">&quot;first_name&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;David&quot;</span>,
336
- <span class="ruby-string">&quot;last_name&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;Bowie&quot;</span>,
337
- <span class="ruby-string">&quot;age&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;69&quot;</span>,
338
- <span class="ruby-string">&quot;email&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;david@example.com&quot;</span>,
339
- <span class="ruby-string">&quot;user_type&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;Patient&quot;</span>
340
- }
341
- </pre>
345
+ <pre>{ &quot;KEY_A&quot; =&gt; &quot;VALUE_A&quot;, &quot;KEY_B&quot; =&gt; &quot;VALUE_B&quot;, ... }</pre>
342
346
 
343
347
  <div class="method-source-code" id="primary_payload_attrs-source">
344
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 154</span>
348
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 88</span>
345
349
  <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">primary_payload_attrs</span>
346
350
  <span class="ruby-identifier">primary_payload</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">primary_payload</span>.<span class="ruby-identifier">attrs</span> <span class="ruby-operator">:</span> {}
347
351
  <span class="ruby-keyword">end</span></pre>
@@ -374,7 +378,7 @@
374
378
  </pre>
375
379
 
376
380
  <div class="method-source-code" id="record_display_name-source">
377
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 192</span>
381
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 120</span>
378
382
  <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">record_display_name</span>
379
383
  <span class="ruby-keyword">return</span> <span class="ruby-constant">I18n</span>.<span class="ruby-identifier">t</span>(<span class="ruby-string">&#39;loggable.activity.deleted&#39;</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">encrypted_record_display_name</span>.<span class="ruby-identifier">nil?</span>
380
384
 
@@ -405,24 +409,17 @@
405
409
 
406
410
  <p>Returns:</p>
407
411
 
408
- <pre class="ruby">[
412
+ <pre>[
409
413
  {
410
- <span class="ruby-value">record_class:</span> <span class="ruby-string">&quot;Demo::Address&quot;</span>,
411
- <span class="ruby-comment"># Current association payload type</span>
412
- <span class="ruby-value">payload_type:</span> <span class="ruby-string">&quot;current_association&quot;</span>,
413
- <span class="ruby-comment"># Current attributes for Demo::Address</span>
414
- <span class="ruby-value">attrs:</span> {
415
- <span class="ruby-string">&quot;street&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;The Palace of Versailles&quot;</span>,
416
- <span class="ruby-string">&quot;city&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;Versailles&quot;</span>,
417
- <span class="ruby-string">&quot;country&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;France&quot;</span>,
418
- <span class="ruby-string">&quot;postal_code&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;78000&quot;</span>
419
- }
414
+ record_type: CLASS.NAME,
415
+ record_id: INTEGER,
416
+ payload_type: ENUM
417
+ attrs: { &quot;KEY_A&quot; =&gt; &quot;VALUE_A&quot;, &quot;KEY_B&quot; =&gt; &quot;VALUE_B&quot;, ... }
420
418
  }
421
- ]
422
- </pre>
419
+ ]</pre>
423
420
 
424
421
  <div class="method-source-code" id="relations_attrs-source">
425
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 179</span>
422
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 107</span>
426
423
  <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">relations_attrs</span>
427
424
  <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">filter</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-identifier">p</span>[<span class="ruby-value">:payload_type</span>] <span class="ruby-operator">==</span> <span class="ruby-string">&#39;current_association&#39;</span> }
428
425
  <span class="ruby-keyword">end</span></pre>
@@ -442,66 +439,38 @@
442
439
  </div>
443
440
 
444
441
  <div class="method-description">
445
- <p>Returns the attributes of an upddate activity.</p>
442
+ <p>Returns a hash describing the attributes of an update activity, including updated attributes for a record and any updated related attributes.</p>
446
443
 
447
444
  <p>Example:</p>
448
445
 
449
446
  <pre class="ruby"><span class="ruby-ivar">@activity</span>.<span class="ruby-identifier">update_activity_attrs</span>
450
447
  </pre>
451
448
 
452
- <p>Returns:</p>
449
+ <p>The return value is structured as follows:</p>
450
+ <ul><li>
451
+ <p>:update_attrs contains the attributes of the record being updated, detailing changes from previous to new values.</p>
452
+ </li><li>
453
+ <p>:updated_relations_attrs is an array of hashes, each representing an updated related record. Each hash details the previous and current attributes of the relation.</p>
454
+ </li></ul>
455
+
456
+ <p>Example Return Structure:</p>
453
457
 
454
- <pre class="ruby">{
455
- <span class="ruby-comment"># Update attributes for Demo::Club</span>
456
- <span class="ruby-value">update_attrs:</span> {
457
- <span class="ruby-value">record_class:</span> <span class="ruby-string">&quot;Demo::Club&quot;</span>,
458
- <span class="ruby-value">attrs:</span> [
459
- {
460
- <span class="ruby-string">&quot;name&quot;</span> <span class="ruby-operator">=&gt;</span> {
461
- <span class="ruby-comment"># Previous name</span>
462
- <span class="ruby-value">from:</span> <span class="ruby-string">&quot;Electric Oasis Club&quot;</span>,
463
- <span class="ruby-comment"># New name</span>
464
- <span class="ruby-value">to:</span> <span class="ruby-string">&quot;Electric Oasis Club nr 5&quot;</span>
465
- }
466
- }
467
- ]
458
+ <pre>{
459
+ update_attrs: {
460
+ record_class: &quot;CLASS.NAME&quot;,
461
+ attrs: [{ &quot;KEY&quot; =&gt; { from: &quot;OLD_VALUE&quot;, to: &quot;NEW_VALUE&quot; } }]
468
462
  },
469
- <span class="ruby-comment"># Updated relations attributes</span>
470
- <span class="ruby-value">updated_relations_attrs:</span> [
463
+ updated_relations_attrs: [
471
464
  {
472
- <span class="ruby-value">record_class:</span> <span class="ruby-string">&quot;Demo::Address&quot;</span>,
473
- <span class="ruby-value">previous_attrs:</span> {
474
- <span class="ruby-comment"># Record class</span>
475
- <span class="ruby-value">record_class:</span> <span class="ruby-string">&quot;Demo::Address&quot;</span>,
476
- <span class="ruby-comment"># Previous association payload type</span>
477
- <span class="ruby-value">payload_type:</span> <span class="ruby-string">&quot;previous_association&quot;</span>,
478
- <span class="ruby-comment"># Previous attributes for Demo::Address</span>
479
- <span class="ruby-value">attrs:</span> {
480
- <span class="ruby-string">&quot;street&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;Ice Hotel, Marknadsvägen 63&quot;</span>,
481
- <span class="ruby-string">&quot;city&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;Jukkasjärvi&quot;</span>,
482
- <span class="ruby-string">&quot;country&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;Sweden&quot;</span>,
483
- <span class="ruby-string">&quot;postal_code&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;981 91&quot;</span>
484
- }
485
- },
486
- <span class="ruby-value">current_attrs:</span> {
487
- <span class="ruby-value">record_class:</span> <span class="ruby-string">&quot;Demo::Address&quot;</span>,
488
- <span class="ruby-comment"># Current association payload type</span>
489
- <span class="ruby-value">payload_type:</span> <span class="ruby-string">&quot;current_association&quot;</span>,
490
- <span class="ruby-comment"># Current attributes for Demo::Address</span>
491
- <span class="ruby-value">attrs:</span> {
492
- <span class="ruby-string">&quot;street&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;The Palace of Versailles&quot;</span>,
493
- <span class="ruby-string">&quot;city&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;Versailles&quot;</span>,
494
- <span class="ruby-string">&quot;country&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;France&quot;</span>,
495
- <span class="ruby-string">&quot;postal_code&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;78000&quot;</span>
496
- }
497
- }
465
+ record_class: &quot;CLASS.NAME&quot;,
466
+ previous_attrs: { attrs: { &quot;KEY&quot; =&gt; &quot;VALUE&quot;, ... } },
467
+ current_attrs: { attrs: { &quot;KEY&quot; =&gt; &quot;VALUE&quot;, ... } }
498
468
  }
499
469
  ]
500
- }
501
- </pre>
470
+ }</pre>
502
471
 
503
472
  <div class="method-source-code" id="update_activity_attrs-source">
504
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 132</span>
473
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 72</span>
505
474
  <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">update_activity_attrs</span>
506
475
  {
507
476
  <span class="ruby-value">update_attrs:</span>,
@@ -531,10 +500,10 @@
531
500
  </div>
532
501
 
533
502
  <div class="method-description">
534
-
503
+ <p>Returns the key for the actor.</p>
535
504
 
536
505
  <div class="method-source-code" id="actor_key-source">
537
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 276</span>
506
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 224</span>
538
507
  <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">actor_key</span>
539
508
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">actor</span>.<span class="ruby-identifier">nil?</span>
540
509
 
@@ -556,10 +525,10 @@
556
525
  </div>
557
526
 
558
527
  <div class="method-description">
559
-
528
+ <p>Validates that the activity has at least one payload.</p>
560
529
 
561
530
  <div class="method-source-code" id="must_have_at_least_one_payload-source">
562
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 282</span>
531
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 231</span>
563
532
  <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">must_have_at_least_one_payload</span>
564
533
  <span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span>(<span class="ruby-value">:payloads</span>, <span class="ruby-string">&#39;must have at least one payload&#39;</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">payloads</span>.<span class="ruby-identifier">empty?</span>
565
534
  <span class="ruby-keyword">end</span></pre>
@@ -579,10 +548,10 @@
579
548
  </div>
580
549
 
581
550
  <div class="method-description">
582
-
551
+ <p>Returns payloads sorted by :payload_type.</p>
583
552
 
584
553
  <div class="method-source-code" id="ordered_payloads-source">
585
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 266</span>
554
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 212</span>
586
555
  <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">ordered_payloads</span>
587
556
  <span class="ruby-identifier">payloads</span>.<span class="ruby-identifier">order</span>(<span class="ruby-value">:payload_type</span>)
588
557
  <span class="ruby-keyword">end</span></pre>
@@ -602,10 +571,10 @@
602
571
  </div>
603
572
 
604
573
  <div class="method-description">
605
-
574
+ <p>Returns the previous association attributes.</p>
606
575
 
607
576
  <div class="method-source-code" id="previous_associations_attrs-source">
608
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 262</span>
577
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 207</span>
609
578
  <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">previous_associations_attrs</span>
610
579
  <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">select</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-identifier">p</span>[<span class="ruby-value">:payload_type</span>] <span class="ruby-operator">==</span> <span class="ruby-string">&#39;previous_association&#39;</span> }
611
580
  <span class="ruby-keyword">end</span></pre>
@@ -625,10 +594,10 @@
625
594
  </div>
626
595
 
627
596
  <div class="method-description">
628
-
597
+ <p>Returns the primary payload.</p>
629
598
 
630
599
  <div class="method-source-code" id="primary_payload-source">
631
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 246</span>
600
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 189</span>
632
601
  <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">primary_payload</span>
633
602
  <span class="ruby-identifier">ordered_payloads</span>.<span class="ruby-identifier">find</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-identifier">p</span>.<span class="ruby-identifier">payload_type</span> <span class="ruby-operator">==</span> <span class="ruby-string">&#39;primary_payload&#39;</span> }
634
603
  <span class="ruby-keyword">end</span></pre>
@@ -648,10 +617,10 @@
648
617
  </div>
649
618
 
650
619
  <div class="method-description">
651
-
620
+ <p>Returns the key for the logged record.</p>
652
621
 
653
622
  <div class="method-source-code" id="record_key-source">
654
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 270</span>
623
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 217</span>
655
624
  <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">record_key</span>
656
625
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>.<span class="ruby-identifier">nil?</span>
657
626
 
@@ -673,10 +642,10 @@
673
642
  </div>
674
643
 
675
644
  <div class="method-description">
676
-
645
+ <p>Returns the attributes for the update+payload.</p>
677
646
 
678
647
  <div class="method-source-code" id="update_attrs-source">
679
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 238</span>
648
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 180</span>
680
649
  <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">update_attrs</span>
681
650
  <span class="ruby-identifier">update_payload_attrs</span> = <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">find</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-identifier">p</span>[<span class="ruby-value">:payload_type</span>] <span class="ruby-operator">==</span> <span class="ruby-string">&#39;update_payload&#39;</span> }
682
651
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">update_payload_attrs</span>
@@ -700,19 +669,19 @@
700
669
  </div>
701
670
 
702
671
  <div class="method-description">
703
-
672
+ <p>Returns the attributes for the updated relations.</p>
704
673
 
705
674
  <div class="method-source-code" id="updated_relations_attrs-source">
706
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 250</span>
675
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 194</span>
707
676
  <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">updated_relations_attrs</span>
708
- <span class="ruby-identifier">grouped_associations</span> = <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">group_by</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-identifier">p</span>[<span class="ruby-value">:record_class</span>] }
677
+ <span class="ruby-identifier">grouped_associations</span> = <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">group_by</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-identifier">p</span>[<span class="ruby-value">:record_type</span>] }
709
678
 
710
- <span class="ruby-identifier">grouped_associations</span>.<span class="ruby-identifier">map</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">record_class</span>, <span class="ruby-identifier">payloads</span><span class="ruby-operator">|</span>
679
+ <span class="ruby-identifier">grouped_associations</span>.<span class="ruby-identifier">map</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">record_type</span>, <span class="ruby-identifier">payloads</span><span class="ruby-operator">|</span>
711
680
  <span class="ruby-identifier">previous_attrs</span> = <span class="ruby-identifier">payloads</span>.<span class="ruby-identifier">find</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-identifier">p</span>[<span class="ruby-value">:payload_type</span>] <span class="ruby-operator">==</span> <span class="ruby-string">&#39;previous_association&#39;</span> }
712
681
  <span class="ruby-identifier">current_attrs</span> = <span class="ruby-identifier">payloads</span>.<span class="ruby-identifier">find</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-identifier">p</span>[<span class="ruby-value">:payload_type</span>] <span class="ruby-operator">==</span> <span class="ruby-string">&#39;current_association&#39;</span> }
713
682
  <span class="ruby-keyword">next</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">previous_attrs</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">current_attrs</span>.<span class="ruby-identifier">nil?</span>
714
683
 
715
- { <span class="ruby-value">record_class:</span>, <span class="ruby-value">previous_attrs:</span>, <span class="ruby-value">current_attrs:</span> }
684
+ { <span class="ruby-value">record_type:</span>, <span class="ruby-value">previous_attrs:</span>, <span class="ruby-value">current_attrs:</span> }
716
685
  <span class="ruby-keyword">end</span>.<span class="ruby-identifier">compact</span>
717
686
  <span class="ruby-keyword">end</span></pre>
718
687
  </div>
@@ -136,7 +136,7 @@
136
136
  </pre>
137
137
 
138
138
  <div class="method-source-code" id="for_class-source">
139
- <pre><span class="ruby-comment"># File lib/loggable_activity/configuration.rb, line 27</span>
139
+ <pre><span class="ruby-comment"># File lib/loggable_activity/configuration.rb, line 28</span>
140
140
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">for_class</span>(<span class="ruby-identifier">class_name</span>)
141
141
  <span class="ruby-ivar">@config_data</span>[<span class="ruby-identifier">class_name</span>]
142
142
  <span class="ruby-keyword">end</span></pre>
@@ -156,10 +156,10 @@
156
156
  </div>
157
157
 
158
158
  <div class="method-description">
159
-
159
+ <p>Loads the configuration file</p>
160
160
 
161
161
  <div class="method-source-code" id="load_config_file-source">
162
- <pre><span class="ruby-comment"># File lib/loggable_activity/configuration.rb, line 6</span>
162
+ <pre><span class="ruby-comment"># File lib/loggable_activity/configuration.rb, line 7</span>
163
163
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">load_config_file</span>(<span class="ruby-identifier">config_file_path</span>)
164
164
  <span class="ruby-ivar">@config_data</span> = <span class="ruby-constant">YAML</span>.<span class="ruby-identifier">load_file</span>(<span class="ruby-identifier">config_file_path</span>)
165
165
  <span class="ruby-keyword">end</span></pre>
@@ -107,10 +107,10 @@
107
107
  </div>
108
108
 
109
109
  <div class="method-description">
110
-
110
+ <p>Returns true if the given value is blank</p>
111
111
 
112
112
  <div class="method-source-code" id="blank-3F-source">
113
- <pre><span class="ruby-comment"># File lib/loggable_activity/encryption.rb, line 65</span>
113
+ <pre><span class="ruby-comment"># File lib/loggable_activity/encryption.rb, line 69</span>
114
114
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">blank?</span>(<span class="ruby-identifier">value</span>)
115
115
  <span class="ruby-identifier">value</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:empty?</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">:</span> <span class="ruby-operator">!</span><span class="ruby-identifier">value</span>
116
116
  <span class="ruby-keyword">end</span></pre>
@@ -148,7 +148,7 @@
148
148
  <span class="ruby-keyword">return</span> <span class="ruby-string">&#39;&#39;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">data</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">encoded_key</span>.<span class="ruby-identifier">nil?</span>
149
149
 
150
150
  <span class="ruby-identifier">encryption_key</span> = <span class="ruby-constant">Base64</span>.<span class="ruby-identifier">decode64</span>(<span class="ruby-identifier">encoded_key</span>)
151
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">EncryptionError</span>, <span class="ruby-string">&#39;Decryption failed: Invalid encryption key length&#39;</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">encryption_key</span>.<span class="ruby-identifier">bytesize</span> <span class="ruby-operator">==</span> <span class="ruby-value">32</span>
151
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">EncryptionError</span>, <span class="ruby-node">&quot;Decryption failed: Invalid encoded_key length: #{encryption_key.bytesize}&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">encryption_key</span>.<span class="ruby-identifier">bytesize</span> <span class="ruby-operator">==</span> <span class="ruby-value">32</span>
152
152
 
153
153
  <span class="ruby-identifier">cipher</span> = <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">Cipher</span>.<span class="ruby-identifier">new</span>(<span class="ruby-string">&#39;AES-256-CBC&#39;</span>).<span class="ruby-identifier">decrypt</span>
154
154
  <span class="ruby-identifier">cipher</span>.<span class="ruby-identifier">key</span> = <span class="ruby-identifier">encryption_key</span>
@@ -160,6 +160,9 @@
160
160
  <span class="ruby-identifier">decrypted_data</span>.<span class="ruby-identifier">force_encoding</span>(<span class="ruby-string">&#39;UTF-8&#39;</span>)
161
161
  <span class="ruby-keyword">rescue</span> <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">Cipher</span><span class="ruby-operator">::</span><span class="ruby-constant">CipherError</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">e</span>
162
162
  <span class="ruby-identifier">raise</span> <span class="ruby-constant">EncryptionError</span>, <span class="ruby-node">&quot;Decryption failed: #{e.message}&quot;</span>
163
+ <span class="ruby-keyword">rescue</span> <span class="ruby-constant">EncryptionError</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">e</span>
164
+ <span class="ruby-identifier">puts</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">message</span>
165
+ <span class="ruby-string">&#39;*** DECRYPTION FAILED ***&#39;</span>
163
166
  <span class="ruby-keyword">end</span></pre>
164
167
  </div>
165
168
  </div>
@@ -195,7 +198,7 @@
195
198
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">data</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">encoded_key</span>.<span class="ruby-identifier">nil?</span>
196
199
 
197
200
  <span class="ruby-identifier">encryption_key</span> = <span class="ruby-constant">Base64</span>.<span class="ruby-identifier">decode64</span>(<span class="ruby-identifier">encoded_key</span>)
198
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">EncryptionError</span>, <span class="ruby-node">&quot;Encryption failed: Invalid encryption key length #{encryption_key.bytesize}&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">encryption_key</span>.<span class="ruby-identifier">bytesize</span> <span class="ruby-operator">==</span> <span class="ruby-value">32</span>
201
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">EncryptionError</span>, <span class="ruby-node">&quot;Encryption failed: Invalid encoded_key length #{encryption_key.bytesize}&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">encryption_key</span>.<span class="ruby-identifier">bytesize</span> <span class="ruby-operator">==</span> <span class="ruby-value">32</span>
199
202
 
200
203
  <span class="ruby-identifier">cipher</span> = <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">Cipher</span>.<span class="ruby-identifier">new</span>(<span class="ruby-string">&#39;AES-256-CBC&#39;</span>).<span class="ruby-identifier">encrypt</span>
201
204
  <span class="ruby-identifier">cipher</span>.<span class="ruby-identifier">key</span> = <span class="ruby-identifier">encryption_key</span>
@@ -139,7 +139,7 @@
139
139
  </pre>
140
140
 
141
141
  <div class="method-source-code" id="create_encryption_key-source">
142
- <pre><span class="ruby-comment"># File lib/loggable_activity/encryption_key.rb, line 93</span>
142
+ <pre><span class="ruby-comment"># File lib/loggable_activity/encryption_key.rb, line 95</span>
143
143
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">create_encryption_key</span>(<span class="ruby-identifier">record_type</span>, <span class="ruby-identifier">record_id</span>, <span class="ruby-identifier">parent_key</span> = <span class="ruby-keyword">nil</span>)
144
144
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">parent_key</span>
145
145
  <span class="ruby-identifier">create</span>(<span class="ruby-value">record_type:</span>, <span class="ruby-value">record_id:</span>, <span class="ruby-value">key:</span> <span class="ruby-identifier">random_key</span>, <span class="ruby-value">parent_key:</span>)
@@ -189,6 +189,8 @@
189
189
  <div class="method-source-code" id="for_record-source">
190
190
  <pre><span class="ruby-comment"># File lib/loggable_activity/encryption_key.rb, line 67</span>
191
191
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">for_record</span>(<span class="ruby-identifier">record</span>, <span class="ruby-identifier">parent_key</span> = <span class="ruby-keyword">nil</span>)
192
+ <span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>.<span class="ruby-identifier">nil?</span>
193
+
192
194
  <span class="ruby-identifier">encryption_key</span> = <span class="ruby-identifier">find_by</span>(<span class="ruby-value">record:</span>)
193
195
  <span class="ruby-keyword">return</span> <span class="ruby-identifier">encryption_key</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">encryption_key</span>
194
196
 
@@ -272,7 +274,7 @@
272
274
  </pre>
273
275
 
274
276
  <div class="method-source-code" id="random_key-source">
275
- <pre><span class="ruby-comment"># File lib/loggable_activity/encryption_key.rb, line 111</span>
277
+ <pre><span class="ruby-comment"># File lib/loggable_activity/encryption_key.rb, line 113</span>
276
278
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">random_key</span>
277
279
  <span class="ruby-comment"># Generate 32 random bytes (256 bits) directly</span>
278
280
  <span class="ruby-identifier">encryption_key</span> = <span class="ruby-constant">SecureRandom</span>.<span class="ruby-identifier">random_bytes</span>(<span class="ruby-value">32</span>)