从Java运行Ruby命令行应用程序

时间:2014-06-03 17:18:59

标签: java ruby unit-testing amazon-s3 jruby

我希望能够从Ruby运行命令行界面Java应用程序。我想这样做,所以我可以在一些测试之前和之后开始和停止FakeS3(轻量级S3服务器),以便测试一些使用Java AWS SDK的代码。测试必须能够从我的机器以及Jenkins构建机器

运行

要求是:

  1. 不能对正在运行的系统进行任何更改(不允许安装应用程序,重新配置系统设置等)
  2. 独立于平台
  3. 我尝试了几种选择,但还没有成功:

    1. Run using jruby - 我尝试在项目中的各种不同脚本文件上调用evalScript,但我总是得到一个例外,说明找不到使用require包含的文件。我找不到任何运行未包含在一个文件中的Ruby脚本的例子,也不知道如何告诉运行时要包含的路径
    2. Compile with rubyflux - 再次尝试编译多个文件,但它生成的Java代码总是一样,并没有真正做任何事情
    3. 我是否可以尝试更简单的解决方案,或者我可以做些什么来使其中一种方法有效?

1 个答案:

答案 0 :(得分:1)

我认为最好的方法是使用jruby。您只需配置加载路径即可。

ScriptingContainer sc = new ScriptingContainer();
sc.setLoadPaths(Arrays.asList("folder1", "folder2"));

File server = new File("server.rb");
sc.runScriptlet(new FileReader(server), server.getName());