Class: DispatchPolicy::Generators::InstallGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Includes:
Rails::Generators::Migration
Defined in:
lib/generators/dispatch_policy/install/install_generator.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.next_migration_number(_path) ⇒ Object



14
15
16
# File 'lib/generators/dispatch_policy/install/install_generator.rb', line 14

def self.next_migration_number(_path)
  Time.now.utc.strftime("%Y%m%d%H%M%S")
end

Instance Method Details

#copy_migrationObject



18
19
20
21
# File 'lib/generators/dispatch_policy/install/install_generator.rb', line 18

def copy_migration
  migration_template "create_dispatch_policy_tables.rb.tt",
                     "db/migrate/create_dispatch_policy_tables.rb"
end

#create_initializerObject



23
24
25
# File 'lib/generators/dispatch_policy/install/install_generator.rb', line 23

def create_initializer
  template "initializer.rb.tt", "config/initializers/dispatch_policy.rb"
end

#create_tick_loop_jobObject



27
28
29
# File 'lib/generators/dispatch_policy/install/install_generator.rb', line 27

def create_tick_loop_job
  template "dispatch_tick_loop_job.rb.tt", "app/jobs/dispatch_tick_loop_job.rb"
end

#show_readmeObject



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/generators/dispatch_policy/install/install_generator.rb', line 31

def show_readme
  readme_text = <<~MSG

    dispatch_policy installed.

    Next steps:
      1) bin/rails db:migrate
      2) Mount the engine in config/routes.rb:
           mount DispatchPolicy::Engine, at: "/dispatch_policy"
      3) Schedule DispatchTickLoopJob (cron / good_job recurring / solid_queue recurring)
         and start it once: DispatchTickLoopJob.perform_later
      4) Declare a policy in any ActiveJob:
           dispatch_policy :name do
             context ->(args) { { ... } }
             partition_by ->(c) { c[:key] }
             gate :throttle, rate: 10, per: 60
           end

  MSG
  say readme_text, :green
end