loggable_activity 0.2.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (150) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +29 -42
  3. data/.vscode/commands.json +2 -2
  4. data/.vscode/terminals.json +8 -8
  5. data/CHEAT_SHEET.md +31 -0
  6. data/MIT-LICENSE +21 -0
  7. data/README.md +31 -45
  8. data/Rakefile +6 -4
  9. data/app/assets/config/loggable_activity_manifest.js +4 -0
  10. data/app/assets/javascripts/loggable_activity/application.js +2 -0
  11. data/app/assets/stylesheets/loggable_activity/application.scss +20 -0
  12. data/app/controllers/concerns/.keep +0 -0
  13. data/app/controllers/loggable_activity/activities_controller.rb +12 -0
  14. data/app/controllers/loggable_activity/application_controller.rb +6 -0
  15. data/app/helpers/loggable_activity/activities_helper.rb +17 -0
  16. data/app/helpers/loggable_activity/application_helper.rb +6 -0
  17. data/app/jobs/loggable_activity/application_job.rb +6 -0
  18. data/app/mailers/loggable_activity/application_mailer.rb +8 -0
  19. data/app/models/loggable_activity/application_record.rb +7 -0
  20. data/app/views/kaminari/kaminari-turbo-bootstrap/_first_page.html.erb +14 -0
  21. data/app/views/kaminari/kaminari-turbo-bootstrap/_gap.html.erb +8 -0
  22. data/app/views/kaminari/kaminari-turbo-bootstrap/_last_page.html.erb +13 -0
  23. data/app/views/kaminari/kaminari-turbo-bootstrap/_next_page.html.erb +13 -0
  24. data/app/views/kaminari/kaminari-turbo-bootstrap/_page.html.erb +14 -0
  25. data/app/views/kaminari/kaminari-turbo-bootstrap/_paginator.html.erb +27 -0
  26. data/app/views/kaminari/kaminari-turbo-bootstrap/_prev_page.html.erb +14 -0
  27. data/app/views/layouts/loggable_activity/application.html.erb +19 -0
  28. data/app/views/loggable_activity/activities/_activities.html.erb +56 -0
  29. data/app/views/loggable_activity/activities/index.html.erb +7 -0
  30. data/app/views/loggable_activity/activities/show.html.erb +2 -0
  31. data/config/initializers/kaminari_config.rb +14 -0
  32. data/config/routes.rb +7 -0
  33. data/{lib/generators/loggable_activity/templates/create_loggable_activities.rb → db/migrate/20240702092648_create_loggable_activity_tables.rb} +18 -10
  34. data/git-org/HEAD +1 -0
  35. data/git-org/config +7 -0
  36. data/git-org/description +1 -0
  37. data/git-org/hooks/applypatch-msg.sample +15 -0
  38. data/git-org/hooks/commit-msg.sample +24 -0
  39. data/git-org/hooks/fsmonitor-watchman.sample +174 -0
  40. data/git-org/hooks/post-update.sample +8 -0
  41. data/git-org/hooks/pre-applypatch.sample +14 -0
  42. data/git-org/hooks/pre-commit.sample +49 -0
  43. data/git-org/hooks/pre-merge-commit.sample +13 -0
  44. data/git-org/hooks/pre-push.sample +53 -0
  45. data/git-org/hooks/pre-rebase.sample +169 -0
  46. data/git-org/hooks/pre-receive.sample +24 -0
  47. data/git-org/hooks/prepare-commit-msg.sample +42 -0
  48. data/git-org/hooks/push-to-checkout.sample +78 -0
  49. data/git-org/hooks/update.sample +128 -0
  50. data/git-org/info/exclude +6 -0
  51. data/lib/loggable_activity/activity.rb +3 -3
  52. data/lib/{schemas → loggable_activity}/config_schema.json +3 -3
  53. data/lib/loggable_activity/configuration.rb +51 -75
  54. data/lib/loggable_activity/data_owner.rb +0 -1
  55. data/lib/loggable_activity/encryption.rb +16 -7
  56. data/lib/loggable_activity/encryption_key.rb +4 -7
  57. data/lib/loggable_activity/engine.rb +27 -0
  58. data/lib/loggable_activity/error.rb +0 -10
  59. data/lib/loggable_activity/hooks.rb +10 -5
  60. data/lib/loggable_activity/payload.rb +8 -11
  61. data/lib/loggable_activity/sanitizer.rb +6 -2
  62. data/lib/loggable_activity/services/base_payloads_builder.rb +14 -5
  63. data/lib/loggable_activity/services/destroy_payloads_builder.rb +2 -1
  64. data/lib/loggable_activity/services/payloads_builder.rb +9 -2
  65. data/lib/loggable_activity/services/update_payloads_builder.rb +30 -2
  66. data/lib/loggable_activity/version.rb +1 -1
  67. data/lib/loggable_activity.rb +51 -14
  68. data/lib/tasks/loggable_activity_tasks.rake +6 -0
  69. metadata +129 -117
  70. data/.document +0 -1
  71. data/.nojekyll +0 -1
  72. data/.rspec +0 -3
  73. data/CONSIDERTIONS.md +0 -129
  74. data/GETTING-STARTED.md +0 -119
  75. data/LICENSE.txt +0 -21
  76. data/PAYLOAD_EXAMPLE.md +0 -63
  77. data/ROADMAP.md +0 -23
  78. data/docs/LoggableActivity/Activity.html +0 -555
  79. data/docs/LoggableActivity/Configuration.html +0 -330
  80. data/docs/LoggableActivity/ConfigurationError.html +0 -148
  81. data/docs/LoggableActivity/DataOwner.html +0 -138
  82. data/docs/LoggableActivity/Encryption.html +0 -234
  83. data/docs/LoggableActivity/EncryptionError.html +0 -145
  84. data/docs/LoggableActivity/EncryptionKey.html +0 -351
  85. data/docs/LoggableActivity/Error.html +0 -145
  86. data/docs/LoggableActivity/Hooks.html +0 -759
  87. data/docs/LoggableActivity/Payload.html +0 -432
  88. data/docs/LoggableActivity/Services/BasePayloadsBuilder.html +0 -442
  89. data/docs/LoggableActivity/Services/DestroyPayloadsBuilder.html +0 -395
  90. data/docs/LoggableActivity/Services/PayloadsBuilder.html +0 -342
  91. data/docs/LoggableActivity/Services/UpdatePayloadsBuilder.html +0 -490
  92. data/docs/LoggableActivity/Services.html +0 -93
  93. data/docs/LoggableActivity.html +0 -102
  94. data/docs/created.rid +0 -14
  95. data/docs/css/fonts.css +0 -167
  96. data/docs/css/rdoc.css +0 -687
  97. data/docs/fonts/Lato-Light.ttf +0 -0
  98. data/docs/fonts/Lato-LightItalic.ttf +0 -0
  99. data/docs/fonts/Lato-Regular.ttf +0 -0
  100. data/docs/fonts/Lato-RegularItalic.ttf +0 -0
  101. data/docs/fonts/SourceCodePro-Bold.ttf +0 -0
  102. data/docs/fonts/SourceCodePro-Regular.ttf +0 -0
  103. data/docs/images/add.png +0 -0
  104. data/docs/images/arrow_up.png +0 -0
  105. data/docs/images/brick.png +0 -0
  106. data/docs/images/brick_link.png +0 -0
  107. data/docs/images/bug.png +0 -0
  108. data/docs/images/bullet_black.png +0 -0
  109. data/docs/images/bullet_toggle_minus.png +0 -0
  110. data/docs/images/bullet_toggle_plus.png +0 -0
  111. data/docs/images/date.png +0 -0
  112. data/docs/images/delete.png +0 -0
  113. data/docs/images/find.png +0 -0
  114. data/docs/images/loadingAnimation.gif +0 -0
  115. data/docs/images/macFFBgHack.png +0 -0
  116. data/docs/images/package.png +0 -0
  117. data/docs/images/page_green.png +0 -0
  118. data/docs/images/page_white_text.png +0 -0
  119. data/docs/images/page_white_width.png +0 -0
  120. data/docs/images/plugin.png +0 -0
  121. data/docs/images/ruby.png +0 -0
  122. data/docs/images/tag_blue.png +0 -0
  123. data/docs/images/tag_green.png +0 -0
  124. data/docs/images/transparent.png +0 -0
  125. data/docs/images/wrench.png +0 -0
  126. data/docs/images/wrench_orange.png +0 -0
  127. data/docs/images/zoom.png +0 -0
  128. data/docs/index.html +0 -99
  129. data/docs/js/darkfish.js +0 -97
  130. data/docs/js/navigation.js +0 -105
  131. data/docs/js/navigation.js.gz +0 -0
  132. data/docs/js/search.js +0 -110
  133. data/docs/js/search_index.js +0 -1
  134. data/docs/js/search_index.js.gz +0 -0
  135. data/docs/js/searcher.js +0 -229
  136. data/docs/js/searcher.js.gz +0 -0
  137. data/docs/table_of_contents.html +0 -617
  138. data/help/loggable_activity_help.txt +0 -19
  139. data/lib/generators/.DS_Store +0 -0
  140. data/lib/generators/loggable_activity/.DS_Store +0 -0
  141. data/lib/generators/loggable_activity/install_generator.rb +0 -109
  142. data/lib/generators/loggable_activity/templates/.DS_Store +0 -0
  143. data/lib/generators/loggable_activity/templates/binary_ids/create_loggable_activities.rb +0 -30
  144. data/lib/generators/loggable_activity/templates/config/locales/loggable_activity.en.yml +0 -36
  145. data/lib/generators/loggable_activity/templates/config/loggable_activity.yaml +0 -29
  146. data/lib/generators/loggable_activity/templates/loggable_activity.en.yaml +0 -36
  147. data/pkg/loggable_activity-0.1.35.gem +0 -0
  148. data/sig/loggable_activity.rbs +0 -4
  149. /data/{.rspec_status → app/assets/images/loggable_activity/.keep} +0 -0
  150. /data/lib/{generators/loggable_activity/templates → loggable_activity/concerns}/current_user.rb +0 -0
data/PAYLOAD_EXAMPLE.md DELETED
@@ -1,63 +0,0 @@
1
- # Example of a payload attributes
2
- ```
3
- {
4
- 'actor_type' => 'User'
5
- 'actor_id' => "12"
6
- 'action' => 'user.update'
7
- 'payloads' =>
8
- [
9
- {
10
- :related_to_activity_as => 'primary',
11
- :record_type => 'User',
12
- :record_id => 7,
13
- :route => 'show_user',
14
- 'attrs' => {
15
- :first_name =>
16
- 'changed' =>
17
- {
18
- 'from' => 'Vo5qr2ZXdnUNvZlFPzPivVnZ4JJMHvftPKR9F5ZidDQ=\n',
19
- 'to' => 'c4849GlicNeNw/7arZBRu6BCAYNlc7bjfHfpPv4Ra1I=\n'
20
- }
21
- last_name => 'Vo9apehbkapd=\n',
22
- 'age' => {
23
- 'from' => 'Whybq9OToAIYjYlP2gbXaieKDXH5Ut/uXc+M9R1OAk8=\n',
24
- 'to' => 'SUvxCLFBl3HUxqYihoj7VU3Ai/GK/ji5APJZNwbERqQ=\n'
25
- }
26
- }
27
- },
28
- {
29
- :related_to_activity_as => 'has_one'
30
- :record_type => 'Demo::UserProfile',
31
- :record_id => 7,
32
- :route => 'show_user'
33
- :attrs => {,
34
- :sex =>
35
- 'changed' =>
36
- {
37
- 'from' => 'aNY4G6dyaYyg7xiPwGMnGORsMvt8rzOKl7S+sEq1jYY=\n',
38
- 'to' => 'Pqo5vaojL1SV0DMLL5WQsuNjxcZY+Av/ckCbT00ZKUk=\n'
39
- },
40
- religion => 'christianity'
41
- }
42
- },
43
- {
44
- :related_to_activity_as => 'belongs_to,
45
- :changed =>
46
- :payload_attrs => {
47
- :from => {
48
- :state => 'current_association'
49
- :record_type => 'Demo::Address',
50
- :record_id => 7,
51
- :route => 'show_address'
52
-
53
-
54
- }
55
- :to => {
56
-
57
- }
58
-
59
- }
60
- }
61
- ]
62
- }
63
- ```
data/ROADMAP.md DELETED
@@ -1,23 +0,0 @@
1
- # Roadmap
2
- Outline of steps to get the LoggableActivity adapted.
3
-
4
- ### Demo project
5
- Nothing is better than gain som experience by getting som real world tests and experiences.
6
- <br/>
7
- Try the [Live Demo]("https://loggableactivity-efe7b931c886.herokuapp.com/") here or download it from [Github]("https://github.com/maxgronlund/LoggableActivityDemoApp") here
8
-
9
-
10
- ### Open Source
11
- More eyes and brains on the project wil make it mature and better.
12
-
13
- ### Investigations
14
- - Does there exists a protocol for activity logging
15
- - Will a bigger company like platformatec sponsor the project
16
- - Legal approval, official, medical approval.
17
- - RFC for protocol
18
- - Commercial potentials, business models.
19
- - Explainers
20
- - Documentation RDoc
21
- - Rest API
22
- - GraphQL API
23
- - Integration with other languages, node, elixir...
@@ -1,555 +0,0 @@
1
- <!DOCTYPE html>
2
-
3
- <html>
4
- <head>
5
- <meta charset="UTF-8">
6
-
7
- <title>class LoggableActivity::Activity - RDoc Documentation</title>
8
-
9
- <script type="text/javascript">
10
- var rdoc_rel_prefix = "../";
11
- var index_rel_prefix = "../";
12
- </script>
13
-
14
- <script src="../js/navigation.js" defer></script>
15
- <script src="../js/search.js" defer></script>
16
- <script src="../js/search_index.js" defer></script>
17
- <script src="../js/searcher.js" defer></script>
18
- <script src="../js/darkfish.js" defer></script>
19
-
20
- <link href="../css/fonts.css" rel="stylesheet">
21
- <link href="../css/rdoc.css" rel="stylesheet">
22
-
23
-
24
- <body id="top" role="document" class="class">
25
- <nav role="navigation">
26
- <div id="project-navigation">
27
- <div id="home-section" role="region" title="Quick navigation" class="nav-section">
28
- <h2>
29
- <a href="../index.html" rel="home">Home</a>
30
- </h2>
31
-
32
- <div id="table-of-contents-navigation">
33
- <a href="../table_of_contents.html#pages">Pages</a>
34
- <a href="../table_of_contents.html#classes">Classes</a>
35
- <a href="../table_of_contents.html#methods">Methods</a>
36
- </div>
37
- </div>
38
-
39
- <div id="search-section" role="search" class="project-section initially-hidden">
40
- <form action="#" method="get" accept-charset="utf-8">
41
- <div id="search-field-wrapper">
42
- <input id="search-field" role="combobox" aria-label="Search"
43
- aria-autocomplete="list" aria-controls="search-results"
44
- type="text" name="search" placeholder="Search (/) for a class, method, ..." spellcheck="false"
45
- title="Type to search, Up and Down to navigate, Enter to load">
46
- </div>
47
-
48
- <ul id="search-results" aria-label="Search Results"
49
- aria-busy="false" aria-expanded="false"
50
- aria-atomic="false" class="initially-hidden"></ul>
51
- </form>
52
- </div>
53
-
54
- </div>
55
-
56
-
57
-
58
- <div id="class-metadata">
59
-
60
-
61
- <div id="parent-class-section" class="nav-section">
62
- <h3>Parent</h3>
63
-
64
- <p class="link">ActiveRecord::Base
65
- </div>
66
-
67
-
68
-
69
-
70
- <!-- Method Quickref -->
71
- <div id="method-list-section" class="nav-section">
72
- <h3>Methods</h3>
73
-
74
- <ul class="link-list" role="directory">
75
- <li ><a href="#method-c-activities_for_actor">::activities_for_actor</a>
76
- <li ><a href="#method-c-last">::last</a>
77
- <li ><a href="#method-c-latest">::latest</a>
78
- <li ><a href="#method-i-actor_deleted-3F">#actor_deleted?</a>
79
- <li ><a href="#method-i-actor_display_name">#actor_display_name</a>
80
- <li ><a href="#method-i-actor_secret_key">#actor_secret_key</a>
81
- <li ><a href="#method-i-attrs">#attrs</a>
82
- <li ><a href="#method-i-must_have_at_least_one_payload">#must_have_at_least_one_payload</a>
83
- <li ><a href="#method-i-ordered_payloads">#ordered_payloads</a>
84
- <li ><a href="#method-i-payloads_attrs">#payloads_attrs</a>
85
- <li ><a href="#method-i-primary_payload">#primary_payload</a>
86
- <li ><a href="#method-i-primary_route">#primary_route</a>
87
- <li ><a href="#method-i-record_display_name">#record_display_name</a>
88
- <li ><a href="#method-i-record_key">#record_key</a>
89
- </ul>
90
- </div>
91
-
92
- </div>
93
- </nav>
94
-
95
- <main role="main" aria-labelledby="class-LoggableActivity::Activity">
96
- <h1 id="class-LoggableActivity::Activity" class="class">
97
- class LoggableActivity::Activity
98
- </h1>
99
-
100
- <section class="description">
101
-
102
- <p>Represents one action in the activity log.</p>
103
-
104
- </section>
105
-
106
- <section id="5Buntitled-5D" class="documentation-section">
107
-
108
-
109
-
110
-
111
-
112
- <section id="public-class-5Buntitled-5D-method-details" class="method-section">
113
- <header>
114
- <h3>Public Class Methods</h3>
115
- </header>
116
-
117
- <div id="method-c-activities_for_actor" class="method-detail ">
118
- <div class="method-header">
119
- <div class="method-heading">
120
- <span class="method-name">activities_for_actor</span><span
121
- class="method-args">(actor, limit = 20, params = { offset: 0 })</span>
122
- <span class="method-click-advice">click to toggle source</span>
123
- </div>
124
- </div>
125
-
126
- <div class="method-description">
127
- <p>Returns a list of activities for a given actor.</p>
128
-
129
- <div class="method-source-code" id="activities_for_actor-source">
130
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 124</span>
131
- <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> })
132
- <span class="ruby-operator">::</span><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>)
133
- <span class="ruby-keyword">end</span></pre>
134
- </div>
135
- </div>
136
-
137
-
138
- </div>
139
-
140
- <div id="method-c-last" class="method-detail ">
141
- <div class="method-header">
142
- <div class="method-heading">
143
- <span class="method-name">last</span><span
144
- class="method-args">(limit = 1)</span>
145
- <span class="method-click-advice">click to toggle source</span>
146
- </div>
147
- </div>
148
-
149
- <div class="method-description">
150
- <p>Returns the last activity. This is done to support of UUID primary keys.</p>
151
-
152
- <div class="method-source-code" id="last-source">
153
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 142</span>
154
- <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>)
155
- <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>
156
-
157
- <span class="ruby-identifier">latest</span>(<span class="ruby-identifier">limit</span>)
158
- <span class="ruby-keyword">end</span></pre>
159
- </div>
160
- </div>
161
-
162
-
163
- </div>
164
-
165
- <div id="method-c-latest" class="method-detail ">
166
- <div class="method-header">
167
- <div class="method-heading">
168
- <span class="method-name">latest</span><span
169
- class="method-args">(limit = 20, params = { offset: 0 })</span>
170
- <span class="method-click-advice">click to toggle source</span>
171
- </div>
172
- </div>
173
-
174
- <div class="method-description">
175
- <p>Returns a list of activities ordered by creation date. This is done to support UUID primary keys.</p>
176
-
177
- <div class="method-source-code" id="latest-source">
178
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 130</span>
179
- <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> })
180
- <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>
181
- <span class="ruby-operator">::</span><span class="ruby-constant">LoggableActivity</span><span class="ruby-operator">::</span><span class="ruby-constant">Activity</span>
182
- .<span class="ruby-identifier">all</span>
183
- .<span class="ruby-identifier">order</span>(<span class="ruby-value">created_at:</span> <span class="ruby-value">:desc</span>)
184
- .<span class="ruby-identifier">includes</span>(<span class="ruby-value">payloads:</span> <span class="ruby-value">:encryption_key</span>)
185
- .<span class="ruby-identifier">offset</span>(<span class="ruby-identifier">offset</span>)
186
- .<span class="ruby-identifier">limit</span>(<span class="ruby-identifier">limit</span>)
187
- <span class="ruby-keyword">end</span></pre>
188
- </div>
189
- </div>
190
-
191
-
192
- </div>
193
-
194
- </section>
195
-
196
- <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
197
- <header>
198
- <h3>Public Instance Methods</h3>
199
- </header>
200
-
201
- <div id="method-i-actor_display_name" class="method-detail ">
202
- <div class="method-header">
203
- <div class="method-heading">
204
- <span class="method-name">actor_display_name</span><span
205
- class="method-args">()</span>
206
- <span class="method-click-advice">click to toggle source</span>
207
- </div>
208
- </div>
209
-
210
- <div class="method-description">
211
- <p>Returns the display name for a actor. what method to use if defined in ‘/config/loggable_activity.yaml’</p>
212
-
213
- <p>Example:</p>
214
-
215
- <pre class="ruby"><span class="ruby-ivar">@activity</span>.<span class="ruby-identifier">actor_display_name</span>
216
- </pre>
217
-
218
- <p>Returns:</p>
219
-
220
- <pre class="ruby"><span class="ruby-string">&quot;Elvis Presley&quot;</span>
221
- </pre>
222
-
223
- <div class="method-source-code" id="actor_display_name-source">
224
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 117</span>
225
- <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">actor_display_name</span>
226
- <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">actor_deleted?</span>
227
-
228
- <span class="ruby-operator">::</span><span class="ruby-constant">LoggableActivity</span><span class="ruby-operator">::</span><span class="ruby-constant">Encryption</span>.<span class="ruby-identifier">decrypt</span>(<span class="ruby-identifier">encrypted_actor_name</span>, <span class="ruby-identifier">actor_secret_key</span>)
229
- <span class="ruby-keyword">end</span></pre>
230
- </div>
231
- </div>
232
-
233
-
234
- </div>
235
-
236
- <div id="method-i-attrs" class="method-detail ">
237
- <div class="method-header">
238
- <div class="method-heading">
239
- <span class="method-name">attrs</span><span
240
- class="method-args">()</span>
241
- <span class="method-click-advice">click to toggle source</span>
242
- </div>
243
- </div>
244
-
245
- <div class="method-description">
246
- <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>
247
-
248
- <p>Each hash in the array contains:</p>
249
- <ul><li>
250
- <p>:record_type: The class name of the record.</p>
251
- </li><li>
252
- <p>:related_to_activity_as: A descriptor of the payload’s role (e.g., ‘primary_payload’ or ‘current_association’).</p>
253
- </li><li>
254
- <p>:attrs: A hash of the record’s attributes.</p>
255
- </li></ul>
256
-
257
- <p>Example usage:</p>
258
-
259
- <pre class="ruby"><span class="ruby-ivar">@activity</span>.<span class="ruby-identifier">attrs</span>
260
- </pre>
261
-
262
- <p>Sample return value:</p>
263
-
264
- <pre>[
265
- { record_type: MODEL_NAME, related_to_activity_as: &quot;primary_payload&quot;, attrs: { &quot;KEY&quot; =&gt; &quot;VALUE&quot;, ... } },
266
- { record_type: MODEL_NAME, related_to_activity_as: &quot;current_association&quot;, attrs: { &quot;KEY&quot; =&gt; &quot;VALUE&quot;, ... } },
267
- ...
268
- ]</pre>
269
-
270
- <div class="method-source-code" id="attrs-source">
271
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 37</span>
272
- <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">attrs</span>
273
- {
274
- <span class="ruby-value">actor_type:</span>,
275
- <span class="ruby-value">actor_id:</span>,
276
- <span class="ruby-value">action:</span>,
277
- <span class="ruby-value">actor_display_name:</span>,
278
- <span class="ruby-value">record_display_name:</span>,
279
- <span class="ruby-value">payloads:</span> <span class="ruby-identifier">payloads_attrs</span>
280
- }
281
- <span class="ruby-keyword">end</span></pre>
282
- </div>
283
- </div>
284
-
285
-
286
- </div>
287
-
288
- <div id="method-i-payloads_attrs" class="method-detail ">
289
- <div class="method-header">
290
- <div class="method-heading">
291
- <span class="method-name">payloads_attrs</span><span
292
- class="method-args">()</span>
293
- <span class="method-click-advice">click to toggle source</span>
294
- </div>
295
- </div>
296
-
297
- <div class="method-description">
298
-
299
-
300
- <div class="method-source-code" id="payloads_attrs-source">
301
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 48</span>
302
- <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">payloads_attrs</span>
303
- <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>
304
- {
305
- <span class="ruby-value">related_to_activity_as:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">related_to_activity_as</span>,
306
- <span class="ruby-value">record_type:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">record_type</span>,
307
- <span class="ruby-value">record_id:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">deleted?</span> <span class="ruby-operator">?</span> <span class="ruby-keyword">nil</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">record_id</span>,
308
- <span class="ruby-value">attrs:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">attrs</span>,
309
- <span class="ruby-value">route:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">payload_route</span>,
310
- <span class="ruby-value">record_display_name:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">record_display_name</span>,
311
- <span class="ruby-value">current_payload:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">current_payload</span>,
312
- <span class="ruby-value">data_owner:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">data_owner</span>
313
- }
314
- <span class="ruby-keyword">end</span>
315
- <span class="ruby-keyword">end</span></pre>
316
- </div>
317
- </div>
318
-
319
-
320
- </div>
321
-
322
- <div id="method-i-primary_route" class="method-detail ">
323
- <div class="method-header">
324
- <div class="method-heading">
325
- <span class="method-name">primary_route</span><span
326
- class="method-args">()</span>
327
- <span class="method-click-advice">click to toggle source</span>
328
- </div>
329
- </div>
330
-
331
- <div class="method-description">
332
- <p>Returns the path for the activity.</p>
333
-
334
- <p>Example:</p>
335
-
336
- <pre class="ruby"><span class="ruby-ivar">@activity</span>.<span class="ruby-identifier">path</span>
337
- </pre>
338
-
339
- <p>Returns:</p>
340
-
341
- <pre class="ruby"><span class="ruby-string">&quot;/path/to/activity&quot;</span>
342
- </pre>
343
-
344
- <div class="method-source-code" id="primary_route-source">
345
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 104</span>
346
- <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">primary_route</span>
347
- <span class="ruby-identifier">primary_payload</span>.<span class="ruby-identifier">payload_route</span>
348
- <span class="ruby-keyword">end</span></pre>
349
- </div>
350
- </div>
351
-
352
-
353
- </div>
354
-
355
- <div id="method-i-record_display_name" class="method-detail ">
356
- <div class="method-header">
357
- <div class="method-heading">
358
- <span class="method-name">record_display_name</span><span
359
- class="method-args">()</span>
360
- <span class="method-click-advice">click to toggle source</span>
361
- </div>
362
- </div>
363
-
364
- <div class="method-description">
365
- <p>Returns the display name for a record. what method to use if defined in ‘/config/loggable_activity.yaml’</p>
366
-
367
- <p>Example:</p>
368
-
369
- <pre class="ruby"><span class="ruby-ivar">@activity</span>.<span class="ruby-identifier">record_display_name</span>
370
- </pre>
371
-
372
- <p>Returns:</p>
373
-
374
- <pre class="ruby"><span class="ruby-string">&quot;David Bowie&quot;</span>
375
- </pre>
376
-
377
- <div class="method-source-code" id="record_display_name-source">
378
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 91</span>
379
- <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">record_display_name</span>
380
- <span class="ruby-identifier">primary_payload</span>.<span class="ruby-identifier">record_display_name</span>
381
- <span class="ruby-keyword">end</span></pre>
382
- </div>
383
- </div>
384
-
385
-
386
- </div>
387
-
388
- </section>
389
-
390
- <section id="private-instance-5Buntitled-5D-method-details" class="method-section">
391
- <header>
392
- <h3>Private Instance Methods</h3>
393
- </header>
394
-
395
- <div id="method-i-actor_deleted-3F" class="method-detail ">
396
- <div class="method-header">
397
- <div class="method-heading">
398
- <span class="method-name">actor_deleted?</span><span
399
- class="method-args">()</span>
400
- <span class="method-click-advice">click to toggle source</span>
401
- </div>
402
- </div>
403
-
404
- <div class="method-description">
405
- <p>Check if the actor is deleted. If the actor is deleted, it will return true. This way we don’t rely on access to the main DB to check if the actor is deleted.</p>
406
-
407
- <div class="method-source-code" id="actor_deleted-3F-source">
408
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 177</span>
409
- <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">actor_deleted?</span>
410
- <span class="ruby-identifier">actor_secret_key</span>.<span class="ruby-identifier">nil?</span>
411
- <span class="ruby-keyword">end</span></pre>
412
- </div>
413
- </div>
414
-
415
-
416
- </div>
417
-
418
- <div id="method-i-actor_secret_key" class="method-detail ">
419
- <div class="method-header">
420
- <div class="method-heading">
421
- <span class="method-name">actor_secret_key</span><span
422
- class="method-args">()</span>
423
- <span class="method-click-advice">click to toggle source</span>
424
- </div>
425
- </div>
426
-
427
- <div class="method-description">
428
- <p>Returns the key for the actor.</p>
429
-
430
- <div class="method-source-code" id="actor_secret_key-source">
431
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 182</span>
432
- <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">actor_secret_key</span>
433
- <span class="ruby-comment"># @actor_key_secret_key ||=</span>
434
- <span class="ruby-operator">::</span><span class="ruby-constant">LoggableActivity</span><span class="ruby-operator">::</span><span class="ruby-constant">EncryptionKey</span>.<span class="ruby-identifier">for_record_by_type_and_id</span>(<span class="ruby-identifier">actor_type</span>, <span class="ruby-identifier">actor_id</span>)&amp;.<span class="ruby-identifier">secret_key</span>
435
- <span class="ruby-keyword">end</span></pre>
436
- </div>
437
- </div>
438
-
439
-
440
- </div>
441
-
442
- <div id="method-i-must_have_at_least_one_payload" class="method-detail ">
443
- <div class="method-header">
444
- <div class="method-heading">
445
- <span class="method-name">must_have_at_least_one_payload</span><span
446
- class="method-args">()</span>
447
- <span class="method-click-advice">click to toggle source</span>
448
- </div>
449
- </div>
450
-
451
- <div class="method-description">
452
- <p>Validates that the activity has at least one payload.</p>
453
-
454
- <div class="method-source-code" id="must_have_at_least_one_payload-source">
455
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 188</span>
456
- <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">must_have_at_least_one_payload</span>
457
- <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>
458
- <span class="ruby-keyword">end</span></pre>
459
- </div>
460
- </div>
461
-
462
-
463
- </div>
464
-
465
- <div id="method-i-ordered_payloads" class="method-detail ">
466
- <div class="method-header">
467
- <div class="method-heading">
468
- <span class="method-name">ordered_payloads</span><span
469
- class="method-args">()</span>
470
- <span class="method-click-advice">click to toggle source</span>
471
- </div>
472
- </div>
473
-
474
- <div class="method-description">
475
- <p>Returns payloads sorted by :related_to_activity_as.</p>
476
-
477
- <div class="method-source-code" id="ordered_payloads-source">
478
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 162</span>
479
- <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">ordered_payloads</span>
480
- <span class="ruby-comment"># payloads.order(related_to_activity_as: :desc)</span>
481
- <span class="ruby-identifier">payloads</span>
482
- <span class="ruby-keyword">end</span></pre>
483
- </div>
484
- </div>
485
-
486
-
487
- </div>
488
-
489
- <div id="method-i-primary_payload" class="method-detail ">
490
- <div class="method-header">
491
- <div class="method-heading">
492
- <span class="method-name">primary_payload</span><span
493
- class="method-args">()</span>
494
- <span class="method-click-advice">click to toggle source</span>
495
- </div>
496
- </div>
497
-
498
- <div class="method-description">
499
- <p>Returns the primary payload associated with the activity.</p>
500
-
501
- <p>Example usage:</p>
502
-
503
- <pre class="ruby"><span class="ruby-identifier">payload</span> = <span class="ruby-ivar">@activity</span>.<span class="ruby-identifier">primary_payload</span>
504
- <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">record_type</span> <span class="ruby-comment"># =&gt; &#39;SOMD_MODEL_NAME&#39;</span>
505
- </pre>
506
-
507
- <div class="method-source-code" id="primary_payload-source">
508
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 156</span>
509
- <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">primary_payload</span>
510
- <span class="ruby-identifier">related_to_activity_as</span> = <span class="ruby-node">%w[primary_payload primary_update_payload primary_destroy_payload]</span>
511
- <span class="ruby-identifier">payloads</span>.<span class="ruby-identifier">detect</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-identifier">related_to_activity_as</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">p</span>.<span class="ruby-identifier">related_to_activity_as</span>) }
512
- <span class="ruby-keyword">end</span></pre>
513
- </div>
514
- </div>
515
-
516
-
517
- </div>
518
-
519
- <div id="method-i-record_key" class="method-detail ">
520
- <div class="method-header">
521
- <div class="method-heading">
522
- <span class="method-name">record_key</span><span
523
- class="method-args">()</span>
524
- <span class="method-click-advice">click to toggle source</span>
525
- </div>
526
- </div>
527
-
528
- <div class="method-description">
529
- <p>Returns the key for the logged record.</p>
530
-
531
- <div class="method-source-code" id="record_key-source">
532
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 168</span>
533
- <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">record_key</span>
534
- <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>
535
-
536
- <span class="ruby-operator">::</span><span class="ruby-constant">LoggableActivity</span><span class="ruby-operator">::</span><span class="ruby-constant">EncryptionKey</span>.<span class="ruby-identifier">for_record</span>(<span class="ruby-identifier">record</span>)&amp;.<span class="ruby-identifier">secret_key</span>
537
- <span class="ruby-keyword">end</span></pre>
538
- </div>
539
- </div>
540
-
541
-
542
- </div>
543
-
544
- </section>
545
-
546
- </section>
547
- </main>
548
-
549
-
550
- <footer id="validator-badges" role="contentinfo">
551
- <p><a href="https://validator.w3.org/check/referer">Validate</a>
552
- <p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.6.2.
553
- <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
554
- </footer>
555
-