Sha256: 7a369bd4f5067a4681e0c85d10fbb0e00a01abfe5a7dd79d5da431bfe0cdb00a

Contents?: true

Size: 1.43 KB

Versions: 5

Compression:

Stored size: 1.43 KB

Contents

module EY
  module Serverside
    module LoggedOutput

      class Tee
        def initialize(*streams)
          @streams = streams.flatten
        end

        def <<(output)
          @streams.each do |s|
            s << output
            s.flush
          end
          self
        end
      end # Tee

      @@logfile = File.join(ENV['HOME'], 'ey.log')
      def self.logfile=(filename)
        File.unlink filename if File.exist?(filename)  # start fresh
        @@logfile = filename
      end

      def self.logfile
        @@logfile
      end

      @@verbose = false
      def self.verbose=(v)
        @@verbose = !!v
      end

      def self.verbose?
        @@verbose
      end

      def verbose?
        EY::Serverside::LoggedOutput.verbose?
      end

      def warning(msg)
        info "\nWARNING: #{msg}\n".gsub(/^/,'!> ')
      end

      def info(msg)
        with_logfile do |log|
          Tee.new($stdout, log) << (msg + "\n")
        end
      end

      def debug(msg)
        with_logfile do |log|
          log << "#{msg}\n"
        end
      end

      def logged_system(cmd)
        with_logfile do |log|
          pid = Process.spawn(cmd, :out => log, :err => log)
          Process.waitpid(pid)
          $?.success?
        end
      end

      private
      def with_logfile
        File.open(logfile, 'a') {|f| yield f }
      end

      def logfile
        EY::Serverside::LoggedOutput.logfile
      end

    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
engineyard-serverside-1.5.23.ruby19.8 lib/engineyard-serverside/logged_output.rb
engineyard-serverside-1.5.23.ruby19.7 lib/engineyard-serverside/logged_output.rb
engineyard-serverside-1.5.23.ruby19.6 lib/engineyard-serverside/logged_output.rb
engineyard-serverside-1.5.23.ruby19.5 lib/engineyard-serverside/logged_output.rb
engineyard-serverside-1.5.23.ruby19.4 lib/engineyard-serverside/logged_output.rb