Skip to content


Subversion checkout URL

You can clone with
Download ZIP
PL/Ruby procedural language for the PostgreSQL database system by Guy Decoux
C Ruby Shell
Fetching latest commit...
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


 PL/Ruby is a loadable procedural language for the Postgres database
system  that enable the Ruby language to create functions and trigger

* Prerequisite

   ruby >= 1.4.4
   source of postgresql (for some include files). 

  For PostgreSQL 7.2  the source is not required if all headers was installed.
  Command (see INSTALL in the directory postgresql-7.2)

          make install-all-headers 

* Installation

   ruby extconf.rb
   make install

 You may need to specify :

  --with-pgsql-dir=<prefix for include and lib directories for PostgreSQL>

  --with-pgsql-include=<include file directory for PostgreSQL>

  --with-pgsql-lib=<library dir for PostgreSQL>

  --with-pgsql-srcinc=<include file *from* the source of PostgreSQL>
     pgsql-srcinc must contains, for example, the file catalog/pg_proc.h
     (not needed if `make install-all-headers' was executed)

  --with-pgsql-version=<release number for PostgreSQL, actually 65, 70, 71
                        or 72 i.e. major and minor number>

    by default plruby try to convert a postgres type to a ruby class
    (for PostgreSQL >= 72). This option give the possibility to disable
    all conversions

  --with_suffix=<suffix to add>

    For example

    ruby extconf.rb --with-suffix=_geo

    will create

 Example :

  ruby extconf.rb --with-pgsql-include=/usr/include/postgresql \
                  --with-pgsql-lib=/usr/lib \

* Test (and examples)

 WARNING : if plruby was compiled with --enable-conversion
 you must *FIRST* run `make install' before `make test'

  make test

 this will run the 2 commands :

  ( cd test/plt; ./runtest )
  ( cd test/plp; ./runtest )

 The database plruby_test is created and then destroyed. Don't use it if 
 such a database exist on your system.

* Now create the PL/Ruby language in PostgreSQL

    Since the pg_language system catalog is private to each database,
    the new language can be created only for individual databases,
    or in the template1 database. In the latter case, it is
    automatically available in all newly created databases.

    The commands to create the new language are:

        create function plruby_call_handler () returns opaque
                as 'path-to-plruby-shared-lib'
                language 'C';

        create trusted procedural language 'plruby'
                handler plruby_call_handler
                lancompiler 'PL/Ruby';

    *** WARNING for PostgreSQL > 7.0.2 ***
              for the new interface to fmgr, the  language must be specified
              as 'newC' rather than 'C'

    *** WARNING for PostgreSQL >= 7.1.rc4 ***
              the language must be specified as 'C' rather than 'newC'

    The trusted keyword on create procedural language tells PostgreSQL,
    that all users (not only those with superuser privilege) are
    permitted to create functions with LANGUAGE 'plruby'. This is
    absolutely safe, because there is nothing a normal user can do
    with PL/Ruby, to get around access restrictions he/she has.

* Documentation : see plruby.rd and plruby.html

* Copying

 This extension module is copyrighted free software by Guy Decoux

 You can redistribute it and/or modify it under the same term as

Guy Decoux <>

Something went wrong with that request. Please try again.