From ea688be970a122ae6bd7f884fb06cdda2ebed7e3 Mon Sep 17 00:00:00 2001 From: Brusk Awat Date: Wed, 1 Mar 2023 00:42:56 +0300 Subject: [PATCH] Adds generator --- .../outboxable/install_generator.rb | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 lib/generators/outboxable/install_generator.rb diff --git a/lib/generators/outboxable/install_generator.rb b/lib/generators/outboxable/install_generator.rb new file mode 100644 index 0000000..1b08a1e --- /dev/null +++ b/lib/generators/outboxable/install_generator.rb @@ -0,0 +1,36 @@ +module Outboxable + class InstallGenerator < Rails::Generators::Base + include Rails::Generators::Migration + + source_root File.expand_path('../../../templates', __FILE__) + + # Copy initializer into user app + def copy_initializer + copy_file('initializer.rb', 'config/initializers/outboxable.rb') + end + + # Copy user information (model & Migrations) into user app + def create_user_model + target_path = "app/models/outbox.rb" + unless File.exist?(File.join(Rails.root, target_path)) + template("outbox.rb", target_path) + else + say_status('skipped', "Model outbox already exists") + end + end + + # Copy migrations + def copy_migrations + if self.class.migration_exists?('db/migrate', "create_outboxable_outboxes") + say_status('skipped', "Migration create_outboxable_outboxes already exists") + else + migration_template('create_outboxable_outboxes.rb', "db/migrate/create_outboxable_outboxes.rb") + end + end + + # Use to assign migration time otherwise generator will error + def self.next_migration_number(dir) + Time.now.utc.strftime("%Y%m%d%H%M%S") + end + end +end \ No newline at end of file