Sha256: f3c814c606534f58aacec3a3a94070fc5fe946be12c6a3cf54e5290fbf5c399f

Contents?: true

Size: 1.87 KB

Versions: 8

Compression:

Stored size: 1.87 KB

Contents

# encoding: utf-8

require 'rails/generators'
require 'rails/generators/rails/resource/resource_generator'

module DynamicImage
  module Generators
    class ResourceGenerator < Rails::Generators::ResourceGenerator
      desc "Creates a DynamicImage resource"

      def initialize(args, *options)
        super(inject_dynamic_image_attributes(args), *options)
      end

      def add_controller_extension
        inject_into_file(
          File.join('app/controllers', class_path, "#{file_name.pluralize}_controller.rb"),
          after: "ApplicationController\n"
        ) do
          "  include DynamicImage::Controller\n\n" +
          "  private\n\n" +
          "  def model\n" +
          "    #{class_name}\n" +
          "  end\n"
        end
      end

      def add_model_extension
        inject_into_file(
          File.join('app/models', class_path, "#{file_name}.rb"),
          after: "ActiveRecord::Base\n"
        ) do
          "  include DynamicImage::Model\n"
        end
      end

      def alter_resource_routes
        gsub_file(
          File.join('config', 'routes.rb'),
          " resources :#{file_name.pluralize}",
          " image_resources :#{file_name.pluralize}"
        )
      end

      private

      def inject_dynamic_image_attributes(args)
        if args.any?
          args = [args[0]] + dynamic_image_attributes + args[1..args.length]
        else
          args
        end
      end

      def dynamic_image_attributes
        %w{
          content_hash:string
          content_type:string
          content_length:integer
          filename:string
          colorspace:string
          real_width:integer
          real_height:integer
          crop_width:integer
          crop_height:integer
          crop_start_x:integer
          crop_start_y:integer
          crop_gravity_x:integer
          crop_gravity_y:integer
        }
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
dynamic_image-2.0.0 lib/rails/generators/dynamic_image/resource/resource_generator.rb
dynamic_image-2.0.0.beta7 lib/rails/generators/dynamic_image/resource/resource_generator.rb
dynamic_image-2.0.0.beta6 lib/rails/generators/dynamic_image/resource/resource_generator.rb
dynamic_image-2.0.0.beta5 lib/rails/generators/dynamic_image/resource/resource_generator.rb
dynamic_image-2.0.0.beta4 lib/rails/generators/dynamic_image/resource/resource_generator.rb
dynamic_image-2.0.0.beta3 lib/rails/generators/dynamic_image/resource/resource_generator.rb
dynamic_image-2.0.0.beta2 lib/rails/generators/dynamic_image/resource/resource_generator.rb
dynamic_image-2.0.0.beta1 lib/rails/generators/dynamic_image/resource/resource_generator.rb