class Fx::Generators::TriggerGenerator
@api private
Public Class Methods
next_migration_number(dir)
click to toggle source
# File lib/generators/fx/trigger/trigger_generator.rb, line 36 def self.next_migration_number(dir) ::ActiveRecord::Generators::Base.next_migration_number(dir) end
Public Instance Methods
activerecord_migration_class()
click to toggle source
# File lib/generators/fx/trigger/trigger_generator.rb, line 59 def activerecord_migration_class if ActiveRecord::Migration.respond_to?(:current_version) "ActiveRecord::Migration[5.0]" else "ActiveRecord::Migration" end end
create_migration_file()
click to toggle source
# File lib/generators/fx/trigger/trigger_generator.rb, line 22 def create_migration_file if updating_existing_trigger? migration_template( "db/migrate/update_trigger.erb", "db/migrate/update_trigger_#{file_name}_to_version_#{version}.rb" ) else migration_template( "db/migrate/create_trigger.erb", "db/migrate/create_trigger_#{file_name}.rb" ) end end
create_trigger_definition()
click to toggle source
# File lib/generators/fx/trigger/trigger_generator.rb, line 18 def create_trigger_definition create_file definition.path end
create_triggers_directory()
click to toggle source
# File lib/generators/fx/trigger/trigger_generator.rb, line 12 def create_triggers_directory unless trigger_definition_path.exist? empty_directory(trigger_definition_path) end end
formatted_name()
click to toggle source
# File lib/generators/fx/trigger/trigger_generator.rb, line 67 def formatted_name if singular_name.include?(".") "\"#{singular_name}\"" else ":#{singular_name}" end end
formatted_table_name()
click to toggle source
# File lib/generators/fx/trigger/trigger_generator.rb, line 75 def formatted_table_name name = table_name["table_name"] || table_name["on"] if name.nil? raise( ArgumentError, "Either `table_name:NAME` or `on:NAME` must be specified", ) end if name.include?(".") "\"#{name}\"" else ":#{name}" end end
migration_class_name()
click to toggle source
Calls superclass method
# File lib/generators/fx/trigger/trigger_generator.rb, line 51 def migration_class_name if updating_existing_trigger? "UpdateTrigger#{class_name}ToVersion#{version}" else super end end
previous_version()
click to toggle source
# File lib/generators/fx/trigger/trigger_generator.rb, line 41 def previous_version @_previous_version ||= Dir.entries(trigger_definition_path). map { |name| version_regex.match(name).try(:[], "version").to_i }. max end
version()
click to toggle source
# File lib/generators/fx/trigger/trigger_generator.rb, line 47 def version @_version ||= previous_version.next end
Private Instance Methods
definition()
click to toggle source
# File lib/generators/fx/trigger/trigger_generator.rb, line 103 def definition Fx::Definition.new( name: file_name, version: version, type: "trigger", ) end
trigger_definition_path()
click to toggle source
# File lib/generators/fx/trigger/trigger_generator.rb, line 111 def trigger_definition_path @_trigger_definition_path ||= Rails.root.join(*["db", "triggers"]) end
updating_existing_trigger?()
click to toggle source
# File lib/generators/fx/trigger/trigger_generator.rb, line 99 def updating_existing_trigger? previous_version > 0 end
version_regex()
click to toggle source
# File lib/generators/fx/trigger/trigger_generator.rb, line 95 def version_regex /\A#{file_name}_v(?<version>\d+)\.sql\z/ end