[#12073] Re: Ruby is much slower on linux when compiled with --enable-pthread? — "M. Edward (Ed) Borasky" <znmeb@...>
-----BEGIN PGP SIGNED MESSAGE-----
M. Edward (Ed) Borasky wrote:
On Wed, Sep 05, 2007 at 08:24:57PM +0900, Florian Frank wrote:
On 9/5/07, Sam Roberts <sroberts@uniserve.com> wrote:
[#12085] New array methods cycle, choice, shuffle (plus bug in cycle) — David Flanagan <david@...>
Four new methods have been added to Array the Ruby 1.9 trunk. I've got
On 9/6/07, David Flanagan <david@davidflanagan.com> wrote:
Wilson Bilkovich wrote:
On 9/7/07, Urabe Shyouhei <shyouhei@ruby-lang.org> wrote:
David Flanagan <david@davidflanagan.com> writes:
On 9/13/07, Christian Neukirchen <chneukirchen@gmail.com> wrote:
Nikolai Weibull wrote:
Restarting this thread because I missed it the first time around and
Hi,
On Thu, Jul 31, 2008 at 7:50 PM, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
Gregory Brown wrote:
Michael Neumann wrote:
Hi --
On 8/1/08, David A. Black <dblack@rubypal.com> wrote:
Wilson Bilkovich wrote:
Hi,
Hi --
2008/8/2 Yukihiro Matsumoto <matz@ruby-lang.org>:
Hi,
Yukihiro Matsumoto wrote:
Florian Frank wrote:
Hi,
On Sun, Aug 3, 2008 at 9:37 AM, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
On Jul 31, 2008, at 7:33 PM, Charles Oliver Nutter wrote:
Jim Weirich wrote:
On Aug 1, 2008, at 1:53 PM, Thomas Enebo wrote:
On Fri, Aug 1, 2008 at 2:01 PM, Jim Weirich <jim.weirich@gmail.com> wrote:
Gregory Brown wrote:
On Aug 1, 2008, at 2:40 PM, Thomas Enebo wrote:
[#12096] Next 1.8.6 on Sept. 22 — Urabe Shyouhei <shyouhei@...>
Hi all.
Well there is this patch:
Rocky Bernstein wrote:
-----BEGIN PGP SIGNED MESSAGE-----
On 9/10/07, M. Edward (Ed) Borasky <znmeb@cesmail.net> wrote:
On Sunday 09 September 2007, Urabe Shyouhei wrote:
[#12118] Is this expected behavior? — James Edward Gray II <james@...>
As part of TextMate's development process we have an application on a
[#12140] Strange ripper bug — "Alexey I. Froloff" <sir_raorn@...>
Sometimes, ripper can't parse valid code (trunk from yesterday).
On [Wed, 12.09.2007 03:05], Alexey I. Froloff wrote:
On [Thu, 13.09.2007 02:58], Kirill A. Shutemov wrote:
Hi,
[#12143] Blocks passed to constructors - is this behavior by design? — "John Lam (CLR)" <jflam@...>
class Foo
It's because the constructor isn't actually finished executing, and the
[#12166] Wrapped loads and Module::nesting — David Flanagan <david@...>
When I call load with a second argument of true, the file is loaded into
[#12184] Misleading error message with URI::InvalidURIError — "Douglas Tan" <bianster@...>
The error message that URI.parse displays when supplied with a uri
[#12200] class variables and singleton classes — Eric Hodel <drbrain@...7.net>
Class variables in singleton classes are separate from class
[#12201] how about actors implemented in ruby-core itself — hemant <gethemant@...>
Hi,
On 9/20/07, hemant <gethemant@gmail.com> wrote:
Hi,
[#12220] `ri Kernel#open` Bug — James Edward Gray II <james@...>
$ ri -T Kernel#open
On Sep 21, 2007, at 16:42, James Edward Gray II wrote:
On Sep 21, 2007, at 8:13 PM, Eric Hodel wrote:
On Sep 22, 2007, at 7:28 AM, Jim Freeze wrote:
[#12231] Wrong return value with []= — Michael Neumann <mneumann@...>
Hi,
[#12237] Latest benchmarks — "M. Edward (Ed) Borasky" <znmeb@...>
I just ran the benchmark suite that comes with Ruby 1.9 on my 32-bit
[#12247] Fibers as semi-coroutines enabled by default — David Flanagan <david@...>
Hi all,
Hi,
[#12248] arbitrary Unicode characters in identifiers? — David Flanagan <david@...>
[#12255] Array#-, &, |, uniq don't use == — murphy <murphy@...>
Hello!
[#12284] gc.c -- possible logic error? — Hugh Sasse <hgs@...>
I've been looking at Tom Copeland's memory allocation problem:
On Fri, 28 Sep 2007 21:57:22 +0900, Hugh Sasse <hgs@dmu.ac.uk> wrote:
On Sat, 29 Sep 2007, MenTaLguY wrote:
In article <Pine.GSO.4.64.0709281302390.26570@brains.eng.cse.dmu.ac.uk>,
On Tue, 2 Oct 2007, Tanaka Akira wrote:
In article <Pine.GSO.4.64.0710011802250.11425@brains.eng.cse.dmu.ac.uk>,
On Tue, 2 Oct 2007, Tanaka Akira wrote:
On Oct 1, 2007, at 10:54 , Hugh Sasse wrote:
On Tue, 2 Oct 2007, Eric Hodel wrote:
[#12294] String.force_encoding — David Flanagan <david@...>
Hi,
[#12305] Will 1.8.6 remain compiled with VC6? — "Luis Lavena" <luislavena@...>
Hello Core developers.
On 9/30/07, Luis Lavena <luislavena@gmail.com> wrote:
On 9/30/07, Austin Ziegler <halostatue@gmail.com> wrote:
On 9/30/07, Luis Lavena <luislavena@gmail.com> wrote:
On 9/30/07, Austin Ziegler <halostatue@gmail.com> wrote:
I know this not the right place to post this, but I'll start here
Austin Ziegler wrote:
> Yes, let's take this to Ruby-Talk so we can all participate. Most of the
On 9/30/07, Charlie Savage <cfis@savagexi.com> wrote:
On 01/10/2007, Charlie Savage <cfis@savagexi.com> wrote:
On 10/3/07, Michal Suchanek <hramrach@centrum.cz> wrote:
[PATCH] XMLRPC::ModRubyServer
Made some changes to the XMLRPC::ModRubyServer class that allows it to be loaded as a RubyHandler by ModRuby and prevent it from being reloaded every time a request is made. This can greatly improve performance when the server takes a while to load, such as when it is establishing database connections or loading lots of libraries. As well, I modified the way that the `XMLRPC::Server.dispatch` method calls the service_hook Proc object so that it also passes the name of the XML-RPC method that is called along with the Proc object associated with the name, and the arguments for the method. Sincerely, Chris Wailes
Attachments (1)
Index: lib/xmlrpc/server.rb
===================================================================
--- lib/xmlrpc/server.rb (revision 12809)
+++ lib/xmlrpc/server.rb (working copy)
@@ -129,9 +129,9 @@
The service-hook is called with a (({Proc})) object and with the parameters for this (({Proc})).
An example:
- server.set_service_hook {|obj, *args|
+ server.set_service_hook {|method_name, method_obj, *args|
begin
- ret = obj.call(*args) # call the original service-method
+ ret = method_obj.call(*args) # call the original service-method
# could convert the return value
resuce
# rescue exceptions
@@ -333,7 +333,7 @@
if @service_hook.nil?
return obj.call(*args)
else
- return @service_hook.call(obj, *args)
+ return @service_hook.call(methodname, obj, *args)
end
end
end
@@ -498,44 +498,91 @@
=begin
= XMLRPC::ModRubyServer
-== Description
-Implements a XML-RPC server, which works with Apache mod_ruby.
+== Synopsis
+ruby_file.rb:
+ def make_server
+ server = XMLRPC::ModRubyServer.new()
-Use it in the same way as CGIServer!
+ server.add_handler("michael.add") do |a,b|
+ a + b
+ end
+ server.add_handler("michael.div") do |a,b|
+ if b == 0
+ raise XMLRPC::FaultException.new(1, "division by zero")
+ else
+ a / b
+ end
+ end
+
+ server.set_default_handler do |name, *args|
+ raise XMLRPC::FaultException.new(-99, "Method #{name} missing" + " or wrong number of parameters!")
+ end
+
+ return server
+ end
+
+ruby.conf:
+#This is your mod_ruby configuration file.
+ LoadModule ruby_module modules/mod_ruby.so
+
+ DirectoryIndex index.rb
+
+ AddType text/html.rb
+ <IfModule mod_ruby.c>
+ RubyRequire apache/ruby-run
+
+ #If your file is at /path/to/your/ruby_file.rb
+ RubyAddPath /path/to/your
+ RubyRequire ruby_file
+
+ # Exec *.rb as ruby scripts.
+ <Files *.rb>
+ SetHandler ruby-object
+ RubyHandler Apache::RubyRun.instance
+ Options +ExecCGI
+ </Files>
+ </IfModule>
+
+ #This location doesn't actually corispond to any file so you can make it any path you want.
+ #This example makes the server address http://example.com/xmlrpcserver
+ <Location /xmlrpcserver>
+ SetHandler ruby-object
+ RubyHandler make_server
+
+ Order allow,deny
+ Allow from all
+ </Location>
+
+== Description
+Implements a XML-RPC server, which works with Apache mod_ruby. By providing the 'handler' method a ModRubyServer object
+can be used as a RubyHandler by mod_ruby. This prevents the server from being instantiated every time a request is made.
== Superclass
((<XMLRPC::BasicServer>))
-=end
+=end
class ModRubyServer < BasicServer
+ def handler(apache_request)
+ @ap = apache_request
- def initialize(*a)
- @ap = Apache::request
- super(*a)
- end
+ header = Hash.new
+ @ap.headers_in.each {|key, value| header[key.capitalize] = value}
- def serve
- catch(:exit_serve) {
- header = {}
- @ap.headers_in.each {|key, value| header[key.capitalize] = value}
+ length = header['Content-length'].to_i
- length = header['Content-length'].to_i
+ http_error(405, "Method Not Allowed") unless @ap.request_method == "POST"
+ http_error(400, "Bad Request") unless parse_content_type(header['Content-type']).first == "text/xml"
+ http_error(411, "Length Required") unless length > 0
- http_error(405, "Method Not Allowed") unless @ap.request_method == "POST"
- http_error(400, "Bad Request") unless parse_content_type(header['Content-type']).first == "text/xml"
- http_error(411, "Length Required") unless length > 0
+ @ap.binmode
+ data = apache_request.read(length)
- # TODO: do we need a call to binmode?
- @ap.binmode
- data = @ap.read(length)
+ http_error(400, "Bad Requiest") if data.nil? or data.size != length
- http_error(400, "Bad Request") if data.nil? or data.size != length
+ http_write(process(data), 200, "Content-type" => "text/xml; charset=utf-8")
- http_write(process(data), 200, "Content-type" => "text/xml; charset=utf-8")
- }
- end
-
-
+ return Apache::OK
+ end
private
def http_error(status, message)