demo_mode 1.4.0 → 1.5.0

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: f46c5ac419af565102df4efa36cc8383f847cbe680a48c12b362bbbde6c83417
4
- data.tar.gz: b202d52d608dfbcf1c09fc880d34597b99c457bba786db624d414c671ffe1291
3
+ metadata.gz: 8d43fe47b27be671211e69d0470a4ae3e0e4628d2b682e73cd106ca761699679
4
+ data.tar.gz: c2706ae38dedf43c9b72f18ff5e1668e615edabaec41e1c7bc6d03c049072c19
5
5
  SHA512:
6
- metadata.gz: 1da08b4e2d624471ac68b6417b16bd2217594d037d988906a80f6b6c760ddce5c576040c14fc97448efd766bf83da5a5d147fe35b0a216574cc642146bfa4852
7
- data.tar.gz: a6c9edbbc801d7976df372fbd2ecf6544bc9c64f89083a483bd8ea20f828b3c0f43177c899b618079ebc46de91b35e3e169616ff95cb72d270e6c7ce7669cf98
6
+ metadata.gz: dcf56f9adcd9918bc8228400cfe3e1eb4a3bc17ba731907c89aec3190767d68634c88936dfc24e3112b637e20c739f0da855d621e1d21bf938946dfcfe30ce3e
7
+ data.tar.gz: 2f4205fda9a3a1f4dba2131baf79d54e9b17039188b4d8db090a153be837348bb3d3a6ed0548b2c0036867535fe188cb6a46f3886dc9050130c46a02d5f31854
data/README.md CHANGED
@@ -439,8 +439,8 @@ modifies every persona you generate:
439
439
 
440
440
  ```ruby
441
441
  DemoMode.configure do
442
- around_persona_generation do |generator|
443
- generator.call.tap do |account|
442
+ around_persona_generation do |generator, options|
443
+ generator.call(options).tap do |account|
444
444
  account.update!(metadata: '123')
445
445
  end
446
446
  end
@@ -25,7 +25,7 @@ module DemoMode
25
25
 
26
26
  def create
27
27
  @session = Session.new(create_params)
28
- @session.save_and_generate_account_later!
28
+ @session.save_and_generate_account_later!(**options_params.to_unsafe_h.deep_symbolize_keys)
29
29
  session[:demo_session] = { 'id' => @session.id, 'last_request_at' => Time.zone.now }
30
30
  respond_to do |f|
31
31
  f.html { redirect_to @session }
@@ -77,5 +77,9 @@ module DemoMode
77
77
  def create_params
78
78
  params.require(:session).permit(:persona_name, :variant)
79
79
  end
80
+
81
+ def options_params
82
+ params.fetch(:options, {}).permit!
83
+ end
80
84
  end
81
85
  end
@@ -2,12 +2,12 @@
2
2
 
3
3
  module DemoMode
4
4
  class AccountGenerationJob < DemoMode.base_job_name.constantize
5
- def perform(session)
5
+ def perform(session, **options)
6
6
  session.with_lock do
7
7
  persona = session.persona
8
8
  raise "Unknown persona: #{session.persona_name}" if persona.blank?
9
9
 
10
- signinable = persona.generate!(variant: session.variant, password: session.signinable_password)
10
+ signinable = persona.generate!(variant: session.variant, password: session.signinable_password, options: options)
11
11
  session.update!(signinable: signinable)
12
12
  end
13
13
  raise "Failed to create signinable persona!" if session.signinable.blank?
@@ -25,17 +25,17 @@ module DemoMode
25
25
  DemoMode.personas.find { |p| p.name.to_s == persona_name.to_s }
26
26
  end
27
27
 
28
- def save_and_generate_account!
28
+ def save_and_generate_account!(**options)
29
29
  transaction do
30
30
  save!
31
- AccountGenerationJob.perform_now(self)
31
+ AccountGenerationJob.perform_now(self, **options)
32
32
  end
33
33
  end
34
34
 
35
- def save_and_generate_account_later!
35
+ def save_and_generate_account_later!(**options)
36
36
  transaction do
37
37
  save!
38
- AccountGenerationJob.perform_later(self)
38
+ AccountGenerationJob.perform_later(self, **options)
39
39
  end
40
40
  end
41
41
 
@@ -73,7 +73,7 @@ module DemoMode
73
73
  if block
74
74
  @around_persona_generation = block
75
75
  else
76
- @around_persona_generation ||= :call.to_proc
76
+ @around_persona_generation ||= ->(generator, options = {}) { generator.call(options) }
77
77
  end
78
78
  end
79
79
 
@@ -54,11 +54,11 @@ module DemoMode
54
54
  @variants ||= {}.with_indifferent_access
55
55
  end
56
56
 
57
- def generate!(variant: :default, password: nil)
57
+ def generate!(variant: :default, password: nil, options: {})
58
58
  variant = variants[variant]
59
59
  CleverSequence.reset! if defined?(CleverSequence)
60
60
  DemoMode.current_password = password if password
61
- DemoMode.around_persona_generation.call(variant.signinable_generator)
61
+ DemoMode.around_persona_generation.call(variant.signinable_generator, **options)
62
62
  ensure
63
63
  DemoMode.current_password = nil
64
64
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DemoMode
4
- VERSION = '1.4.0'
4
+ VERSION = '1.5.0'
5
5
  end
data/lib/demo_mode.rb CHANGED
@@ -47,6 +47,8 @@ module DemoMode
47
47
  end
48
48
 
49
49
  def session_url(session)
50
+ Rails.application.reload_routes_unless_loaded if Rails.gem_version >= Gem::Version.new('8.0')
51
+
50
52
  routes = DemoMode::Engine.routes
51
53
 
52
54
  options = routes.default_url_options.presence
metadata CHANGED
@@ -1,15 +1,95 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: demo_mode
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Griffith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-07-23 00:00:00.000000000 Z
11
+ date: 2025-01-27 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: actionpack
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '6.1'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '8.1'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '6.1'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '8.1'
33
+ - !ruby/object:Gem::Dependency
34
+ name: activejob
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '6.1'
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '8.1'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '6.1'
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '8.1'
53
+ - !ruby/object:Gem::Dependency
54
+ name: activerecord
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: '6.1'
60
+ - - "<"
61
+ - !ruby/object:Gem::Version
62
+ version: '8.1'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '6.1'
70
+ - - "<"
71
+ - !ruby/object:Gem::Version
72
+ version: '8.1'
73
+ - !ruby/object:Gem::Dependency
74
+ name: activesupport
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '6.1'
80
+ - - "<"
81
+ - !ruby/object:Gem::Version
82
+ version: '8.1'
83
+ type: :runtime
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '6.1'
90
+ - - "<"
91
+ - !ruby/object:Gem::Version
92
+ version: '8.1'
13
93
  - !ruby/object:Gem::Dependency
14
94
  name: cli-ui
15
95
  requirement: !ruby/object:Gem::Requirement
@@ -25,12 +105,15 @@ dependencies:
25
105
  - !ruby/object:Gem::Version
26
106
  version: '0'
27
107
  - !ruby/object:Gem::Dependency
28
- name: rails
108
+ name: railties
29
109
  requirement: !ruby/object:Gem::Requirement
30
110
  requirements:
31
111
  - - ">="
32
112
  - !ruby/object:Gem::Version
33
113
  version: '6.1'
114
+ - - "<"
115
+ - !ruby/object:Gem::Version
116
+ version: '8.1'
34
117
  type: :runtime
35
118
  prerelease: false
36
119
  version_requirements: !ruby/object:Gem::Requirement
@@ -38,6 +121,9 @@ dependencies:
38
121
  - - ">="
39
122
  - !ruby/object:Gem::Version
40
123
  version: '6.1'
124
+ - - "<"
125
+ - !ruby/object:Gem::Version
126
+ version: '8.1'
41
127
  - !ruby/object:Gem::Dependency
42
128
  name: sprockets-rails
43
129
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +152,166 @@ dependencies:
66
152
  - - ">="
67
153
  - !ruby/object:Gem::Version
68
154
  version: '0'
155
+ - !ruby/object:Gem::Dependency
156
+ name: actionmailer
157
+ requirement: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ version: '6.1'
162
+ - - "<"
163
+ - !ruby/object:Gem::Version
164
+ version: '8.1'
165
+ type: :development
166
+ prerelease: false
167
+ version_requirements: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ version: '6.1'
172
+ - - "<"
173
+ - !ruby/object:Gem::Version
174
+ version: '8.1'
175
+ - !ruby/object:Gem::Dependency
176
+ name: appraisal
177
+ requirement: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ type: :development
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
189
+ - !ruby/object:Gem::Dependency
190
+ name: betterlint
191
+ requirement: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - ">="
194
+ - !ruby/object:Gem::Version
195
+ version: '0'
196
+ type: :development
197
+ prerelease: false
198
+ version_requirements: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - ">="
201
+ - !ruby/object:Gem::Version
202
+ version: '0'
203
+ - !ruby/object:Gem::Dependency
204
+ name: capybara
205
+ requirement: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ">="
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
210
+ type: :development
211
+ prerelease: false
212
+ version_requirements: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - ">="
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
217
+ - !ruby/object:Gem::Dependency
218
+ name: combustion
219
+ requirement: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - ">="
222
+ - !ruby/object:Gem::Version
223
+ version: '0'
224
+ type: :development
225
+ prerelease: false
226
+ version_requirements: !ruby/object:Gem::Requirement
227
+ requirements:
228
+ - - ">="
229
+ - !ruby/object:Gem::Version
230
+ version: '0'
231
+ - !ruby/object:Gem::Dependency
232
+ name: cuprite
233
+ requirement: !ruby/object:Gem::Requirement
234
+ requirements:
235
+ - - ">="
236
+ - !ruby/object:Gem::Version
237
+ version: '0'
238
+ type: :development
239
+ prerelease: false
240
+ version_requirements: !ruby/object:Gem::Requirement
241
+ requirements:
242
+ - - ">="
243
+ - !ruby/object:Gem::Version
244
+ version: '0'
245
+ - !ruby/object:Gem::Dependency
246
+ name: factory_bot
247
+ requirement: !ruby/object:Gem::Requirement
248
+ requirements:
249
+ - - ">="
250
+ - !ruby/object:Gem::Version
251
+ version: '0'
252
+ type: :development
253
+ prerelease: false
254
+ version_requirements: !ruby/object:Gem::Requirement
255
+ requirements:
256
+ - - ">="
257
+ - !ruby/object:Gem::Version
258
+ version: '0'
259
+ - !ruby/object:Gem::Dependency
260
+ name: net-smtp
261
+ requirement: !ruby/object:Gem::Requirement
262
+ requirements:
263
+ - - ">="
264
+ - !ruby/object:Gem::Version
265
+ version: '0'
266
+ type: :development
267
+ prerelease: false
268
+ version_requirements: !ruby/object:Gem::Requirement
269
+ requirements:
270
+ - - ">="
271
+ - !ruby/object:Gem::Version
272
+ version: '0'
273
+ - !ruby/object:Gem::Dependency
274
+ name: rspec-rails
275
+ requirement: !ruby/object:Gem::Requirement
276
+ requirements:
277
+ - - ">="
278
+ - !ruby/object:Gem::Version
279
+ version: '0'
280
+ type: :development
281
+ prerelease: false
282
+ version_requirements: !ruby/object:Gem::Requirement
283
+ requirements:
284
+ - - ">="
285
+ - !ruby/object:Gem::Version
286
+ version: '0'
287
+ - !ruby/object:Gem::Dependency
288
+ name: uncruft
289
+ requirement: !ruby/object:Gem::Requirement
290
+ requirements:
291
+ - - ">="
292
+ - !ruby/object:Gem::Version
293
+ version: '0'
294
+ type: :development
295
+ prerelease: false
296
+ version_requirements: !ruby/object:Gem::Requirement
297
+ requirements:
298
+ - - ">="
299
+ - !ruby/object:Gem::Version
300
+ version: '0'
301
+ - !ruby/object:Gem::Dependency
302
+ name: webrick
303
+ requirement: !ruby/object:Gem::Requirement
304
+ requirements:
305
+ - - ">="
306
+ - !ruby/object:Gem::Version
307
+ version: '0'
308
+ type: :development
309
+ prerelease: false
310
+ version_requirements: !ruby/object:Gem::Requirement
311
+ requirements:
312
+ - - ">="
313
+ - !ruby/object:Gem::Version
314
+ version: '0'
69
315
  description: A configurable demo mode for your Rails app. Specify your desired "personas"
70
316
  and DemoMode will handle the rest.
71
317
  email:
@@ -133,7 +379,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
379
  - !ruby/object:Gem::Version
134
380
  version: '0'
135
381
  requirements: []
136
- rubygems_version: 3.4.22
382
+ rubygems_version: 3.5.23
137
383
  signing_key:
138
384
  specification_version: 4
139
385
  summary: A configurable demo mode for your Rails app.