Re: [PATCH] instaweb: added support Ruby's WEBrick server

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



mike dalessio <mike@xxxxxxx> wrote:
> running the webrick server with git requires Ruby and Ruby's YAML and
> Webrick libraries (both of which come standard with Ruby). nice for
> single-user standalone invocations.
> 
> the --httpd=webrick option generates a ruby script on the fly to read
> httpd.conf options and invoke the web server via library call. this
> script is placed in the .git/gitweb directory. it also generates a
> shell script in a feeble attempt to invoke ruby in a portable manner,
> which assumes that 'ruby' is in the user's $PATH.
> 
> Signed-off-by: Mike Dalessio <mike@xxxxxxx>

Acked-by: Eric Wong <normalperson@xxxxxxxx>

> ---
>  Documentation/git-instaweb.txt |    3 +-
>  git-instaweb.sh                |   44 +++++++++++++++++++++++++++++++++++++++-
>  2 files changed, 45 insertions(+), 2 deletions(-)
> 
> diff --git a/Documentation/git-instaweb.txt b/Documentation/git-instaweb.txt
> index cec60ee..914fc4c 100644
> --- a/Documentation/git-instaweb.txt
> +++ b/Documentation/git-instaweb.txt
> @@ -27,7 +27,8 @@ OPTIONS
>  	The HTTP daemon command-line that will be executed.
>  	Command-line options may be specified here, and the
>  	configuration file will be added at the end of the command-line.
> -	Currently, lighttpd and apache2 are the only supported servers.
> +	Currently, lighttpd, apache2 and webrick are the only supported
> +	servers.
>  	(Default: lighttpd)
>  
>  -m|--module-path::
> diff --git a/git-instaweb.sh b/git-instaweb.sh
> index b79c6b6..803a754 100755
> --- a/git-instaweb.sh
> +++ b/git-instaweb.sh
> @@ -37,7 +37,9 @@ start_httpd () {
>  	else
>  		# many httpds are installed in /usr/sbin or /usr/local/sbin
>  		# these days and those are not in most users $PATHs
> -		for i in /usr/local/sbin /usr/sbin
> +		# in addition, we may have generated a server script
> +		# in $fqgitdir/gitweb.
> +		for i in /usr/local/sbin /usr/sbin $fqgitdir/gitweb
>  		do
>  			if test -x "$i/$httpd_only"
>  			then
> @@ -137,6 +139,43 @@ GIT_DIR="$fqgitdir"
>  export GIT_EXEC_PATH GIT_DIR
>  
>  
> +webrick_conf () {
> +	# generate a standalone server script in $fqgitdir/gitweb.
> +	cat > "$fqgitdir/gitweb/$httpd.rb" <<EOF
> +require 'webrick'
> +require 'yaml'
> +options = YAML::load_file(ARGV[0])
> +options[:StartCallback] = proc do
> +  File.open(options[:PidFile],"w") do |f|
> +    f.puts Process.pid
> +  end
> +end
> +options[:ServerType] = WEBrick::Daemon
> +server = WEBrick::HTTPServer.new(options)
> +['INT', 'TERM'].each do |signal|
> +  trap(signal) {server.shutdown}
> +end
> +server.start
> +EOF
> +	# generate a shell script to invoke the above ruby script,
> +	# which assumes _ruby_ is in the user's $PATH. that's _one_
> +	# portable way to run ruby, which could be installed anywhere,
> +	# really.
> +	cat > "$fqgitdir/gitweb/$httpd" <<EOF
> +#! /bin/sh
> +ruby $fqgitdir/gitweb/$httpd.rb \$*
> +EOF
> +	chmod +x "$fqgitdir/gitweb/$httpd"
> +
> +	cat > "$conf" <<EOF
> +:Port: $port
> +:DocumentRoot: "$fqgitdir/gitweb"
> +:DirectoryIndex: ["gitweb.cgi"]
> +:PidFile: "$fqgitdir/pid"
> +EOF
> +	test "$local" = true && echo ':BindAddress: "127.0.0.1"' >> "$conf"
> +}
> +
>  lighttpd_conf () {
>  	cat > "$conf" <<EOF
>  server.document-root = "$fqgitdir/gitweb"
> @@ -237,6 +276,9 @@ case "$httpd" in
>  *apache2*)
>  	apache2_conf
>  	;;
> +webrick)
> +	webrick_conf
> +	;;
>  *)
>  	echo "Unknown httpd specified: $httpd"
>  	exit 1
> -- 
> 1.5.2.5
> 

-- 
Eric Wong
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux