Module: Bj::Runner::ClassMethods

Defined in:
lib/bj/runner.rb

Instance Method Summary collapse

Instance Method Details

#backgroundObject



112
113
114
# File 'lib/bj/runner.rb', line 112

def background
  @background ||= Hash.new
end

#background=(value) ⇒ Object



116
117
118
# File 'lib/bj/runner.rb', line 116

def background= value
  @background ||= value 
end

#commandObject



120
121
122
123
124
125
126
127
128
129
130
# File 'lib/bj/runner.rb', line 120

def command
  "#{ Bj.ruby } " + %W[
    #{ Bj.script }
    run 
    --forever 
    --redirect=#{ log }
    --ppid=#{ Process.pid }
    --rails_env=#{ Bj.rails_env }
    --rails_root=#{ Bj.rails_root }
  ].map{|word| word.inspect}.join(" ")
end

#key(ppid = 0) ⇒ Object



95
96
97
98
99
# File 'lib/bj/runner.rb', line 95

def key ppid = 0
  ppid ||= 0
  #"#{ Bj.rails_env }.#{ ppid }.pid"
  "runner.#{ ppid }.pid"
end

#logObject



132
133
134
# File 'lib/bj/runner.rb', line 132

def log
  File.join logdir, "bj.#{ Bj.hostname }.#{ Bj.rails_env }.log"
end

#logdirObject



136
137
138
# File 'lib/bj/runner.rb', line 136

def logdir
  File.join File.expand_path(Bj.rails_root), 'log'
end

#no_tickle_keyObject



101
102
103
104
# File 'lib/bj/runner.rb', line 101

def no_tickle_key 
  # "#{ Bj.rails_env }.no_tickle"
  "no_tickle"
end

#pingObject



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/bj/runner.rb', line 65

def ping
  begin
    pid = nil
    uri = nil
    process = nil
    Bj.transaction do
      pid = Bj.config[Runner.key(Process.pid)] || Bj.config[Runner.key]
      uri = Bj.config["#{ pid }.uri"]
      process =
        if uri
          require "drb"
          # DRb.start_service "druby://localhost:0"
          DRbObject.new(nil, uri)
        else
          Process
        end
    end
    return nil unless pid
    pid = Integer pid
    begin
      process.kill Runner.hup_signal, pid
      pid
    rescue Exception => e
      false
    end
  rescue Exception => e
    false
  end
end

#run(options = {}, &block) ⇒ Object



140
141
142
# File 'lib/bj/runner.rb', line 140

def run options = {}, &block
  new(options, &block).run
end

#start(options = {}) ⇒ Object



106
107
108
109
110
# File 'lib/bj/runner.rb', line 106

def start options = {}
  options.to_options!
  background.delete Bj.rails_env if options[:force]
  background[Bj.rails_env] ||= Background.for(command)
end

#tickleObject



60
61
62
63
# File 'lib/bj/runner.rb', line 60

def tickle
  return nil if Bj.config[Runner.no_tickle_key]
  ping or start
end