# File lib/compass/installers/base.rb, line 60
      def self.installer(type, installer_opts = {}, &locator)
        locator ||= lambda{|to| to}
        loc_method = "install_location_for_#{type}".to_sym
        define_method("simple_#{loc_method}", locator)
        define_method(loc_method) do |to, options|
          if options[:like] && options[:like] != type
            send("install_location_for_#{options[:like]}", to, options)
          else
            send("simple_#{loc_method}", to)
          end
        end
        define_method "install_#{type}" do |from, to, options|
          from = templatize(from)
          to = targetize(send(loc_method, to, options))
          is_binary = installer_opts[:binary] || options[:binary]
          if is_binary
            copy from, to, nil, is_binary
          else
            contents = File.new(from).read
            if options.delete(:erb)
              ctx = TemplateContext.ctx(:to => to, :options => options)
              contents = process_erb(contents, ctx)
            end
            write_file to, contents
          end
        end
      end