Sha256: cd6361521acf365386f1653bfa3b1f6ded95ace5fa058d7e4605d364956b1144

Contents?: true

Size: 1.09 KB

Versions: 5

Compression:

Stored size: 1.09 KB

Contents

require 'rails/generators'

module Generators
  module Avo
    class ResourceGenerator < ::Rails::Generators::NamedBase
      source_root File.expand_path('templates', __dir__)

      namespace 'avo:resource'

      def create
        template 'resource/resource.tt', "app/avo/resources/#{resource_name}.rb"
        template 'resource/controller.tt', "app/controllers/avo/#{controller_name}.rb"

        # Show a warning if the model doesn't exists
        say("We couldn't find the #{class_name} model in your codebase. You should have one present for Avo to display the resource.", :yellow) unless current_models.include? class_name
      end

      def resource_class
        "#{class_name}Resource"
      end

      def controller_class
        "Avo::#{plural_name.humanize}Controller"
      end

      def resource_name
        "#{singular_name}_resource"
      end

      def controller_name
        "#{plural_name}_controller"
      end

      def current_models
        ActiveRecord::Base.connection.tables.map do |model|
          model.capitalize.singularize.camelize
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
avo-0.5.0.beta9 lib/generators/avo/resource_generator.rb
avo-0.5.0.beta8 lib/generators/avo/resource_generator.rb
avo-0.5.0.beta7 lib/generators/avo/resource_generator.rb
avo-0.5.0.beta6 lib/generators/avo/resource_generator.rb
avo-0.5.0.beta5 lib/generators/avo/resource_generator.rb