Class: Maquina::Generators::SolidQueueGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/maquina/solid_queue/solid_queue_generator.rb

Instance Method Summary collapse

Instance Method Details

#add_gemObject

  1. Add gem to Gemfile



14
15
16
17
18
19
20
21
22
# File 'lib/generators/maquina/solid_queue/solid_queue_generator.rb', line 14

def add_gem
  gemfile_path = File.join(destination_root, "Gemfile")
  if File.exist?(gemfile_path)
    content = File.read(gemfile_path)
    unless content.include?('gem "solid_queue"')
      append_to_file "Gemfile", "\ngem \"solid_queue\"\n"
    end
  end
end

#configure_applicationObject

  1. Configure application



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/generators/maquina/solid_queue/solid_queue_generator.rb', line 30

def configure_application
  application_file = File.join(destination_root, "config/application.rb")
  return unless File.exist?(application_file)

  content = File.read(application_file)
  return if content.include?("solid_queue")

  inject_into_file "config/application.rb",
    after: /class Application < Rails::Application\n/ do
    <<~RUBY.indent(4)

      # Use Solid Queue as the Active Job backend in all environments except test
      config.active_job.queue_adapter = :solid_queue unless Rails.env.test?
      config.solid_queue.connects_to = {database: {writing: :queue}}
    RUBY
  end
end

#create_configObject

  1. Config file



25
26
27
# File 'lib/generators/maquina/solid_queue/solid_queue_generator.rb', line 25

def create_config
  template "config/solid_queue.yml", "config/solid_queue.yml"
end

#install_migrationsObject

  1. Install migrations



69
70
71
72
73
74
75
# File 'lib/generators/maquina/solid_queue/solid_queue_generator.rb', line 69

def install_migrations
  return unless rails_app?

  Bundler.with_unbundled_env do
    system("bin/rails solid_queue:install", chdir: destination_root)
  end
end

#run_bundle_installObject

  1. Bundle install



60
61
62
63
64
65
66
# File 'lib/generators/maquina/solid_queue/solid_queue_generator.rb', line 60

def run_bundle_install
  return unless rails_app?

  Bundler.with_unbundled_env do
    system("bundle install", chdir: destination_root)
  end
end

#show_post_installObject

  1. Post-install message



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/generators/maquina/solid_queue/solid_queue_generator.rb', line 78

def show_post_install
  return if options[:quiet]

  say ""
  say "Solid Queue has been installed!", :green
  say ""
  say "Next steps:", :yellow
  say "  1. bin/rails db:migrate"
  if options[:database] == "sqlite3"
    say "  2. Configure a separate queue database in config/database.yml:"
    say "     queue:"
    say "       <<: *default"
    say "       database: storage/queue.sqlite3"
    say "       migrations_paths: db/queue_migrate"
  end
  say ""
  say "Configuration:", :yellow
  say "  - Adjust workers/dispatchers in config/solid_queue.yml"
  say "  - Procfile.dev updated with solid_queue process"
  say ""
end

#update_procfileObject

  1. Update Procfile.dev



49
50
51
52
53
54
55
56
57
# File 'lib/generators/maquina/solid_queue/solid_queue_generator.rb', line 49

def update_procfile
  procfile_path = File.join(destination_root, "Procfile.dev")
  return unless File.exist?(procfile_path)

  content = File.read(procfile_path)
  return if content.include?("solid_queue:")

  append_to_file "Procfile.dev", "solid_queue: bin/rails solid_queue:start\n"
end