cookpad/chanko

View on GitHub
lib/generators/chanko/unit/unit_generator.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Chanko
  module Generators
    class UnitGenerator < Rails::Generators::NamedBase
      ASSETS_TYPES = %w[images javascripts stylesheets]

      source_root File.expand_path("../templates", __FILE__)

      def create_unit_directory
        empty_directory(directory)
      end

      def create_unit_file
        template("unit.rb.erb", "#{directory}/#{file_name}.rb")
      end

      def create_views_directory
        create_file("#{directory}/views/.gitkeep", "")
      end

      ASSETS_TYPES.each do |type|
        define_method("create_#{type}_directory") do
          create_file("#{directory}/#{type}/.gitkeep", "")
        end
      end

      ASSETS_TYPES.each do |type|
        define_method("create_#{type}_symlink") do
          create_assets_symlink(type)
        end
      end

      private

      def create_assets_symlink(type)
        from = "app/assets/#{type}/#{directory_name}/#{file_name}"
        to   = "../../../../#{directory}/#{type}"
        create_link(from, to)
      end

      def directory
        "#{Chanko::Config.units_directory_path}/#{file_name}"
      end

      def directory_name
        Chanko::Config.units_directory_path.split("/").last
      end
    end
  end
end