class Scenic::Generators::ViewGenerator
@api private
Public Class Methods
next_migration_number(dir)
click to toggle source
# File lib/generators/scenic/view/view_generator.rb, line 41 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/scenic/view/view_generator.rb, line 65 def activerecord_migration_class if ActiveRecord::Migration.respond_to?(:current_version) "ActiveRecord::Migration[#{ActiveRecord::Migration.current_version}]" else "ActiveRecord::Migration" end end
create_migration_file()
click to toggle source
# File lib/generators/scenic/view/view_generator.rb, line 27 def create_migration_file if creating_new_view? || destroying_initial_view? migration_template( "db/migrate/create_view.erb", "db/migrate/create_#{plural_file_name}.rb" ) else migration_template( "db/migrate/update_view.erb", "db/migrate/update_#{plural_file_name}_to_version_#{version}.rb" ) end end
create_view_definition()
click to toggle source
# File lib/generators/scenic/view/view_generator.rb, line 19 def create_view_definition if creating_new_view? create_file definition.path else copy_file previous_definition.full_path, definition.full_path end end
create_views_directory()
click to toggle source
# File lib/generators/scenic/view/view_generator.rb, line 13 def create_views_directory unless views_directory_path.exist? empty_directory(views_directory_path) end end
migration_class_name()
click to toggle source
# File lib/generators/scenic/view/view_generator.rb, line 57 def migration_class_name if creating_new_view? "Create#{class_name.tr(".", "").pluralize}" else "Update#{class_name.pluralize}ToVersion#{version}" end end
previous_version()
click to toggle source
# File lib/generators/scenic/view/view_generator.rb, line 46 def previous_version @previous_version ||= Dir.entries(views_directory_path) .map { |name| version_regex.match(name).try(:[], "version").to_i } .max end
version()
click to toggle source
# File lib/generators/scenic/view/view_generator.rb, line 53 def version @version ||= destroying? ? previous_version : previous_version.next end
Private Instance Methods
create_view_options()
click to toggle source
# File lib/generators/scenic/view/view_generator.rb, line 114 def create_view_options if materialized? ", materialized: #{no_data? ? "{ no_data: true }" : true}" else "" end end
creating_new_view?()
click to toggle source
# File lib/generators/scenic/view/view_generator.rb, line 90 def creating_new_view? previous_version.zero? end
definition()
click to toggle source
# File lib/generators/scenic/view/view_generator.rb, line 94 def definition Scenic::Definition.new(plural_file_name, version) end
destroying?()
click to toggle source
# File lib/generators/scenic/view/view_generator.rb, line 102 def destroying? behavior == :revoke end
destroying_initial_view?()
click to toggle source
# File lib/generators/scenic/view/view_generator.rb, line 122 def destroying_initial_view? destroying? && version == 1 end
file_name()
click to toggle source
Calls superclass method
# File lib/generators/scenic/view/view_generator.rb, line 78 def file_name super.tr(".", "_") end
Also aliased as: singular_name
formatted_plural_name()
click to toggle source
# File lib/generators/scenic/view/view_generator.rb, line 106 def formatted_plural_name if plural_name.include?(".") "\"#{plural_name}\"" else ":#{plural_name}" end end
previous_definition()
click to toggle source
# File lib/generators/scenic/view/view_generator.rb, line 98 def previous_definition Scenic::Definition.new(plural_file_name, previous_version) end
version_regex()
click to toggle source
# File lib/generators/scenic/view/view_generator.rb, line 86 def version_regex /\A#{plural_file_name}_v(?<version>\d+)\.sql\z/ end
views_directory_path()
click to toggle source
# File lib/generators/scenic/view/view_generator.rb, line 82 def views_directory_path @views_directory_path ||= Rails.root.join("db", "views") end