Class: RailsTemplate18f::Generators::SidekiqGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Includes:
Base
Defined in:
lib/generators/rails_template18f/sidekiq/sidekiq_generator.rb

Instance Method Summary collapse

Instance Method Details

#configure_active_jobObject



42
43
44
45
46
# File 'lib/generators/rails_template18f/sidekiq/sidekiq_generator.rb', line 42

def configure_active_job
  generate "rails_template18f:cloud_gov_config", inline: true
  copy_file "config/initializers/redis.rb"
  application "config.active_job.queue_adapter = :sidekiq"
end

#configure_server_runnerObject



30
31
32
33
34
35
36
37
38
39
40
# File 'lib/generators/rails_template18f/sidekiq/sidekiq_generator.rb', line 30

def configure_server_runner
  append_to_file "Procfile.dev", "worker: bundle exec sidekiq\n"
  insert_into_file file_path("terraform/app.tf"), <<EOT, after: "processes = [\n"
    {
type      = "worker"
instances = var.worker_instances
memory    = var.worker_memory
command   = "bundle exec sidekiq"
    },
EOT
end

#configure_sidekiq_uiObject



48
49
50
51
52
53
54
55
# File 'lib/generators/rails_template18f/sidekiq/sidekiq_generator.rb', line 48

def configure_sidekiq_ui
  prepend_to_file "config/routes.rb", "require \"sidekiq/web\"\n\n"
  route <<~EOR
    if Rails.env.development?
      mount Sidekiq::Web => "/sidekiq"
    end
  EOR
end

#install_gemObject



15
16
17
18
19
# File 'lib/generators/rails_template18f/sidekiq/sidekiq_generator.rb', line 15

def install_gem
  return if gem_installed?("sidekiq")
  gem "sidekiq", "~> 7.3"
  bundle_install
end

#install_redisObject



21
22
23
24
25
26
27
28
# File 'lib/generators/rails_template18f/sidekiq/sidekiq_generator.rb', line 21

def install_redis
  append_to_file "Brewfile", <<~EOB

    # queue for sidekiq jobs
    brew "redis"
  EOB
  insert_into_file "README.md", indent("* [redis](https://redis.io/)\n"), after: /\* Install homebrew dependencies: `brew bundle`\n/
end

#update_boundary_diagramObject



57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/generators/rails_template18f/sidekiq/sidekiq_generator.rb', line 57

def update_boundary_diagram
  boundary_filename = "doc/compliance/apps/application.boundary.md"

  insert_into_file boundary_filename, indent(<<~EOB, 16), after: /ContainerDb\(app_db.*$\n/
    Container(worker, "<&layers> Sidekiq workers", "Ruby #{ruby_version}, Sidekiq", "Perform background work and data processing")
    ContainerDb(redis, "Redis Database", "AWS ElastiCache (Redis)", "Background job queue")
  EOB
  insert_into_file boundary_filename, <<~EOB, before: "@enduml"
    Rel(app, redis, "enqueue job parameters", "redis")
    Rel(worker, redis, "dequeues job parameters", "redis")
    Rel(worker, app_db, "reads/writes primary data", "psql (5432)")
  EOB
end