diff --git a/extscript-core-root/extscript-core/pom.xml b/extscript-core-root/extscript-core/pom.xml
index b9ae164..de906b7 100644
--- a/extscript-core-root/extscript-core/pom.xml
+++ b/extscript-core-root/extscript-core/pom.xml
@@ -92,6 +92,11 @@
             <artifactId>groovy-all</artifactId>
             <version>${groovy.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.jruby</groupId>
+            <artifactId>jruby-complete</artifactId>
+            <version>1.7.0.preview2</version>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/ScriptingConst.java b/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/ScriptingConst.java
index a8584c1..363e893 100644
--- a/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/ScriptingConst.java
+++ b/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/ScriptingConst.java
@@ -60,6 +60,7 @@
     public static final int ENGINE_TYPE_JSF_GROOVY = 0;
     public static final int ENGINE_TYPE_JSF_JAVA = 1;
     public static final int ENGINE_TYPE_JSF_SCALA = 2;
+    public static final int ENGINETYPE_JSF_RUBY = 3;
     public static final int ARTIFACT_TYPE_UNKNOWN = -1;
     public static final int ARTIFACT_TYPE_MANAGEDBEAN = 1;
     public static final int ARTIFACT_TYPE_MANAGEDPROPERTY = 2;
diff --git a/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/CompilerConst.java b/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/CompilerConst.java
index ae940d0..f64b375 100644
--- a/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/CompilerConst.java
+++ b/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/api/CompilerConst.java
@@ -37,6 +37,8 @@
     public static final String JC_SOURCEPATH = "-sourcepath";
     public static final String JC_DEBUG = "-g";
     public static final String JAVA_WILDCARD = "*.java ";
+    public static final String RUBY_WILDARD = "*.ruby";
+
     public static final String JC_VERBOSE = "-verbose";
     @SuppressWarnings("unused")
     public static final String JC_SOURCE = "-source";
diff --git a/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/JRubyCompiler.java b/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/JRubyCompiler.java
new file mode 100644
index 0000000..3a520d0
--- /dev/null
+++ b/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/JRubyCompiler.java
@@ -0,0 +1,115 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.myfaces.extensions.scripting.core.engine.compiler;
+
+import org.apache.myfaces.extensions.scripting.core.api.Configuration;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.common.util.ClassLoaderUtils;
+import org.apache.myfaces.extensions.scripting.core.common.util.FileUtils;
+import org.apache.myfaces.extensions.scripting.core.engine.api.CompilationException;
+import org.apache.myfaces.extensions.scripting.core.engine.api.CompilationResult;
+
+import javax.script.ScriptEngine;
+import javax.script.ScriptEngineManager;
+import javax.script.ScriptException;
+import java.io.File;
+import java.util.List;
+
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.ENGINETYPE_JSF_RUBY;
+import static org.apache.myfaces.extensions.scripting.core.engine.api.CompilerConst.RUBY_WILDARD;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *          <p/>
+ *          A compiler for jruby which uses ruby and the standard JSR 233
+ *          for compiling classes into java classes
+ */
+
+public class JRubyCompiler implements org.apache.myfaces.extensions.scripting.core.engine.api.Compiler
+{
+
+    private static final String ENGINE_JRUBY = "jruby";
+
+    @Override
+    public CompilationResult compile(File sourcePath, File targetPath, ClassLoader classLoader) throws CompilationException
+    {
+        targetPath.mkdirs();
+        String sources = getSourceFiles();
+        String classPath = ClassLoaderUtils.buildClasspath(ClassLoaderUtils.getDefaultClassLoader());
+
+        StringBuilder commandString = new StringBuilder();
+        commandString.append("require 'jruby/jrubyc'\n");
+        commandString.append("options = Array.new \n");
+        commandString.append("options << '-d" + sourcePath.getAbsolutePath() + "'\n");
+        commandString.append("options<< '--javac' \n");
+        commandString.append("options<< '-t" + targetPath.getAbsolutePath() + " '\n");
+        commandString.append("options<< '-c" + classPath + " '\n");
+        commandString.append("options<< '" + sources + " '\n");
+        commandString.append("$status = JRuby::Compiler::compile_argv(options) \n");
+        ScriptEngineManager manager = new ScriptEngineManager();
+        ScriptEngine engine = manager.getEngineByName(ENGINE_JRUBY);
+        try
+        {
+            engine.eval(commandString.toString());
+        }
+        catch (ScriptException e)
+        {
+            e.printStackTrace();
+        }
+
+        return null;
+    }
+
+    private String getSourceFiles()
+    {
+        WeavingContext context = WeavingContext.getInstance();
+        Configuration configuration = context.getConfiguration();
+        List<File> sourceFiles = FileUtils.fetchSourceFiles(configuration.getWhitelistedSourceDirs
+                (ENGINETYPE_JSF_RUBY), RUBY_WILDARD);
+        StringBuilder sources = new StringBuilder(sourceFiles.size() * 30);
+        for (File sourceFile : sourceFiles)
+        {
+            sources.append(sourceFile.getAbsolutePath());
+            sources.append(" ");
+        }
+        return sources.toString();
+    }
+
+    public static void main(String... argv)
+    {
+        ScriptEngineManager manager = new ScriptEngineManager();
+        ScriptEngine engine = manager.getEngineByName(ENGINE_JRUBY);
+        try
+        {
+            engine.eval("require 'jruby/jrubyc'\n" +
+                    "$status = 'hello world' #JRuby::Compiler::compile_argv(ARGV)");
+
+            Object status = engine.get("status");
+            System.out.println(status.toString());
+        }
+        catch (ScriptException e)
+        {
+            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+        }
+
+    }
+
+}
diff --git a/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe1.java b/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/RubyCompilerTest.java
similarity index 73%
rename from extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe1.java
rename to extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/RubyCompilerTest.java
index 10dda06..27089f5 100644
--- a/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe1.java
+++ b/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/RubyCompilerTest.java
@@ -16,21 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package compiler;
+
+package org.apache.myfaces.extensions.scripting.core.engine.compiler;
 
 /**
- * a simple testprobe to check if the compiler api works
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
  */
 
-public class TestProbe1 {
-
-    private String testAttr;
-
-    public String getTestAttr() {
-        return testAttr;
-    }
-
-    public void setTestAttr(String testAttr) {
-        this.testAttr = testAttr;
-    }
-}
\ No newline at end of file
+public class RubyCompilerTest
+{
+}
diff --git a/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe1.rb b/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe1.rb
new file mode 100644
index 0000000..d5e9696
--- /dev/null
+++ b/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe1.rb
@@ -0,0 +1,15 @@
+# a small ruby testing class to test for a valid compilation
+# from the compiler
+# @author Werner Punz
+class TestProbe1
+  java_signature 'void helloWorld()'
+  def helloWorld
+      puts "Hello from Ruby"
+  end
+
+  java_signature 'public String stringReturn()'
+  def stringReturn
+    'hello world'
+  end
+
+end
diff --git a/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe2.rb b/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe2.rb
new file mode 100644
index 0000000..928ac85
--- /dev/null
+++ b/extscript-core-root/extscript-core/src/test/resources/compiler/TestProbe2.rb
@@ -0,0 +1,4 @@
+java_package 'compiler'
+class TestProbe2
+
+end
\ No newline at end of file
diff --git a/extscript-core-root/extscript-core/src/test/ruby/test.rb b/extscript-core-root/extscript-core/src/test/ruby/test.rb
new file mode 100644
index 0000000..9f34748
--- /dev/null
+++ b/extscript-core-root/extscript-core/src/test/ruby/test.rb
@@ -0,0 +1 @@
+putstr "hello world"
\ No newline at end of file
