class ActiveAdmin::Chat::Generators::InstallGenerator

Public Instance Methods

copy_initializer() click to toggle source
# File lib/generators/active_admin/chat/install/install_generator.rb, line 21
def copy_initializer
  template 'initializers/active_admin/chat.rb.erb',
           'config/initializers/active_admin/chat.rb'
end
create_models() click to toggle source
# File lib/generators/active_admin/chat/install/install_generator.rb, line 26
def create_models
  unless model_exists?(@conversation_model_name)
    Rails::Generators.invoke(
      'active_record:model', [
        @conversation_model_name,
        "#{@user_model_name.split('/').last}_id:integer:index",
        '--migration',
        '--timestamps'
      ]
    )
  end

  unless model_exists?(@message_model_name)
    Rails::Generators.invoke(
      'active_record:model', [
        @message_model_name,
        'content:string',
        'sender:references{polymorphic}',
        "#{@conversation_model_name.split('/').last}_id:integer:index",
        'created_at:datetime:index',
        'updated_at:datetime',
        '--migration',
        '--no-timestamps'
      ]
    )
  end
end
inject_models_contents() click to toggle source
# File lib/generators/active_admin/chat/install/install_generator.rb, line 54
def inject_models_contents
  if model_exists?(@conversation_model_name)
    inject_into_class(
      model_path(@conversation_model_name),
      @conversation_model_name.classify,
      conversation_contents
    )
  end

  if model_exists?(@message_model_name)
    inject_into_class(
      model_path(@message_model_name),
      @message_model_name.classify,
      message_contents
    )
  end
end
insert_chat_page() click to toggle source
# File lib/generators/active_admin/chat/install/install_generator.rb, line 72
def insert_chat_page
  template 'pages/chat.rb', 'app/admin/chat.rb'
end
normalize_config() click to toggle source
# File lib/generators/active_admin/chat/install/install_generator.rb, line 13
def normalize_config
  @conversation_model_name = options['conversation_model_name'].underscore.singularize
  @message_model_name = options['message_model_name'].underscore.singularize
  @admin_user_model_name = options['admin_user_model_name'].underscore.singularize
  @user_model_name = options['user_model_name'].underscore.singularize
  @messages_per_page = 25
end

Private Instance Methods

add_belongs_to(model_name) click to toggle source
# File lib/generators/active_admin/chat/install/install_generator.rb, line 95
def add_belongs_to(model_name)
  if model_name.include?('/')
    "belongs_to :#{model_name.split('/').last}, class_name: '#{model_name.classify}'"
  else
    "belongs_to :#{model_name}"
  end
end
add_has_many(model_name) click to toggle source
# File lib/generators/active_admin/chat/install/install_generator.rb, line 103
def add_has_many(model_name)
  relation_name = model_name.split('/').last.pluralize

  if model_name.include?('/')
    "has_many :#{relation_name}, class_name: #{model_name.classify}, dependent: :destroy"
  else
    "has_many :#{relation_name}, dependent: :destroy"
  end
end
conversation_contents() click to toggle source
# File lib/generators/active_admin/chat/install/install_generator.rb, line 78
        def conversation_contents
          buffer = <<-CONTENT
  #{add_belongs_to(@user_model_name)}
  #{add_has_many(@message_model_name)}
          CONTENT

          buffer
        end
message_contents() click to toggle source
# File lib/generators/active_admin/chat/install/install_generator.rb, line 87
        def message_contents
          buffer = <<-CONTENT
  #{add_belongs_to(@conversation_model_name)}
          CONTENT

          buffer
        end
model_exists?(model_name) click to toggle source
# File lib/generators/active_admin/chat/install/install_generator.rb, line 113
def model_exists?(model_name)
  File.exist?(File.join(destination_root, model_path(model_name)))
end
model_path(model_name) click to toggle source
# File lib/generators/active_admin/chat/install/install_generator.rb, line 117
def model_path(model_name)
  File.join('app', 'models', "#{model_name}.rb")
end