camel-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From acosent...@apache.org
Subject [1/3] camel git commit: Added camel-ruby docs to Gitbook
Date Thu, 19 May 2016 12:02:42 GMT
Repository: camel
Updated Branches:
  refs/heads/master 2a79f9cef -> 056990397


Added camel-ruby docs to Gitbook


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/80e6c75a
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/80e6c75a
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/80e6c75a

Branch: refs/heads/master
Commit: 80e6c75ab00765d3cd609f7b1c89df1d1408e46e
Parents: 2a79f9c
Author: Andrea Cosentino <ancosen@gmail.com>
Authored: Thu May 19 13:39:20 2016 +0200
Committer: Andrea Cosentino <ancosen@gmail.com>
Committed: Thu May 19 13:39:20 2016 +0200

----------------------------------------------------------------------
 components/camel-ruby/src/main/docs/ruby.adoc | 179 +++++++++++++++++++++
 docs/user-manual/en/SUMMARY.md                |   1 +
 2 files changed, 180 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/80e6c75a/components/camel-ruby/src/main/docs/ruby.adoc
----------------------------------------------------------------------
diff --git a/components/camel-ruby/src/main/docs/ruby.adoc b/components/camel-ruby/src/main/docs/ruby.adoc
new file mode 100644
index 0000000..e0e1d4d
--- /dev/null
+++ b/components/camel-ruby/src/main/docs/ruby.adoc
@@ -0,0 +1,179 @@
+[[Ruby-Ruby]]
+Ruby
+~~~~
+
+Camel supports http://www.ruby-lang.org/en/[Ruby] among other
+link:scripting-languages.html[Scripting Languages] to allow an
+link:expression.html[Expression] or link:predicate.html[Predicate] to be
+used in the link:dsl.html[DSL] or link:xml-configuration.html[Xml
+Configuration].
+
+To use a Ruby expression use the following Java code
+
+[source,java]
+-----------------------------------
+... ruby("someRubyExpression") ... 
+-----------------------------------
+
+For example you could use the *ruby* function to create an
+link:predicate.html[Predicate] in a link:message-filter.html[Message
+Filter] or as an link:expression.html[Expression] for a
+link:recipient-list.html[Recipient List]
+
+[[Ruby-Example]]
+Example
+^^^^^^^
+
+In the sample below we use Ruby to create a
+link:predicate.html[Predicate] use in the route path, to route exchanges
+from admin users to a special queue.
+
+[source,java]
+-------------------------------------------------------------------------------------
+    from("direct:start")
+        .choice()
+            .when().ruby("$request.headers['user'] == 'admin'").to("seda:adminQueue")
+        .otherwise()
+            .to("seda:regularQueue");
+-------------------------------------------------------------------------------------
+
+And a Spring DSL sample as well:
+
+[source,xml]
+----------------------------------------------------------------
+    <route>
+        <from uri="direct:start"/>
+        <choice>
+            <when>
+                <ruby>$request.headers['user'] == 'admin'</ruby>
+                <to uri="seda:adminQueue"/>
+            </when>
+            <otherwise>
+                <to uri="seda:regularQueue"/>
+            </otherwise>
+        </choice>
+    </route>
+----------------------------------------------------------------
+
+[[Ruby-ScriptContext]]
+ScriptContext
+^^^^^^^^^^^^^
+
+The JSR-223 scripting languages ScriptContext is pre configured with the
+following attributes all set at `ENGINE_SCOPE`:
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Attribute |Type |Value
+
+|context |`org.apache.camel.CamelContext` |The Camel Context ( It cannot be used in groovy)
+
+|camelContext |`org.apache.camel.CamelContext` |The Camel Context
+
+|exchange |`org.apache.camel.Exchange` |The current Exchange
+
+|request |`org.apache.camel.Message` |The message (IN message)
+
+|response |`org.apache.camel.Message` |*Deprecated*: The OUT message. The OUT message if
null by default. Use
+IN message instead.
+
+|properties |`org.apache.camel.builder.script.PropertiesFunction` |*Camel 2.9:* Function
with a `resolve` method to make it easier to use
+Camels link:properties.html[Properties] component from scripts. See
+further below for example.
+|=======================================================================
+
+See link:scripting-languages.html[Scripting Languages] for the list of
+languages with explicit DSL support.
+
+[[Ruby-AdditionalargumentstoScriptingEngine]]
+Additional arguments to ScriptingEngine
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+*Available as of Camel 2.8*
+
+You can provide additional arguments to the `ScriptingEngine` using a
+header on the Camel message with the key `CamelScriptArguments`. +
+ See this example:
+
+[[Ruby-Usingpropertiesfunction]]
+Using properties function
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+*Available as of Camel 2.9*
+
+If you need to use the link:properties.html[Properties] component from a
+script to lookup property placeholders, then its a bit cumbersome to do
+so. For example to set a header name myHeader with a value from a property
+placeholder, which key is provided in a header named "foo".
+
+[source,java]
+{% raw %}
+--------------------------------------------------------------------------------------------------------------
+.setHeader("myHeader").groovy("context.resolvePropertyPlaceholders('{{' + request.headers.get('foo')
+ '}}')")
+--------------------------------------------------------------------------------------------------------------
+{% endraw %}
+
+From Camel 2.9 onwards you can now use the properties function and the
+same example is simpler:
+
+[source,java]
+-------------------------------------------------------------------------------
+.setHeader("myHeader").groovy("properties.resolve(request.headers.get('foo'))")
+-------------------------------------------------------------------------------
+
+[[Ruby-Loadingscriptfromexternalresource]]
+Loading script from external resource
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+*Available as of Camel 2.11*
+
+You can externalize the script and have Camel load it from a resource
+such as `"classpath:"`, `"file:"`, or `"http:"`. +
+ This is done using the following syntax: `"resource:scheme:location"`,
+eg to refer to a file on the classpath you can do:
+
+[source,java]
+-------------------------------------------------------------------
+.setHeader("myHeader").groovy("resource:classpath:mygroovy.groovy")
+-------------------------------------------------------------------
+
+[[Ruby-Howtogettheresultfrommultiplestatementsscript]]
+How to get the result from multiple statements script
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+*Available as of Camel 2.14*
+
+As the scripteengine evale method just return a Null if it runs a
+multiple statments script. Camel now look up the value of script result
+by using the key of "result" from the value set. If you have multiple
+statements script, you need to make sure you set the value of result
+variable as the script return value.
+
+[source,text]
+-------------------------------------------------------------
+bar = "baz";
+# some other statements ... 
+# camel take the result value as the script evaluation result
+result = body * 2 + 1
+-------------------------------------------------------------
+
+[[Ruby-Dependencies]]
+Dependencies
+^^^^^^^^^^^^
+
+To use scripting languages in your camel routes you need to add the a
+dependency on *camel-script* which integrates the JSR-223 scripting
+engine.
+
+If you use maven you could just add the following to your pom.xml,
+substituting the version number for the latest & greatest release (see
+link:download.html[the download page for the latest versions]).
+
+[source,xml]
+---------------------------------------
+<dependency>
+  <groupId>org.apache.camel</groupId>
+  <artifactId>camel-script</artifactId>
+  <version>x.x.x</version>
+</dependency>
+---------------------------------------

http://git-wip-us.apache.org/repos/asf/camel/blob/80e6c75a/docs/user-manual/en/SUMMARY.md
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/SUMMARY.md b/docs/user-manual/en/SUMMARY.md
index 2dd9e51..f80232b 100644
--- a/docs/user-manual/en/SUMMARY.md
+++ b/docs/user-manual/en/SUMMARY.md
@@ -242,6 +242,7 @@
     * [Jsonpath](jsonpath.adoc)
     * [JXPath](jxpath.adoc)
     * [Ognl](ognl.adoc)
+    * [Ruby](ruby.adoc)
     * [SQL](josql.adoc)
 
 * Data Formats


Mime
View raw message