[#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] Improving XML-RPC ModRuby support
Attached are two patches. The first one changes the way that ModRuby is supported. Instead of loading the server and responding to a request every time a request is made a persistent object is generated that can be used by ModRuby as a RubyHandler. This should improve performance. The second patch changes the XMLRPC::Server::dispatch method so that it passes the 'methodname' to the service_hook object. This should allow more functionality inside the service hook, such as conditional logging or access control to functions. Chris Wailes P.S. This is my third attempt to submit this patch with no comments... hopefully it will get noticed this time.
Attachments (2)
Index: lib/xmlrpc/server.rb
===================================================================
--- lib/xmlrpc/server.rb (revision 13445)
+++ lib/xmlrpc/server.rb (working copy)
@@ -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")
- }
+ return Apache::OK
end
-
-
private
def http_error(status, message)
Index: lib/xmlrpc/server.rb
===================================================================
--- lib/xmlrpc/server.rb (revision 13445)
+++ 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 {|methodname, 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