Sha256: a6257bd66d2af0a2674c24b316d3c11e4560ea816c89d55771e824d6684a4a30

Contents?: true

Size: 1.39 KB

Versions: 1

Compression:

Stored size: 1.39 KB

Contents

require "rails/generators/base"
require "administrate/generator_helpers"

module Administrate
  module Generators
    class InstallGenerator < Rails::Generators::Base
      include Administrate::GeneratorHelpers
      source_root File.expand_path("../templates", __FILE__)

      def create_dashboard_controller
        copy_file(
          "application_controller.rb",
          "app/controllers/admin/application_controller.rb"
        )
      end

      def insert_dashboard_routes
        unless File.read(rails_routes_file_path).include?(dashboard_routes)
          route(dashboard_routes)
        end
      end

      def run_dashboard_generators
        singular_dashboard_resources.each do |resource|
          call_generator("administrate:dashboard", resource)
        end
      end

      private

      def singular_dashboard_resources
        dashboard_resources.map(&:to_s).map(&:singularize)
      end

      def dashboard_resources
        manifest::DASHBOARDS
      end

      def manifest
        unless defined?(DashboardManifest)
          call_generator("administrate:manifest")
        end

        DashboardManifest
      end

      def dashboard_routes
        File.read(routes_file_path)
      end

      def rails_routes_file_path
        Rails.root.join("config/routes.rb")
      end

      def routes_file_path
        File.expand_path(find_in_source_paths("routes.rb"))
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
administrate-0.1.3 lib/generators/administrate/install/install_generator.rb