arkaan 2.6.0 → 2.7.4

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: a4990a4abb8ed39b023c47fed7560e0cad8aea739b74ed3a849ede6cf903f655
4
- data.tar.gz: c83e4c79e96321d68b2a95774d7203a649850c27883b4bd0aa2f758c9d7bc9ea
3
+ metadata.gz: e8f25bc056ed41bf018b590375a9feb4dbd06a8847acb85a186cfd5f8a2e3efc
4
+ data.tar.gz: '068890dbe12597fdd1cd7fae6be931492481ef3c851ade44c6f4f019691a1f61'
5
5
  SHA512:
6
- metadata.gz: 511fac191930fd795fc4f3961a249ef44159b0f21680f3a009efdd64b3e80c60a2de1046e938b73ae2eb6889a61e8355889367b6cb868ca2eb4f97eedd730c17
7
- data.tar.gz: 72b3aa7b65f4f2bc142c5cab8c4859ca569e57f978d261c50c20c7495724dadbb33f554a9eaf911c12b7774f9f7690bef956891d10250965383d901c748c1b35
6
+ metadata.gz: 291e88989f2e0fb4a07a1a6d9236038806af36d43c54deed06c1564a6d24636d66781fd06e3a94c2366a990d78aa80d56ab4d89ad20dc4579265f1d17ae05a7d
7
+ data.tar.gz: d584b02cfbdfab1f188a5c74d88da5d053a830218a9fa7dbc941c0610ccacef0a16081d99ebadcbbe48a0442030414226bd0e30de8e6de39a507a4d8567ec145
@@ -13,6 +13,7 @@ module Arkaan
13
13
  autoload :Chatroom , 'arkaan/chatroom'
14
14
  autoload :Chatrooms , 'arkaan/chatrooms'
15
15
  autoload :Concerns , 'arkaan/concerns'
16
+ autoload :Event , 'arkaan/event'
16
17
  autoload :Factories , 'arkaan/factories'
17
18
  autoload :Files , 'arkaan/files'
18
19
  autoload :Monitoring , 'arkaan/monitoring'
@@ -51,14 +51,18 @@ module Arkaan
51
51
  # @param account [Arkaan::Account] the account of the creator for this campaign.
52
52
  def creator=(account)
53
53
  if !invitations.where(account: account).exists?
54
- Arkaan::Campaigns::Invitation.create(campaign: self, account: account, enum_status: :creator)
54
+ invitation = Arkaan::Campaigns::Invitation.create(
55
+ campaign: self,
56
+ account: account,
57
+ status: :creator
58
+ )
55
59
  end
56
60
  end
57
61
 
58
62
  # Getter for the creator account of this campaign.
59
63
  # @return [Arkaan::Account] the account of the player creating this campaign.
60
64
  def creator
61
- return invitations.where(enum_status: :creator).first.account
65
+ invitations.to_a.find(&:status_creator?).account
62
66
  end
63
67
 
64
68
  # Adds an error message if the account creating this campaign already has a campaign with the very same name.
@@ -83,7 +87,9 @@ module Arkaan
83
87
 
84
88
  # @return [Array<Arkaan::Campaigns::Invitation>] the players in this campaign.
85
89
  def players
86
- invitations.where(enum_status: :accepted)
90
+ invitations.to_a.select do |invitation|
91
+ [:creator, :accepted].include? invitation.enum_status
92
+ end
87
93
  end
88
94
 
89
95
  # @return [Integer] the number of players in this campaign.
@@ -1,15 +1,16 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Arkaan
2
4
  module Campaigns
3
- # An invitation is the linked between a player and a campaign, accepted or not.
5
+ # An invitation is the linked between a player and a campaign.
6
+ # It keeps the history of the interaction between the player and the campaign.
7
+ #
4
8
  # @author Vincent Courtois <courtois.vincent@outlook.com>
5
9
  class Invitation
6
10
  include Mongoid::Document
7
11
  include Mongoid::Timestamps
8
12
  include Arkaan::Concerns::Enumerable
9
-
10
- # @!attribute [rw] status
11
- # @return [Symbol] the current status of the invitation.
12
- enum_field :status, [:accepted, :blocked, :expelled, :ignored, :left, :pending, :refused, :request, :creator], default: :pending
13
+ include Arkaan::Concerns::Historizable
13
14
 
14
15
  # @!attribute [rw] account
15
16
  # @return [Arkaan::Account] the account the invitation has been issued to.
@@ -17,6 +18,12 @@ module Arkaan
17
18
  # @!attribute [rw] campaign
18
19
  # @return [Arkaan::Campaign] the campaign the invitation has been made in.
19
20
  belongs_to :campaign, class_name: 'Arkaan::Campaign', inverse_of: :invitations
21
+
22
+ # @!attribute [rw] status
23
+ # @return [Symbol] the current status of the invitation.
24
+ historize enum_field :status,
25
+ [:pending, :request, :accepted, :refused, :expelled, :left, :master, :creator],
26
+ default: :pending
20
27
  end
21
28
  end
22
- end
29
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Arkaan
2
4
  module Campaigns
3
5
  # A campaign tag is a string describing a characteristic of the campaign it's in.
@@ -13,9 +15,7 @@ module Arkaan
13
15
  # @return [Integer] the number of campaigns this tag is in, avoiding a join.
14
16
  field :count, type: Integer, default: 1
15
17
 
16
- validates :content,
17
- presence: {message: 'required'},
18
- uniqueness: {message: 'uniq'}
18
+ validates :content, presence: { message: 'required' }, uniqueness: { message: 'uniq' }
19
19
  end
20
20
  end
21
- end
21
+ end
@@ -5,6 +5,7 @@ module Arkaan
5
5
  autoload :Activable , 'arkaan/concerns/activable'
6
6
  autoload :Diagnosticable, 'arkaan/concerns/diagnosticable'
7
7
  autoload :Enumerable , 'arkaan/concerns/enumerable'
8
+ autoload :Historizable , 'arkaan/concerns/historizable'
8
9
  autoload :MimeTypable , 'arkaan/concerns/mime_typable'
9
10
  autoload :Premiumable , 'arkaan/concerns/premiumable'
10
11
  autoload :Sluggable , 'arkaan/concerns/sluggable'
@@ -14,7 +14,7 @@ module Arkaan
14
14
  # @param values [Array<Symbol>] the possible values of the enumerated field.
15
15
  # @param options [Hash<Symbol, Any>] the possible options for the field.
16
16
  def enum_field(field_name, values, options = {})
17
- field :"enum_#{field_name}", type: Symbol, default: options[:default]
17
+ returned = field :"enum_#{field_name}", type: Symbol, default: options[:default]
18
18
 
19
19
  validates :"enum_#{field_name}", inclusion: {in: values.map(&:to_sym), message: 'inclusion'}
20
20
 
@@ -37,6 +37,10 @@ module Arkaan
37
37
  self["enum_#{field_name}"] == value
38
38
  end
39
39
  end
40
+
41
+ # This is to make enumerations historizable by
42
+ # returning the field object created by Mongoid.
43
+ returned
40
44
  end
41
45
  end
42
46
  end
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Arkaan
4
+ module Concerns
5
+ # This module is what I call "a beautiful piece of Ruby engineering"
6
+ # It takes any mongoid field that you may have declared, and historizes
7
+ # it in a dedicated relation if this relation does not already exists.
8
+ #
9
+ # What it does exactly :
10
+ # - Creates the :history relation if it does not already exists.
11
+ # - Creates a method to check for changes of a specific attribute.
12
+ # - Check for changes at initialization to insert the first value.
13
+ # - Check for changes at update/save to store the history.
14
+ #
15
+ # @author Vincent Courtois <courtois.vincent@outlook.com>
16
+ module Historizable
17
+ extend ActiveSupport::Concern
18
+
19
+ # Adds an entry in the history table for the given field.
20
+ # It checks several things to make the history entry valid :
21
+ # - the new value is different from the old value
22
+ # - the old value is identical to the last recorded new value.
23
+ #
24
+ # @param field [String] the name of the field to historize
25
+ # @param from [Any] the old value before update
26
+ # @param to [Any] the new value after update.
27
+ def add_history(field:, from:, to:)
28
+ return if from == to
29
+ return if !history.empty? && history.order_by(:created_at.desc).first.to != from
30
+
31
+ event = Arkaan::Event.create(field: field, from: from, to: to, document: self)
32
+ event.save
33
+ end
34
+
35
+ # Submodule holding all the static methods add to the current subclass.
36
+ # @author Vincent Courtois <courtois.vincent@outlook.com>
37
+ module ClassMethods
38
+
39
+ # Takes the Mongoid declared field and creates the callbacks
40
+ # to intercept any value change and add it to the history.
41
+ # @field field [Mongoid::Fields::Standard] the Mongoid field to historize.
42
+ def historize(field)
43
+
44
+ unless relations.key?('history')
45
+ embeds_many :history, class_name: 'Arkaan::Event'
46
+ end
47
+
48
+ after_initialize do |doc|
49
+ add_history(field: field.name, from: nil, to: doc[field.name])
50
+ end
51
+
52
+ after_save do |doc|
53
+ if doc.changed_attributes.key?(field.name)
54
+ from = doc.changed_attributes[field.name]
55
+ add_history(field: field.name, from: from, to: doc[field.name])
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Arkaan
4
+ # An event is symbolizing a timestamped change in a model.
5
+ # It is recommended NOT to use this class directly but to use
6
+ # the Arkaan::Concerns::Historizable concern in a model.
7
+ #
8
+ # @author Vincent Courtois <courtois.vincent@outlook.com>
9
+ class Event
10
+ include Mongoid::Document
11
+ include Mongoid::Timestamps
12
+
13
+ # @!attribute [rw] field
14
+ # @return [String] the name of the field being historized
15
+ field :field, type: String
16
+ # @!attribute [rw] from
17
+ # @return [Any] the value of the field before update
18
+ field :from
19
+ # @!attribute [rw] to
20
+ # @return [Any] the value of the field after update
21
+ field :to
22
+
23
+ # @!attribute [rw] document
24
+ # @return [Any] the model in which the history is embedded
25
+ embedded_in :document, polymorphic: true, inverse_of: :history
26
+
27
+ validates :field, presence: { message: 'required' }
28
+ end
29
+ end
@@ -1,6 +1,7 @@
1
1
  module Arkaan
2
2
  module OAuth
3
- # An access token is the value assigned to the application to access the private data of an account.
3
+ # An access token is the value assigned to the application
4
+ # to access the data the user is allowed to access.
4
5
  # @author Vincent Courtois <courtois.vincent@outlook.com>
5
6
  class AccessToken
6
7
  include Mongoid::Document
@@ -15,11 +16,17 @@ module Arkaan
15
16
 
16
17
  # @!attribute [rw] authorization
17
18
  # @return [Arkaan::OAuth::Authorization] the authorization code that issued this token to the application for this user.
18
- belongs_to :authorization, class_name: 'Arkaan::OAuth::Authorization', inverse_of: :access_token
19
+ belongs_to :authorization, class_name: 'Arkaan::OAuth::Authorization', inverse_of: :tokens
19
20
 
20
21
  validates :value,
21
22
  presence: {message: 'required'},
22
23
  uniqueness: {message: 'uniq'}
24
+
25
+ # Checks if the current date is inferior to the creation date + expiration period
26
+ # @return [Boolean] TRUE if the token is expired, FALSE otherwise.
27
+ def expired?
28
+ created_at.to_time.to_i + expiration < Time.now.to_i
29
+ end
23
30
  end
24
31
  end
25
32
  end
@@ -11,7 +11,7 @@ module Arkaan
11
11
  field :name, type: String
12
12
  # @!attribute [rw] key
13
13
  # @return [String] the unique key for the application, identifying it when requesting a token for the API.
14
- field :key, type: String, default: ->{ SecureRandom.hex }
14
+ field :application_key, type: String, default: ->{ SecureRandom.hex }
15
15
  # @!attribute [rw] premium
16
16
  # @return [Boolean] a value indicating whether the application should automatically receive a token when an account is created, or not.
17
17
  field :premium, type: Boolean, default: false
@@ -31,7 +31,7 @@ module Arkaan
31
31
  length: {minimum: 6, message: 'minlength'},
32
32
  uniqueness: {message: 'uniq'}
33
33
 
34
- validates :key,
34
+ validates :application_key,
35
35
  presence: {message: 'required'},
36
36
  uniqueness: {message: 'uniq'}
37
37
 
@@ -1,6 +1,9 @@
1
1
  module Arkaan
2
2
  module OAuth
3
3
  # An OAuth authorization is granted by a user to an application to access its personal data.
4
+ # The application then transforms it into an access token to be able to send it with
5
+ # further requests, so that we know the user has authorized the application to access its data.
6
+ #
4
7
  # @author Vincent Courtois <courtois.vincent@outlook.com>
5
8
  class Authorization
6
9
  include Mongoid::Document
@@ -18,7 +21,7 @@ module Arkaan
18
21
  belongs_to :application, class_name: 'Arkaan::OAuth::Application', inverse_of: :authorizations
19
22
  # @!attribute [rw] token
20
23
  # @return [Arkaan::OAuth::AccessToken] the access token used further in the application process to access private data of the account.
21
- has_one :token, class_name: 'Arkaan::OAuth::AccessToken', inverse_of: :authorization
24
+ has_many :tokens, class_name: 'Arkaan::OAuth::AccessToken', inverse_of: :authorization
22
25
 
23
26
  validates :code,
24
27
  presence: {message: 'required'},
@@ -1,3 +1,3 @@
1
1
  module Arkaan
2
- VERSION = '2.6.0'
2
+ VERSION = '2.7.2'
3
3
  end
metadata CHANGED
@@ -1,239 +1,309 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arkaan
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.0
4
+ version: 2.7.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vincent Courtois
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-24 00:00:00.000000000 Z
11
+ date: 2020-10-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rspec
14
+ name: database_cleaner
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 3.6.0
19
+ version: 1.6.1
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 3.6.0
26
+ version: 1.6.1
27
27
  - !ruby/object:Gem::Dependency
28
- name: rspec-json_expectations
28
+ name: factory_bot
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 2.1.0
33
+ version: 6.1.0
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 2.1.0
40
+ version: 6.1.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: rack-test
42
+ name: factory_girl
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - '='
46
46
  - !ruby/object:Gem::Version
47
- version: 0.7.0
47
+ version: 4.8.1
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - '='
53
53
  - !ruby/object:Gem::Version
54
- version: 0.7.0
54
+ version: 4.8.1
55
55
  - !ruby/object:Gem::Dependency
56
- name: factory_girl
56
+ name: faker
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: 4.8.1
61
+ version: 2.13.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - '='
67
67
  - !ruby/object:Gem::Version
68
- version: 4.8.1
68
+ version: 2.13.0
69
69
  - !ruby/object:Gem::Dependency
70
- name: factory_bot
70
+ name: gems
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - '='
74
74
  - !ruby/object:Gem::Version
75
- version: 5.1.1
75
+ version: 1.2.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - '='
81
81
  - !ruby/object:Gem::Version
82
- version: 5.1.1
82
+ version: 1.2.0
83
83
  - !ruby/object:Gem::Dependency
84
- name: database_cleaner
84
+ name: gitlab
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - '='
88
88
  - !ruby/object:Gem::Version
89
- version: 1.6.1
89
+ version: 4.16.1
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - '='
95
95
  - !ruby/object:Gem::Version
96
- version: 1.6.1
96
+ version: 4.16.1
97
97
  - !ruby/object:Gem::Dependency
98
- name: simplecov
98
+ name: pry
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - '='
102
102
  - !ruby/object:Gem::Version
103
- version: 0.15.1
103
+ version: 0.13.1
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - '='
109
109
  - !ruby/object:Gem::Version
110
- version: 0.15.1
110
+ version: 0.13.1
111
111
  - !ruby/object:Gem::Dependency
112
- name: yard
112
+ name: rack
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - '='
116
116
  - !ruby/object:Gem::Version
117
- version: 0.9.20
117
+ version: 2.2.3
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - '='
123
123
  - !ruby/object:Gem::Version
124
- version: 0.9.20
124
+ version: 2.2.3
125
125
  - !ruby/object:Gem::Dependency
126
- name: pry
126
+ name: rack-test
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - '='
130
130
  - !ruby/object:Gem::Version
131
- version: 0.11.1
131
+ version: 1.1.0
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - '='
137
137
  - !ruby/object:Gem::Version
138
- version: 0.11.1
138
+ version: 1.1.0
139
139
  - !ruby/object:Gem::Dependency
140
- name: rack
140
+ name: rspec
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - '='
144
144
  - !ruby/object:Gem::Version
145
- version: 2.0.8
145
+ version: 3.9.0
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - '='
151
151
  - !ruby/object:Gem::Version
152
- version: 2.0.8
152
+ version: 3.9.0
153
153
  - !ruby/object:Gem::Dependency
154
- name: faker
154
+ name: rspec-json_expectations
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - '='
158
+ - !ruby/object:Gem::Version
159
+ version: 2.1.0
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - '='
165
+ - !ruby/object:Gem::Version
166
+ version: 2.1.0
167
+ - !ruby/object:Gem::Dependency
168
+ name: rspec_junit_formatter
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - '='
172
+ - !ruby/object:Gem::Version
173
+ version: 0.4.1
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - '='
179
+ - !ruby/object:Gem::Version
180
+ version: 0.4.1
181
+ - !ruby/object:Gem::Dependency
182
+ name: rubocop
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - '='
186
+ - !ruby/object:Gem::Version
187
+ version: 0.90.0
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - '='
193
+ - !ruby/object:Gem::Version
194
+ version: 0.90.0
195
+ - !ruby/object:Gem::Dependency
196
+ name: semantic
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - '='
200
+ - !ruby/object:Gem::Version
201
+ version: 1.6.1
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - '='
207
+ - !ruby/object:Gem::Version
208
+ version: 1.6.1
209
+ - !ruby/object:Gem::Dependency
210
+ name: simplecov
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - '='
214
+ - !ruby/object:Gem::Version
215
+ version: 0.19.0
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - '='
221
+ - !ruby/object:Gem::Version
222
+ version: 0.19.0
223
+ - !ruby/object:Gem::Dependency
224
+ name: yard
155
225
  requirement: !ruby/object:Gem::Requirement
156
226
  requirements:
157
227
  - - '='
158
228
  - !ruby/object:Gem::Version
159
- version: 2.10.0
229
+ version: 0.9.25
160
230
  type: :development
161
231
  prerelease: false
162
232
  version_requirements: !ruby/object:Gem::Requirement
163
233
  requirements:
164
234
  - - '='
165
235
  - !ruby/object:Gem::Version
166
- version: 2.10.0
236
+ version: 0.9.25
167
237
  - !ruby/object:Gem::Dependency
168
238
  name: mongoid
169
239
  requirement: !ruby/object:Gem::Requirement
170
240
  requirements:
171
241
  - - '='
172
242
  - !ruby/object:Gem::Version
173
- version: 7.0.1
243
+ version: 7.1.0
174
244
  type: :runtime
175
245
  prerelease: false
176
246
  version_requirements: !ruby/object:Gem::Requirement
177
247
  requirements:
178
248
  - - '='
179
249
  - !ruby/object:Gem::Version
180
- version: 7.0.1
250
+ version: 7.1.0
181
251
  - !ruby/object:Gem::Dependency
182
252
  name: activemodel
183
253
  requirement: !ruby/object:Gem::Requirement
184
254
  requirements:
185
255
  - - '='
186
256
  - !ruby/object:Gem::Version
187
- version: 5.2.3
257
+ version: 6.0.3.2
188
258
  type: :runtime
189
259
  prerelease: false
190
260
  version_requirements: !ruby/object:Gem::Requirement
191
261
  requirements:
192
262
  - - '='
193
263
  - !ruby/object:Gem::Version
194
- version: 5.2.3
264
+ version: 6.0.3.2
195
265
  - !ruby/object:Gem::Dependency
196
266
  name: activesupport
197
267
  requirement: !ruby/object:Gem::Requirement
198
268
  requirements:
199
269
  - - '='
200
270
  - !ruby/object:Gem::Version
201
- version: 5.2.3
271
+ version: 6.0.3.2
202
272
  type: :runtime
203
273
  prerelease: false
204
274
  version_requirements: !ruby/object:Gem::Requirement
205
275
  requirements:
206
276
  - - '='
207
277
  - !ruby/object:Gem::Version
208
- version: 5.2.3
278
+ version: 6.0.3.2
209
279
  - !ruby/object:Gem::Dependency
210
280
  name: bcrypt
211
281
  requirement: !ruby/object:Gem::Requirement
212
282
  requirements:
213
283
  - - '='
214
284
  - !ruby/object:Gem::Version
215
- version: 3.1.11
285
+ version: 3.1.13
216
286
  type: :runtime
217
287
  prerelease: false
218
288
  version_requirements: !ruby/object:Gem::Requirement
219
289
  requirements:
220
290
  - - '='
221
291
  - !ruby/object:Gem::Version
222
- version: 3.1.11
292
+ version: 3.1.13
223
293
  - !ruby/object:Gem::Dependency
224
294
  name: dotenv
225
295
  requirement: !ruby/object:Gem::Requirement
226
296
  requirements:
227
297
  - - '='
228
298
  - !ruby/object:Gem::Version
229
- version: 2.7.2
299
+ version: 2.7.6
230
300
  type: :runtime
231
301
  prerelease: false
232
302
  version_requirements: !ruby/object:Gem::Requirement
233
303
  requirements:
234
304
  - - '='
235
305
  - !ruby/object:Gem::Version
236
- version: 2.7.2
306
+ version: 2.7.6
237
307
  description: This gem holds the model layer for my table-top RPG games application.
238
308
  email: courtois.vincent@outlook.com
239
309
  executables: []
@@ -258,6 +328,7 @@ files:
258
328
  - lib/arkaan/concerns/activable.rb
259
329
  - lib/arkaan/concerns/diagnosticable.rb
260
330
  - lib/arkaan/concerns/enumerable.rb
331
+ - lib/arkaan/concerns/historizable.rb
261
332
  - lib/arkaan/concerns/mime_typable.rb
262
333
  - lib/arkaan/concerns/premiumable.rb
263
334
  - lib/arkaan/concerns/sluggable.rb
@@ -265,6 +336,7 @@ files:
265
336
  - lib/arkaan/decorators/errors.rb
266
337
  - lib/arkaan/decorators/errors/env_variable_missing.rb
267
338
  - lib/arkaan/decorators/gateway.rb
339
+ - lib/arkaan/event.rb
268
340
  - lib/arkaan/factories.rb
269
341
  - lib/arkaan/factories/errors.rb
270
342
  - lib/arkaan/factories/errors/gateway_not_found.rb
@@ -305,7 +377,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
305
377
  - !ruby/object:Gem::Version
306
378
  version: '0'
307
379
  requirements: []
308
- rubygems_version: 3.1.2
380
+ rubygems_version: 3.1.4
309
381
  signing_key:
310
382
  specification_version: 4
311
383
  summary: The model layer for my table-RPG application