A RubyChildInitHandler class which loads one or more dispatchers when a child server starts. This can eliminate the startup lag for the first request each child handles. See the docs for dispatcher.rb for an example of how to use this.
Create a loader that will create dispatchers from the given hostsfile, which is a YAML hash that maps dispatcher names to a configfile path.
# File /Users/ged/source/ruby/Arrow/lib/arrow.rb, line 69
69: def initialize( hostsfile )
70: @hostsfile = hostsfile
71: end
Load the dispatchers according to the registered hosts file.
# File /Users/ged/source/ruby/Arrow/lib/arrow.rb, line 75
75: def child_init( req )
76: req.server.log_info( "Loading dispatcher configs from " + @hostsfile + "." )
77: Arrow::Dispatcher.create_from_hosts_file( @hostsfile )
78:
79: return Apache::OK
80: rescue ::Exception => err
81: errmsg = "%s failed to load dispatchers (%s): %s: %s" % [
82: self.class.name,
83: err.class.name,
84: err.message,
85: err.backtrace.join("\n ")
86: ]
87:
88: logfile = Pathname.new( Dir.tmpdir ) + 'arrow-dispatcher-failure.log'
89: logfile.open( IO::WRONLY|IO::TRUNC|IO::CREAT ) do |ofh|
90: ofh.puts( errmsg )
91: ofh.flush
92: end
93:
94: Apache.request.server.log_crit( errmsg )
95: raise
96: end
--- SEC00188
--- ""
---
- methods:
- visibility: public
aref: M000350
name: new
sourcecode: " <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow.rb, line 69</span>\n\
69: <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">initialize</span>( <span class=\"ruby-identifier\">hostsfile</span> )\n\
70: <span class=\"ruby-ivar\">@hostsfile</span> = <span class=\"ruby-identifier\">hostsfile</span>\n\
71: <span class=\"ruby-keyword kw\">end</span>"
m_desc: |-
<p>
Create a loader that will create dispatchers from the given
<tt>hostsfile</tt>, which is a YAML hash that maps dispatcher names to a
configfile path.
</p>
params: ( hostsfile )
category: Class
type: Public
- methods:
- visibility: public
aref: M000351
name: child_init
sourcecode: " <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow.rb, line 75</span>\n\
75: <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">child_init</span>( <span class=\"ruby-identifier\">req</span> )\n\
76: <span class=\"ruby-identifier\">req</span>.<span class=\"ruby-identifier\">server</span>.<span class=\"ruby-identifier\">log_info</span>( <span class=\"ruby-value str\">"Loading dispatcher configs from "</span> <span class=\"ruby-operator\">+</span> <span class=\"ruby-ivar\">@hostsfile</span> <span class=\"ruby-operator\">+</span> <span class=\"ruby-value str\">"."</span> )\n\
77: <span class=\"ruby-constant\">Arrow</span><span class=\"ruby-operator\">::</span><span class=\"ruby-constant\">Dispatcher</span>.<span class=\"ruby-identifier\">create_from_hosts_file</span>( <span class=\"ruby-ivar\">@hostsfile</span> )\n\
78: \n\
79: <span class=\"ruby-keyword kw\">return</span> <span class=\"ruby-constant\">Apache</span><span class=\"ruby-operator\">::</span><span class=\"ruby-constant\">OK</span>\n\
80: <span class=\"ruby-keyword kw\">rescue</span> <span class=\"ruby-operator\">::</span><span class=\"ruby-constant\">Exception</span> =<span class=\"ruby-operator\">></span> <span class=\"ruby-identifier\">err</span>\n\
81: <span class=\"ruby-identifier\">errmsg</span> = <span class=\"ruby-value str\">"%s failed to load dispatchers (%s): %s: %s"</span> <span class=\"ruby-operator\">%</span> [\n\
82: <span class=\"ruby-keyword kw\">self</span>.<span class=\"ruby-identifier\">class</span>.<span class=\"ruby-identifier\">name</span>,\n\
83: <span class=\"ruby-identifier\">err</span>.<span class=\"ruby-identifier\">class</span>.<span class=\"ruby-identifier\">name</span>,\n\
84: <span class=\"ruby-identifier\">err</span>.<span class=\"ruby-identifier\">message</span>,\n\
85: <span class=\"ruby-identifier\">err</span>.<span class=\"ruby-identifier\">backtrace</span>.<span class=\"ruby-identifier\">join</span>(<span class=\"ruby-value str\">"\\n "</span>)\n\
86: ]\n\
87: \n\
88: <span class=\"ruby-identifier\">logfile</span> = <span class=\"ruby-constant\">Pathname</span>.<span class=\"ruby-identifier\">new</span>( <span class=\"ruby-constant\">Dir</span>.<span class=\"ruby-identifier\">tmpdir</span> ) <span class=\"ruby-operator\">+</span> <span class=\"ruby-value str\">'arrow-dispatcher-failure.log'</span>\n\
89: <span class=\"ruby-identifier\">logfile</span>.<span class=\"ruby-identifier\">open</span>( <span class=\"ruby-constant\">IO</span><span class=\"ruby-operator\">::</span><span class=\"ruby-constant\">WRONLY</span><span class=\"ruby-operator\">|</span><span class=\"ruby-constant\">IO</span><span class=\"ruby-operator\">::</span><span class=\"ruby-constant\">TRUNC</span><span class=\"ruby-operator\">|</span><span class=\"ruby-constant\">IO</span><span class=\"ruby-operator\">::</span><span class=\"ruby-constant\">CREAT</span> ) <span class=\"ruby-keyword kw\">do</span> <span class=\"ruby-operator\">|</span><span class=\"ruby-identifier\">ofh</span><span class=\"ruby-operator\">|</span>\n\
90: <span class=\"ruby-identifier\">ofh</span>.<span class=\"ruby-identifier\">puts</span>( <span class=\"ruby-identifier\">errmsg</span> )\n\
91: <span class=\"ruby-identifier\">ofh</span>.<span class=\"ruby-identifier\">flush</span>\n\
92: <span class=\"ruby-keyword kw\">end</span>\n\
93: \n\
94: <span class=\"ruby-constant\">Apache</span>.<span class=\"ruby-identifier\">request</span>.<span class=\"ruby-identifier\">server</span>.<span class=\"ruby-identifier\">log_crit</span>( <span class=\"ruby-identifier\">errmsg</span> )\n\
95: <span class=\"ruby-identifier\">raise</span>\n\
96: <span class=\"ruby-keyword kw\">end</span>"
m_desc: |-
<p>
Load the dispatchers according to the registered hosts file.
</p>
params: ( req )
category: Instance
type: Public
---
Generated with the Darkfish Rdoc Generator.