    # 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