SBSM has not test code for stuff like cookies, redirect, passthru, remote_host. Looking whether it is easy to add tests for these points.
steinwies.ch returns the following cookies (name, value, path, domain, expiration date)
_session_id 408e56abd4f72a9c694762e356b09da8 / steinwies.ch End Of Session sbsm-persistent-cookie language%3Den / steinwies.ch 10.10.2026, 08:35:321
Okay. The old apache config for mod_ruby contained a definition of RubyTransHandler Steinwies::TransHandler.instance. This is missing now. In the source code of mod_ruby I find the lines
AP_INIT_TAKE1("RubyTransHandler", ruby_cmd_trans_handler, NULL, OR_ALL,
"set translation handler object"),
<..>
static int ruby_trans_handler(request_rec *r)
{
ruby_dir_config *dconf = get_dir_config(r);
return ruby_handler(r, dconf->ruby_trans_handler, NULL,
rb_intern("translate_uri"), 0, 0);
}
This is used to translate the uri. Adapted SBSM::Request.new to use the following parameters def initialize(drb_uri, trans_handler, env, html_version = "html4"). I think this is much clearer. Also added the following lines at the beginning of sbsm/request/process
file_name = File.expand_path(File.join('doc', @request.path))
if File.file?(file_name)
if /css/i.match(File.basename(file_name))
@response.set_header('Content-Type', 'text/css')
else
@response.set_header('Content-Type', 'text/plain')
end
@response.write(File.open(file_name, File::RDONLY){|file| file.read})
return @response
end
The hard coded value of doc must still be replaced by a configuration value (or at least be possible to override). Also creating a config.ru file (instead of the doc/index.rbx) to start the WebServer. Content is
#!/usr/bin/env ruby
require 'sbsm/request'
lib_dir = File.expand_path(File.join(File.dirname(__FILE__), 'src').untaint)
$LOAD_PATH << lib_dir
require 'util/app'
# DRb.start_service('druby://localhost:0')
require 'rack'
require 'rack/show_exceptions'
Rack::Server.start(
:app => Rack::ShowExceptions.new(Rack::Lint.new(Rack::Steinwies.new)),
:Port => 9292,
)
Now the steinwie page displays correctly the home page, but navigation to a sub page always displays the home page. This must be correct.

Nota bene: Webserver is now being started using sudo -u apache /usr/local/bin/bundle exec rackup
Tried half an hour to use the rack-test gem to test sbsm. But it proved not so easy. Must begin again another time with a fresh mind.
Search a long time on where to add calls to the translate_uri. It still does not work and somehow wants to got from steinwies2.ngiger.ch -> steinwies.ch. Looks like the servername is not get set correctly. This was fixed by changing the line server_name: steinwies2.ngiger.ch in etc/config.yaml. But we still do display the correct site, eg. http://steinwies2.ngiger.ch/en/page/person/ still has the same content as http://steinwies2.ngiger.ch. Will fix this next week.
Saved my changes in the rack branches with commits:
Just stumbled via Ruby weekly on an article to build a Rack webserver in ruby. See https://ksylvest.com/posts/2016-10-04/building-a-rack-web-server-in-ruby?utm_source=rubyweekly&utm_medium=email