Class: RakeServer::Server
- Inherits:
-
EventMachine::Connection
- Object
- EventMachine::Connection
- RakeServer::Server
- Includes:
- EventMachine::Protocols::ObjectProtocol
- Defined in:
- lib/rake_server/server.rb
Class Method Summary collapse
- .after_fork(&block) ⇒ Object
- .before_fork(&block) ⇒ Object
- .run(eager_tasks, options = {}) ⇒ Object
- .run_after_fork ⇒ Object
- .run_before_fork ⇒ Object
- .start(eager_tasks, options = {}) ⇒ Object
- .stop(options = {}) ⇒ Object
Instance Method Summary collapse
Class Method Details
.after_fork(&block) ⇒ Object
55 56 57 |
# File 'lib/rake_server/server.rb', line 55 def after_fork(&block) @after_fork = block end |
.before_fork(&block) ⇒ Object
51 52 53 |
# File 'lib/rake_server/server.rb', line 51 def before_fork(&block) @before_fork = block end |
.run(eager_tasks, options = {}) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/rake_server/server.rb', line 38 def run(eager_tasks, = {}) = DEFAULT_OPTIONS.merge() EventMachine.run do Rake.application.init Rake.application.load_rakefile eager_tasks.each { |task| Rake.application[task].invoke } EventMachine.start_server([:host], [:port], self) unless [:quiet] puts "rake-server listening on #{[:host]}:#{[:port]}" end end end |
.run_after_fork ⇒ Object
63 64 65 |
# File 'lib/rake_server/server.rb', line 63 def run_after_fork @after_fork.call if @after_fork end |
.run_before_fork ⇒ Object
59 60 61 |
# File 'lib/rake_server/server.rb', line 59 def run_before_fork @before_fork.call if @before_fork end |
.start(eager_tasks, options = {}) ⇒ Object
15 16 17 18 19 20 21 22 23 24 |
# File 'lib/rake_server/server.rb', line 15 def start(eager_tasks, = {}) pid_file = File.join(pid_dir(), "rake-server.pid") pid = fork do fork do File.open(pid_file, 'w') { |f| f << Process.pid } run(eager_tasks, ) end end Process.waitpid(pid) end |
.stop(options = {}) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/rake_server/server.rb', line 26 def stop( = {}) if File.exist?(pid_file = File.join(pid_dir(), "rake-server.pid")) pid = IO.read(pid_file).to_i begin Process.kill("TERM", pid) rescue Errno::ESRCH # No worries end FileUtils.rm(pid_file) end end |
Instance Method Details
#receive_object(message) ⇒ Object
78 79 80 81 82 83 84 85 86 |
# File 'lib/rake_server/server.rb', line 78 def receive_object() begin tasks = .tasks.map { |task| Rake.application[task.to_sym] } pid = fork_and_run_tasks(tasks, .env || {}) rescue => e send_object("ERR #{e.}\n") send_object(nil) end end |