Module: Chouette::CommandLineSupport

Included in:
Command, Exporter, FileValidator, Loader
Defined in:
app/models/chouette/command_line_support.rb

Defined Under Namespace

Classes: ExecutionError

Instance Method Summary collapse

Instance Method Details

#available_loggersObject



5
6
7
8
9
10
11
# File 'app/models/chouette/command_line_support.rb', line 5

def available_loggers
  [].tap do |logger|
    logger << Chouette::ActiveRecord.logger  
    logger << Rails.logger if defined?(Rails)
    logger << Logger.new($stdout)
  end.compact
end

#execute!(command) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'app/models/chouette/command_line_support.rb', line 21

def execute!(command)
  logger.debug "execute '#{command}'"

  output = `#{command} 2>&1`
  output = "[...] #{output[-max_output_length,max_output_length]}" if output.length > max_output_length
  logger.info output unless output.empty?

  if $? != 0
    raise ExecutionError.new("Command failed: #{command} (error code #{$?})")
  end

  true
end

#loggerObject



13
14
15
# File 'app/models/chouette/command_line_support.rb', line 13

def logger
  @logger ||= available_loggers.first
end

#max_output_lengthObject



17
18
19
# File 'app/models/chouette/command_line_support.rb', line 17

def max_output_length
  2000
end