# Ruby

## Overview

Ruby is a dynamic, open source programming language with a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write. The Ruby support is part of the `camel-script` module.

## Adding the script module

To use Ruby in your routes you need to add a dependency on `camel-script` to your project as shown in Example 17, “Adding the camel-script dependency”.

Example 17. Adding the camel-script dependency

    <!-- Maven POM File -->
    ...
    <dependencies>
      ...
      <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-script</artifactId>
        <version>${camel-version}</version>
      </dependency>
      ...
    </dependencies>

## Built-in attributes

Table 9, “Ruby attributes” lists the built-in attributes that are accessible when using Ruby.

Table 9. Ruby attributes

Attribute | Type | Value
--- | --- | ---
`context` | `org.apache.camel.CamelContext` | The Camel Context
`exchange` | `org.apache.camel.Exchange` | The current Exchange
`request` | `org.apache.camel.Message` | The IN message
`response` | `org.apache.camel.Message` | The OUT message

The attributes all set at `ENGINE_SCOPE`.

## Example

Example 18, “Route using Ruby” shows a route that uses Ruby.

Example 18. Route using Ruby

    <camelContext>
      <route>
        <from uri="direct:start"/>
        <choice>
          <when>
            <langauge langauge="ruby">$request.headers['user'] == 'admin'</langauge>
            <to uri="seda:adminQueue"/>
          </when>
          <otherwise>
            <to uri="seda:regularQueue"/>
          </otherwise>
        </choice>
      </route>
    </camelContext>