Class: ActiveDataFrame::InstallGenerator
- Inherits:
-
ActiveRecord::Generators::Base
- Object
- ActiveRecord::Generators::Base
- ActiveDataFrame::InstallGenerator
- Defined in:
- lib/generators/active_data_frame/install_generator.rb
Constant Summary collapse
- STREAM_TYPES =
%w(bit byte integer long float double)
Class Method Summary collapse
- .model_exists?(model, destination_root) ⇒ Boolean
- .path_for_model(model) ⇒ Object
- .source_root ⇒ Object
Instance Method Summary collapse
- #block_table_name ⇒ Object
- #block_type ⇒ Object
- #concern_file_name ⇒ Object
- #concern_name ⇒ Object
- #copy_concern ⇒ Object
- #copy_migration ⇒ Object
- #generate_model ⇒ Object
- #get_typecode ⇒ Object
- #inject_concern_content ⇒ Object
- #inject_data_frame_helpers ⇒ Object
- #migration_data ⇒ Object
- #migration_version ⇒ Object
- #rails5? ⇒ Boolean
- #singular_block_table_name ⇒ Object
Class Method Details
.model_exists?(model, destination_root) ⇒ Boolean
75 76 77 |
# File 'lib/generators/active_data_frame/install_generator.rb', line 75 def self.model_exists?(model, destination_root) File.exist?(File.join(destination_root, self.path_for_model(model))) end |
.path_for_model(model) ⇒ Object
71 72 73 |
# File 'lib/generators/active_data_frame/install_generator.rb', line 71 def self.path_for_model(model) File.join("app", "models", "blocks", "#{model.underscore}.rb") end |
.source_root ⇒ Object
11 12 13 |
# File 'lib/generators/active_data_frame/install_generator.rb', line 11 def self.source_root @source_root ||= File.join(File.dirname(__FILE__), 'templates') end |
Instance Method Details
#block_table_name ⇒ Object
23 24 25 |
# File 'lib/generators/active_data_frame/install_generator.rb', line 23 def block_table_name "#{singular_table_name}_blocks" end |
#block_type ⇒ Object
19 20 21 |
# File 'lib/generators/active_data_frame/install_generator.rb', line 19 def block_type "#{singular_table_name}_block".camelize end |
#concern_file_name ⇒ Object
35 36 37 |
# File 'lib/generators/active_data_frame/install_generator.rb', line 35 def concern_file_name "has_#{singular_table_name}" end |
#concern_name ⇒ Object
31 32 33 |
# File 'lib/generators/active_data_frame/install_generator.rb', line 31 def concern_name "Has#{singular_table_name.camelize}" end |
#copy_concern ⇒ Object
67 68 69 |
# File 'lib/generators/active_data_frame/install_generator.rb', line 67 def copy_concern template "has_concern.rb", "app/models/concerns/#{concern_file_name}.rb" end |
#copy_migration ⇒ Object
79 80 81 |
# File 'lib/generators/active_data_frame/install_generator.rb', line 79 def copy_migration migration_template "migration.rb", "db/migrate/active_data_frame_create_#{table_name}.rb", migration_version: migration_version end |
#generate_model ⇒ Object
15 16 17 |
# File 'lib/generators/active_data_frame/install_generator.rb', line 15 def generate_model invoke "active_record:model", ["blocks/#{singular_block_table_name}"], migration: false end |
#get_typecode ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/generators/active_data_frame/install_generator.rb', line 47 def get_typecode case type when "float", "double" then M::Typecode::FLOAT when "integer", "long" then M::Typecode::INT when "bit", "byte" then M::Typecode::BYTE end end |
#inject_concern_content ⇒ Object
39 40 41 42 43 44 45 |
# File 'lib/generators/active_data_frame/install_generator.rb', line 39 def inject_concern_content inject.each do |inject_into| content = " include #{concern_name}\n" class_name = inject_into.camelize inject_into_class(self.class.path_for_model(inject_into), class_name, content) if self.class.model_exists?(inject_into, destination_root) end end |
#inject_data_frame_helpers ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/generators/active_data_frame/install_generator.rb', line 55 def inject_data_frame_helpers content = \ <<RUBY BLOCK_SIZE = #{columns} COLUMNS = %w(#{columns.times.map{|i| "t#{i+1}" }.join(" ")}) TYPECODE = #{get_typecode} self.table_name = '#{block_table_name}' RUBY class_name = "Blocks::#{singular_block_table_name.camelize}" inject_into_class(self.class.path_for_model(singular_block_table_name), class_name, content) if self.class.model_exists?(singular_block_table_name, destination_root) end |
#migration_data ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/generators/active_data_frame/install_generator.rb', line 83 def migration_data <<RUBY t.integer :data_frame_id t.string :data_frame_type t.integer :period_index #{ columns.times.map do |i| " t.#{type} :t#{i+1}, default: 0, allow_nil: false" end.join("\n") } RUBY end |
#migration_version ⇒ Object
96 97 98 99 100 |
# File 'lib/generators/active_data_frame/install_generator.rb', line 96 def migration_version if rails5? "[#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}]" end end |
#rails5? ⇒ Boolean
102 103 104 |
# File 'lib/generators/active_data_frame/install_generator.rb', line 102 def rails5? Rails.version.start_with? '5' end |
#singular_block_table_name ⇒ Object
27 28 29 |
# File 'lib/generators/active_data_frame/install_generator.rb', line 27 def singular_block_table_name "#{singular_table_name}_block" end |