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.