Sha256: 5c7ec214ae10ec20540151f06ca07656fa54783eea4d55c137028982b2c90e41

Contents?: true

Size: 1.81 KB

Versions: 18

Compression:

Stored size: 1.81 KB

Contents

# frozen_string_literal: true

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[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

18 entries across 18 versions & 1 rubygems

Version Path
dynamic_image-2.1.5 lib/rails/generators/dynamic_image/resource/resource_generator.rb
dynamic_image-3.0.2 lib/rails/generators/dynamic_image/resource/resource_generator.rb
dynamic_image-3.0.1 lib/rails/generators/dynamic_image/resource/resource_generator.rb
dynamic_image-3.0.0 lib/rails/generators/dynamic_image/resource/resource_generator.rb
dynamic_image-2.1.4 lib/rails/generators/dynamic_image/resource/resource_generator.rb
dynamic_image-2.1.3 lib/rails/generators/dynamic_image/resource/resource_generator.rb
dynamic_image-2.1.2 lib/rails/generators/dynamic_image/resource/resource_generator.rb
dynamic_image-2.1.1 lib/rails/generators/dynamic_image/resource/resource_generator.rb
dynamic_image-2.1.0 lib/rails/generators/dynamic_image/resource/resource_generator.rb
dynamic_image-2.0.25 lib/rails/generators/dynamic_image/resource/resource_generator.rb
dynamic_image-2.0.24 lib/rails/generators/dynamic_image/resource/resource_generator.rb
dynamic_image-2.0.23 lib/rails/generators/dynamic_image/resource/resource_generator.rb
dynamic_image-2.0.22 lib/rails/generators/dynamic_image/resource/resource_generator.rb
dynamic_image-2.0.21 lib/rails/generators/dynamic_image/resource/resource_generator.rb
dynamic_image-2.0.20 lib/rails/generators/dynamic_image/resource/resource_generator.rb
dynamic_image-2.0.19 lib/rails/generators/dynamic_image/resource/resource_generator.rb
dynamic_image-2.0.18 lib/rails/generators/dynamic_image/resource/resource_generator.rb
dynamic_image-2.0.17 lib/rails/generators/dynamic_image/resource/resource_generator.rb