diff --git a/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/Configuration.java b/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/Configuration.java
index c9c25a9..511a296 100644
--- a/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/Configuration.java
+++ b/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/Configuration.java
@@ -33,9 +33,11 @@
 import java.util.concurrent.ConcurrentSkipListSet;
 import java.util.concurrent.CopyOnWriteArrayList;
 
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.ENGINETYPE_JSF_RUBY;
 import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.ENGINE_TYPE_JSF_GROOVY;
 import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.ENGINE_TYPE_JSF_JAVA;
 import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.GROOVY_FILE_ENDING;
+import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.RUBY_FILE_ENDING;
 import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.INIT_PARAM_INITIAL_COMPILE;
 import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.INIT_PARAM_RESOURCE_PATH;
 import static org.apache.myfaces.extensions.scripting.core.api.ScriptingConst.INIT_PARAM_SCRIPTING_ADDITIONAL_CLASSPATH;
@@ -153,6 +155,8 @@
                 return JAVA_FILE_ENDING;
             case ENGINE_TYPE_JSF_GROOVY:
                 return GROOVY_FILE_ENDING;
+            case ENGINETYPE_JSF_RUBY:
+                return RUBY_FILE_ENDING;
             default:
                 throw new UnsupportedOperationException("Engine type unknown");
         }
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 363e893..51eb253 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
@@ -103,6 +103,8 @@
     public static final String GROOVY_FILE_ENDING = ".groovy";
     public static final String JAVA_FILE_ENDING = ".java";
     public static final String SCALA_FILE_ENDING = ".scala";
+    public static final String RUBY_FILE_ENDING = ".rb";
+
     public static final String JSR199_COMPILER = "org.apache.myfaces.extensions.scripting.loaders.java.jsr199.JSR199Compiler";
     public static final String JAVA5_COMPILER = "org.apache.myfaces.extensions.scripting.loaders.java.compiler.JavacCompiler";
     public static final String SCOPE_SESSION = "session";
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
index 3a520d0..452a955 100644
--- 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
@@ -53,6 +53,15 @@
     {
         targetPath.mkdirs();
         String sources = getSourceFiles();
+        return compile(sourcePath, targetPath, sources);
+    }
+
+    public CompilationResult compile(File sourcePath, File targetPath, String sources)
+    {
+        targetPath.mkdirs();
+        if(targetPath.isDirectory() && targetPath.exists()){
+            System.out.println("targetpath is there");
+        }
         String classPath = ClassLoaderUtils.buildClasspath(ClassLoaderUtils.getDefaultClassLoader());
 
         StringBuilder commandString = new StringBuilder();
@@ -60,7 +69,7 @@
         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<< '-t" + targetPath.getAbsolutePath() + "'\n");
         commandString.append("options<< '-c" + classPath + " '\n");
         commandString.append("options<< '" + sources + " '\n");
         commandString.append("$status = JRuby::Compiler::compile_argv(options) \n");
@@ -69,6 +78,12 @@
         try
         {
             engine.eval(commandString.toString());
+            String status = (String) engine.get("status");
+            if(status.equals("0")) {
+                return null;
+            }
+            //TODO parse the result and return a meaningful compilationresult
+            return null;
         }
         catch (ScriptException e)
         {
diff --git a/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/JRubyCompilerTest.java b/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/JRubyCompilerTest.java
new file mode 100644
index 0000000..a9b48db
--- /dev/null
+++ b/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/JRubyCompilerTest.java
@@ -0,0 +1,59 @@
+/*
+ * 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.common.util.FileUtils;
+import org.junit.Test;
+
+import java.io.File;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class JRubyCompilerTest
+{
+    private static final String ROOT_DIR =
+            "/Users/werpu2/development/workspace/extscript_trunk/extscript-core-root/extscript-core";
+    private static final String PROBE1 = "src/test/resources/compiler/TestProbe1.rb";
+    private static final String PROBE2 = "src/test/resources/compiler/TestProbe2.rb";
+    private static final String RESOURCES = "src/test/resources/";
+
+    File probe1;
+    File probe2;
+    File root;
+
+    private static final String RESULT_HAS_NO_ERRORS = "result has no errors";
+    private static final String TARGET_DIR_EXISTS = "targetDir exists files are compiled into the targetDir";
+    private static final String CLASSFILE1_IS_COMPILED = "Classfile1 is compiled into the targetDir";
+    private static final String CLASSFILE1_IS_COMPILED1 = "Classfile1 is compiled into the target";
+    private static final String CLASSFILE2_IS_COMPILED = "Classfile2 is compiled into the target";
+
+    @Test
+    public void basicCompilerTest()
+    {
+        File tempDir = FileUtils.getTempDir();
+        tempDir.mkdirs();
+        JRubyCompiler compiler = new JRubyCompiler();
+        compiler.compile(new File(ROOT_DIR), tempDir, File.separator + PROBE1);
+    }
+
+}
diff --git a/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/RubyCompilerTest.java b/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/RubyCompilerTest.java
deleted file mode 100644
index 27089f5..0000000
--- a/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/core/engine/compiler/RubyCompilerTest.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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;
-
-/**
- * @author Werner Punz (latest modification by $Author$)
- * @version $Revision$ $Date$
- */
-
-public class RubyCompilerTest
-{
-}
