It seems like I got into a hacking frenzy after yesterday’s Ruby plugins for Kate. Today I sat down and took another look at the KRubyPluginFactory to implement KIO slave support.
So here it is, our very first Ruby Hello World KIO slave:
# kate: space-indent on; indent-width 2;
require 'korundum4'
require 'kio'
module Rubytest
  class Main < KIO::SlaveBase
    def initialize protocol, pool_sock, app_sock
      super protocol, pool_sock, app_sock
    end
    def get url
      mimeType 'text/plain'
      data Qt::ByteArray.new('Hello World from our first Ruby KIO slave!')
      finished
    end
  end
end
We’ll also need a rubytest.protocol file that describes our new protocol:
[Protocol] exec=krubypluginfactory input=none output=filesystem protocol=rubytest reading=true
To test it, you just have to type rubytest:/ into konqi’s addressbar and you should see nice hello world greeting.
Some more info on the structure of a Ruby kio slave: the Ruby script always has to be named ‘main.rb’ and the SlaveBase derived class always ‘Main’. The module name is the camelized form of the protocol (so a protocol ‘foo_bar’ would map to a module name ‘FooBar’). The script has to reside in <kde prefix>/share/apps/kio_<protocol name>.
The .protocol file itself should be installed to <kde prefix>/share/kde4/services.
As with the Kate plugin, I packaged this example in a tarball. It ships a Makefile and can easily be installed to your home directory with ‘make install’.
I committed this feature to both trunk and the 4.5 branch – so you can soon start coding your own KIO slaves in Ruby! 🙂