Module: Mongrel2::CLI::CommandUtilities
- Defined in:
- lib/mongrel2/cli.rb
Overview
Functions for common command tasks
Instance Method Summary collapse
-
#edit(filename) ⇒ Object
Invoke the user’s editor on the given
filename
and return the exit code from doing so. -
#find_mongrel2 ⇒ Object
Search the PATH for a mongrel2 binary, returning the absolute Pathname to it if found, and outputting a warning and describing how to set ENV if not.
-
#find_server(serverspec = nil) ⇒ Object
Search the current mongrel2 config for a server matching
serverspec
and return it as a Mongrel2::Config::Server object. -
#read_history ⇒ Object
Read command line history from HISTORY_FILE.
-
#save_history ⇒ Object
Save command line history to HISTORY_FILE.
Instance Method Details
#edit(filename) ⇒ Object
Invoke the user’s editor on the given filename
and return the exit code from doing so.
445 446 447 448 449 450 451 |
# File 'lib/mongrel2/cli.rb', line 445 def edit( filename ) editor = ENV['EDITOR'] || ENV['VISUAL'] || DEFAULT_EDITOR system editor, filename.to_s unless $?.success? || editor =~ /vim/i raise "Editor exited with an error status (%d)" % [ $?.exitstatus ] end end |
#find_mongrel2 ⇒ Object
Search the PATH for a mongrel2 binary, returning the absolute Pathname to it if found, and outputting a warning and describing how to set ENV if not.
456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 |
# File 'lib/mongrel2/cli.rb', line 456 def find_mongrel2 if ENV['MONGREL2'] m2 = Pathname( ENV['MONGREL2'] ) error = nil if !m2.file? error = "but it isn't a plain file." elsif !m2.executable? error = "but it isn't executable." end raise "MONGREL2 was set to #{m2}, #{error}" if error return m2 else m2 = ENV['PATH'].split( File::PATH_SEPARATOR ). map {|dir| Pathname(dir) + 'mongrel2' }. find {|path| path.executable? } return m2 if m2 raise "The 'mongrel2' binary doesn't seem to be in your PATH. Either " + "add the appropriate directory to your PATH or set the MONGREL2 " + "environment variable to the full path." end end |
#find_server(serverspec = nil) ⇒ Object
Search the current mongrel2 config for a server matching serverspec
and return it as a Mongrel2::Config::Server object.
385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 |
# File 'lib/mongrel2/cli.rb', line 385 def find_server( serverspec=nil ) server = nil servers = Mongrel2::Config.servers raise "No servers are configured." if servers.empty? # If there's only one configured server, just make sure if a serverspec was given # that it would have matched. if servers.length == 1 server = servers.first if !serverspec || servers.first.values.values_at( :uuid, :default_host, :name ).include?( serverspec ) # Otherwise, require an argument and search for the desired server if there is one else raise "You must specify a server uuid/hostname/name when more " + "than one server is configured." if servers.length > 1 && !serverspec server = servers.find {|s| s.uuid == serverspec } || servers.find {|s| s.default_host == serverspec } || servers.find {|s| s.name == serverspec } end raise "No servers match '#{serverspec}'" unless server return server end |
#read_history ⇒ Object
Read command line history from HISTORY_FILE
414 415 416 417 418 419 420 421 422 423 424 |
# File 'lib/mongrel2/cli.rb', line 414 def read_history histfile = HISTORY_FILE. if histfile.exist? lines = histfile.readlines.collect {|line| line.chomp } self.log.debug "Read %d saved history commands from %s." % [ lines.length, histfile ] Readline::HISTORY.push( *lines ) else self.log.debug "History file '%s' was empty or non-existant." % [ histfile ] end end |
#save_history ⇒ Object
Save command line history to HISTORY_FILE
428 429 430 431 432 433 434 435 436 437 438 439 440 |
# File 'lib/mongrel2/cli.rb', line 428 def save_history histfile = HISTORY_FILE. lines = Readline::HISTORY.to_a.reverse.uniq.reverse lines = lines[ -DEFAULT_HISTORY_SIZE, DEFAULT_HISTORY_SIZE ] if lines.length > DEFAULT_HISTORY_SIZE self.log.debug "Saving %d history lines to %s." % [ lines.length, histfile ] histfile.open( File::WRONLY|File::CREAT|File::TRUNC ) do |ofh| ofh.puts( *lines ) end end |