标签: jruby

使用JRuby的纯Java应用程序的Cucumber和/或RSpec

在使用Cucumber,RSpec和Ruby BDD在Ruby on Rails中做一些事情之后,在我的Java应用程序中回到JUnit对我来说感觉非常痛苦.我非常喜欢Ruby为测试带来的便利.

根据我的理解,理论上应该可以使用Cucumber功能,甚至可以使用纯Java应用程序进行RSpec模拟.

是否有人在生产中使用Cucumber和Java应用程序?

上次当我尝试将JRuby攻击到Java时,它正在Google App Engine上运行,这实际上有效,但App Engine 启动时间增加了大约10秒,这使得它毫无用处.

我不只是谈论Web应用程序.

java rspec jruby cucumber

5
推荐指数
1
解决办法
2111
查看次数

在Android中使用动态语言开始编程((J)Ruby,Clojure ......)

我一直在环顾四周,似乎无法找到任何看似"最新"的明确答案或进展.我见过一些有趣的项目,比如Mirah(以前的Duby),我正在调查一下.我见过JRuby用于将ruby编译成.dex失败了.我也一直在寻找Clojure,并意识到他们可能都与同一件事有关.

有没有人有关于如何开始并取得进展的任何提示?我不仅要问哪些框架可以提供帮助,更重要的是,我还要提出一个指导我的努力的理念/方向,以便开始.

java android dynamic-languages jruby clojure

5
推荐指数
1
解决办法
1887
查看次数

jruby有没有像gem这样的delayed_job?

我正在尝试将rails应用程序转换为jruby on rails.目前,jruby script/delayed_job run 给出:

/usr/lib/jruby/lib/ruby/gems/1.8/gems/delayed_job-2.0.3/lib/delayed/command.rb:50:in `each_object': ObjectSpace is disabled; each_object will only work with Class, pass -X+O to enable (RuntimeError)
    from /usr/lib/jruby/lib/ruby/gems/1.8/gems/delayed_job-2.0.3/lib/delayed/command.rb:50:in `daemonize'
    from script/delayed_job:5
Run Code Online (Sandbox Code Playgroud)

jruby有一个像delayed_job这样的宝石吗?

jruby jrubyonrails delayed-job

5
推荐指数
1
解决办法
1331
查看次数

在JRuby上生成.class/.java文件实现Java接口

我正在尝试在JRuby类中实现Java接口,如下所示:

require 'java'
java_package 'net.jruby.test'
java_import "net.jruby.test.Service"

class RubyService
  include Service

  java_signature 'int sum(int, int)'
  def sum(a,b)
    a + b
  end
end
Run Code Online (Sandbox Code Playgroud)

net.jruby.test.Service接口是死的简单:

package net.jruby.test;

public interface Service
{
  int sum(int a, int b);
}
Run Code Online (Sandbox Code Playgroud)

之后我生成.java类文件:

jrubyc --java ruby​​_service.rb

但是生成的.java文件(以及因此的.class文件)没有实现接口,看看:

public class RubyService extends RubyObject  {
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这个目标?

java jruby

5
推荐指数
1
解决办法
1732
查看次数

当部署为WAR时,JRuby中的线程安全Resque Worker

目前我们在JRuby中使用Resque,我们在开发时使用两种方式启动Worker.

  • 使用耙子:
QUEUE=* jruby -J-cp /path/to/library -S rake environment resque:work
Run Code Online (Sandbox Code Playgroud)
  • 以编程方式,通过Sinatra Rack App(或其他)初始化,最终通过以下方式调用类:

def start
   @worker = Resque::Worker.new(@queues)
   @worker.verbose = @vervose
   @worker.work(@interval)
end

def stop
   @worker.try(:shutdown)
end
Run Code Online (Sandbox Code Playgroud)

虽然这两种解决方案都适合我们开发.我担心在部署到Tomcat时这将如何工作.

在Ruby中,通常会产生或妖魔化工作者,然后使用监视工具来监视pid.

在部署时以编程方式启动Workers是否有意义?我想知道它是否在java中启动一个新线程或者混乱了jruby进程,如果不是我应该使用,还有另一个像quartz这样的调度库来启动一个worker?或者在部署任务中启动的rake任务?

我可以创建一个Worker模型,然后跟踪数据库中的worker,但这对我没有意义.

任何帮助或知识将不胜感激.

谢谢.

参考文献:

https://github.com/defunkt/resque

http://rubydoc.info/github/defunkt/resque/master/Resque/

http://blog.thomasmango.com/post/636319317/resque-in-production

https://gist.github.com/486161

java rake tomcat jruby resque

5
推荐指数
1
解决办法
1358
查看次数

在Android中开发本机应用程序的语言是成熟的[Java除外]

有没有Java以外的语言在没有脚本层/ AIR和其他第三方抽象的情况下在android中开发本机应用程序.

我最感兴趣的是Clojure,JRuby,Scala

android scala jruby clojure

5
推荐指数
1
解决办法
912
查看次数

从jruby-complete中消耗宝石

我可以jruby-complete从传递给它的jar中消耗宝石.但我想使用一个中央宝石回购.

这就是我现在能做的:

$ java -jar jruby-complete-1.6.5.jar -S gem list

*** LOCAL GEMS ***

rake (0.8.7)
sources (0.0.1)


$ java -jar jruby-complete-1.6.5.jar -rjar_of_gems.jar -S gem list

*** LOCAL GEMS ***

erubis (2.7.0)
mizuno (0.4.1)
rack (1.4.0)
rack-protection (1.2.0)
rake (0.8.7)
rna (0.0.101)
sinatra (1.3.2)
sources (0.0.1)
tilt (1.3.3)
Run Code Online (Sandbox Code Playgroud)

每次更新gem或者需要添加gem时都必须更改jar文件比我想做的更开销.

任何建议,必须有一种方法jruby-complete来指向像常规jruby宝石回购?

ruby gem rubygems jruby

5
推荐指数
1
解决办法
461
查看次数

RVM与JRuby 1.7.0"未知的Ruby解释器"

我使用以下Gemfile设置了一个基本的Rails应用程序:

source 'https://rubygems.org'    
ruby '1.9.3', engine: 'jruby', engine_version: '1.7.0'
gem 'rails', '3.2.8'
Run Code Online (Sandbox Code Playgroud)

每当我切换到项目目录时,我都会收到以下消息:

未知的ruby解释器版本:'1.9.3,引擎:jruby,engine_version:1.7.0'.

我正在运行RVM 1.16.17并安装了'jruby-1.7.0'.我的Gemfile引擎是否配置错误或我是否需要在RVM中更改某些内容?

ruby jruby bundler rvm

5
推荐指数
1
解决办法
1143
查看次数

在Jruby Rake的Ant集成中,处理ant的xml名称空间支持的策略

我正在尝试使用rake中的JavaFX的ant任务,并且无法弄清楚如何处理xml-namespacing:http://ant.apache.org/manual/Types/namespace.html

执行类似工作的build.xml文件看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<project name="HelloWorldApp" default="default" basedir="."
         xmlns:fx="javafx:com.sun.javafx.tools.ant">
    <path id="fxant">
      <filelist>
        <file name="${java.home}\..\lib\ant-javafx.jar"/>
        <file name="${java.home}\lib\jfxrt.jar"/>
      </filelist>
    </path>
    <target name="default">
        <taskdef resource="com/sun/javafx/tools/ant/antlib.xml"
                uri="javafx:com.sun.javafx.tools.ant"
                classpath="${java.home}\..\lib\ant-javafx.jar"/>
    </target>
<target name="package-bundle">
      <taskdef resource="com/sun/javafx/tools/ant/antlib.xml"
                uri="javafx:com.sun.javafx.tools.ant"
                classpath="${java.home}\..\lib\ant-javafx.jar"/>
      <fx:deploy nativeBundles="all"
                   width="100" height="100"
                   outdir="build/" outfile="HelloWorldApp">
            <info title="Hello World App" vendor="Me"
                     description="Test built from Java executable jar"/>
            <fx:application mainClass="org.jruby.JarBootstrapMain"/>
            <fx:resources>
               <fx:fileset dir="dist">
                  <include name="HelloWorldApp.jar"/>
               </fx:fileset>
            </fx:resources>
      </fx:deploy>
</target>
</project>
Run Code Online (Sandbox Code Playgroud)

问题出现在像"fx:deploy"这样的任务中,当我开始将它转换为Rakefile时,我无法走远,因为我无法弄清楚如何告诉ant关于那个"fx"命名空间.我已经搜索了几天,但我发现的所有内容都是来自headius的一篇博文,上面写着"自我注意:弄明白我们是否有相同的东西"(http://headius.blogspot.com /2010/04/using-ivy-with-jruby-15s-ant.html).在他的例子中,他似乎能够忽略它,但在这种情况下这不起作用.

JavaFX打包任务提供了一些非常酷的东西,特别是从Java 8开始,包括从任何可执行jar为每个平台创建本机安装程序的能力.我认为这可能非常有用.

ant rake jruby

5
推荐指数
1
解决办法
458
查看次数

如何解码在UTF8中通过Net :: IMAP获取的主题?(红宝石)

我正在使用Net :: IMAP.fetch从Gmail获取一些邮件.但是,当我获取具有UTF8主题的消息(即,在西里尔文中)时,我得到这样的内容:

=?UTF-8?B?0KHRgNC/0YHQutC4INGE0L7RgNGD0Lwg0YLRgNCw?= =?UTF-8?B?0LbQuCDQuNC30LHQvtGA0L3QuCDQvNCw0YLQtdGA0Lg=?= =?UTF-8?B?0ZjQsNC7INC4INC90LAg0ZvQuNGA0LjQu9C40YY=?= =?UTF-8?B?0LggLSBjaXJpbGFjZSB0ZXN0?=
Run Code Online (Sandbox Code Playgroud)

如何将上述字符串转换为UTF8?

注意:这适用于ruby 1.8.7

ruby imap jruby utf-8

5
推荐指数
1
解决办法
828
查看次数