Module: DemoMode

Defined in:
lib/demo_mode.rb,
lib/demo_mode/config.rb,
lib/demo_mode/engine.rb,
lib/demo_mode/persona.rb,
lib/demo_mode/version.rb,
app/models/demo_mode/session.rb,
lib/demo_mode/factory_bot_ext.rb,
app/jobs/demo_mode/pool_hydration_job.rb,
app/jobs/demo_mode/account_generation_job.rb,
lib/generators/demo_mode/install_generator.rb,
app/controllers/concerns/demo_mode/demoable.rb,
app/controllers/demo_mode/sessions_controller.rb,
app/controllers/demo_mode/application_controller.rb

Defined Under Namespace

Modules: Clis, Demoable, FactoryBotExt, FactoryBotRunnerExt Classes: AccountGenerationJob, ApplicationController, Cli, Config, Engine, InstallGenerator, Persona, PoolHydrationJob, Session, SessionsController

Constant Summary collapse

ICONS =
{
  tophat: "/demo_mode/assets/icon--tophat.png?v=#{VERSION}",
  user: "/demo_mode/assets/icon--user.png?v=#{VERSION}",
  users: "/demo_mode/assets/icon--users.png?v=#{VERSION}",
}.freeze
VERSION =
'3.7.1'

Class Method Summary collapse

Class Method Details

.add_persona(name = default_name) ⇒ Object



35
36
37
# File 'lib/demo_mode.rb', line 35

def add_persona(name = default_name, &)
  configuration.persona(name, &)
end

.callout_personasObject



43
44
45
# File 'lib/demo_mode.rb', line 43

def callout_personas
  personas.select(&:callout?)
end

.configureObject



31
32
33
# File 'lib/demo_mode.rb', line 31

def configure(&)
  configuration.instance_eval(&)
end

.current_passwordObject



51
52
53
# File 'lib/demo_mode.rb', line 51

def current_password
  Thread.current[:_demo_mode_password] ||= password.call
end

.current_password=(value) ⇒ Object



55
56
57
# File 'lib/demo_mode.rb', line 55

def current_password=(value)
  Thread.current[:_demo_mode_password] = value
end

.enabled?Boolean

Returns:

  • (Boolean)


21
22
23
24
25
# File 'lib/demo_mode.rb', line 21

def enabled?
  ActiveModel::Type::Boolean::FALSE_VALUES.exclude?(ENV.fetch('DEMO_MODE', 'false')).tap do |enabled|
    webvalve_check! if enabled && defined?(WebValve)
  end
end

.personasObject



39
40
41
# File 'lib/demo_mode.rb', line 39

def personas
  configuration.personas.select(&:enabled?)
end

.session_url(session) ⇒ Object



59
60
61
62
63
64
65
66
67
68
69
# File 'lib/demo_mode.rb', line 59

def session_url(session)
  Rails.application.reload_routes_unless_loaded if Rails.gem_version >= Gem::Version.new('8.0')

  routes = DemoMode::Engine.routes

  options = routes.default_url_options.presence
  options ||= ActionMailer::Base.default_url_options.presence if defined?(ActionMailer::Base)
  options ||= { only_path: true }

  routes.url_for(controller: 'demo_mode/sessions', action: 'show', id: session, **options)
end

.standard_personasObject



47
48
49
# File 'lib/demo_mode.rb', line 47

def standard_personas
  personas - callout_personas
end

.table_name_prefixObject



27
28
29
# File 'lib/demo_mode.rb', line 27

def table_name_prefix
  'demo_mode_'
end