class Invoker::Parsers::Procfile
rip off from foreman
Public Class Methods
new(filename=nil)
click to toggle source
Initialize a Procfile
@param [String] filename (nil) An optional filename to read from
# File lib/invoker/parsers/procfile.rb, line 9 def initialize(filename=nil) @entries = [] load(filename) if filename end
Public Instance Methods
[](name)
click to toggle source
Retrieve a Procfile
command by name
@param [String] name The name of the Procfile
entry to retrieve
# File lib/invoker/parsers/procfile.rb, line 27 def [](name) @entries.detect { |n,c| name == n }.last end
[]=(name, command)
click to toggle source
Create a Procfile
entry
@param [String] name The name of the Procfile
entry to create @param [String] command The command of the Procfile
entry to create
# File lib/invoker/parsers/procfile.rb, line 36 def []=(name, command) delete name @entries << [name, command] end
delete(name)
click to toggle source
Remove a Procfile
entry
@param [String] name The name of the Procfile
entry to remove
# File lib/invoker/parsers/procfile.rb, line 45 def delete(name) @entries.reject! { |n,c| name == n } end
entries() { |name, command| ... }
click to toggle source
Yield each Procfile
entry in order
# File lib/invoker/parsers/procfile.rb, line 16 def entries return @entries unless block_given? @entries.each do |(name, command)| yield name, command end end
load(filename)
click to toggle source
Load a Procfile
from a file
@param [String] filename The filename of the Procfile
to load
# File lib/invoker/parsers/procfile.rb, line 53 def load(filename) @entries.replace parse(filename) end
save(filename)
click to toggle source
Save a Procfile
to a file
@param [String] filename Save the Procfile
to this file
# File lib/invoker/parsers/procfile.rb, line 61 def save(filename) File.open(filename, 'w') do |file| file.puts self.to_s end end
to_s()
click to toggle source
Get the Procfile
as a String
# File lib/invoker/parsers/procfile.rb, line 69 def to_s @entries.map do |name, command| [ name, command ].join(": ") end.join("\n") end
Private Instance Methods
parse(filename)
click to toggle source
# File lib/invoker/parsers/procfile.rb, line 77 def parse(filename) File.read(filename).gsub("\r\n","\n").split("\n").map do |line| if line =~ /^([A-Za-z0-9_-]+):\s*(.+)$/ [$1, $2] end end.compact end