标签: jruby

不同的Ruby线程模型(Ruby vs JRuby)作为开发人员对您的代码有什么实际影响?

我试图了解MRI Ruby 1.8和JRuby之间不同线程模型的实际影响.

作为开发人员,这对我来说意味着什么?

而且,由于不同的线程模型,MRI Ruby 1.8中的代码是否有任何实际的JRuby性能特征?

ruby multithreading jruby

7
推荐指数
3
解决办法
3796
查看次数

通过IMAP在rails中获取电子邮件

我有这个rails应用程序在我们的本地Intranet上运行,有一千个普通用户.我希望将它与我们的电子邮件服务器(MS Exchange)集成.基本上 -

1)对于每个用户,应用程序应从邮件服务器获取其收件箱中的任何新邮件,解析它并将其存储在数据库中.

我可以用ruby/net-imap实现它,但我担心性能.正如我所提到的,有一千个用户,每个用户都有不同的电子邮件地址.每隔x分钟轮询一次电子邮件服务器对于一千个用户来说可能会大大降低性能.

看起来IMAP IDLE与ruby/net-imap可能是一个选项,邮件服务器会在有新邮件(IPhone/Outlook样式)时向我的应用程序发送通知.但似乎,因为我必须保持与服务器的imap连接打开.因此,如果一次有100个用户登录,则意味着100个与邮件服务器的连接.这会大大减慢应用程序的速度吗?

或者有没有人知道任何其他选项(顺便说一下,我无法控制邮件服务器)

我们正在使用MRI,但也可以轻松切换到jruby.

ruby imap ruby-on-rails jruby actionmailer

7
推荐指数
1
解决办法
4041
查看次数

使用Jetty从jar文件中提供静态内容?

这应该相当容易,但出于某种原因,我尝试的几乎所有内容似乎都在我将其连接到Web浏览器时发出"未找到"错误.

我有一个静态上下文,对于ResourceBase,我有'file:jar:/ path/to/myjar!/.'...任何想法,我缺少什么?

java jruby jetty

7
推荐指数
1
解决办法
1277
查看次数

使用Java类时JRuby的局限性

据我了解JRuby,完全可以在JRuby代码中使用Java类,反之亦然,但是,我仍然不了解一些东西.

  • JRuby可以使用Java Annotations吗?
  • 是否有可能在Java类上使用来自JRuby的反射?
  • 是否有可能在JRuby类上使用Java的反射?
  • 在JRuby中有可执行类吗?
  • 是否有可能在JRuby脚本中重新定义Java类?(和我重新定义的方式相同,例如C Ruby中的Integer)
  • 是否有任何其他限制,阻止使用JRuby作为任何Java应用程序的一部分?

ruby java jruby

7
推荐指数
1
解决办法
2469
查看次数

使用自签名证书

我只是试图了解SSL.

我在localhost上设置了一个Jetty服务器,并使用Keytool生成了我自己的证书.

现在,当我去https:// localhost:8443 /我得到的不能相信这个证书错误.

我用

keytool -export -alias pongus -keystore keystore -file certfile.cer

创建我认为是客户端需要对服务器进行身份验证的证书.(这是我可能非常错的地方!)

我有以下ruby代码:

require 'net/https'
require 'openssl'

require 'open-uri'

puts 'yay' if File.exists?('certfile.cer')

uri = URI.parse("https://localhost:8443/")
http_session = Net::HTTP.new(uri.host, uri.port)
http_session.use_ssl = true
http_session.verify_mode = OpenSSL::SSL::VERIFY_PEER
http_session.ca_file = 'certfile.cer'
res = http_session.start do |http|
  # do some requests here
  http.get('/')
end
Run Code Online (Sandbox Code Playgroud)

这会打印'yay',因此certfile.cer文件确实存在.

但是我得到了错误

/Applications/NetBeans/NetBeans 6.8.app/Contents/Resources/NetBeans/ruby2/jruby-1.4.0/lib/ruby/1.8/net/http.rb:586 warning: can't set verify locations
/Applications/NetBeans/NetBeans 6.8.app/Contents/Resources/NetBeans/ruby2/jruby-1.4.0/lib/ruby/1.8/net/http.rb:586:in `connect': certificate verify failed (OpenSSL::SSL::SSLError)
Run Code Online (Sandbox Code Playgroud)

我有什么想法我做错了吗?

编辑

我想得到它所以我保证我连接到正确的服务器,服务器可以保证我连接到它,没有任何篡改.我正在开发服务器和客户端.

ruby ssl jruby keytool

7
推荐指数
1
解决办法
9279
查看次数

如何提高jRuby加载时间?

我必须等待很长时间(与我的朋友机器相比)在jRuby上执行脚本,特别是在我运行rake任务或测试时.我试过jRuby版本1.3.1和1.4.1有和没有ruby-debug gem,每个配置都出现同样的问题.

问题很简单:有没有办法改进jRuby加载过程?..或者我的jvm配置或jRuby安装有什么问题(我通过rvm使用jRuby - ruby​​版本管理器)?

ruby performance jvm jruby

7
推荐指数
1
解决办法
2162
查看次数

我没有使用JRuby而非MRI/YARV的原因是什么?

是否有优势,运行JRuby,如果你不知道任何Java?如果你只是想要比"Ruby"(MRI/YARV)更好地实现Ruby,人们建议使用JRuby.

没有使用JRuby会有什么潜在的原因?

其他人提到的有:

  1. 短期课程的表现.对于较长的程序,JRuby被描述为更快,但具有更长的初始化时间.这个问题讨论了解决方法.
  2. C扩展:JRuby支持一些(但不是全部)与MRI/YARV一起使用的C扩展.
  3. 并发作为一把双刃剑.有非线程安全的代码,人们还没有发现,因为最流行的实现没有真正的并发.
  4. JRuby 可以使用更多内存.
  5. JRuby 决定不做 CRuby 做的某些事情.这包括continuation(我认为无论如何都在CRuby中弃用)和fork.它们还具有不同的原生端和时间精度.
  6. JRuby 默认不启用ObjectSpace.

我可能的原因包括:

  1. 您使用的库可能无法在JRuby下运行.例如,BioRuby在GitHub上有127个观察者和60个分叉,与JRuby 有轻微的不兼容性.
  2. 恐惧,不确定性以及对使用不太流行的实现的怀疑.我知道JRuby比CRuby更好地传递RubySpec,但RubySpec尚未完成.

你有没有其他理由不使用JRuby?

ruby jruby

7
推荐指数
1
解决办法
744
查看次数

Jruby中的Java数组

我有一个Java库,我正在从中提取一些数据.

它出了一个3D数组.但是我无能为力.

[[D[]@5615a6e0
Run Code Online (Sandbox Code Playgroud)

是我得到的回应.我试过映射它:

{ |arr| arr.map { |arr| arr.to_a } }
Run Code Online (Sandbox Code Playgroud)

但我什么都没得到,解析这个java数组的最佳方法是什么?

ruby java jruby

7
推荐指数
1
解决办法
2484
查看次数

什么原因导致Java库在JRuby调用时表现不同?

我是Java世界的新手,但我熟悉Ruby.我正在尝试编写一个与某些第三方jar文件交互的程序.

虽然从Java调用库似乎表现得很好,但是当我在JRuby中调用它们时它们的行为不正确.这是一个问题因为我真的想使用JRuby.例如,下面的两个程序尝试完全相同的东西,但它们产生不同的输出:

这个Java程序行为正常.

我在Netbeans中开发了下面的Java程序,然后按F6(运行主项目)运行它.项目的Libraries文件夹设置为"C:\ Program Files(x86)\ Microchip\MPLABX\mplab_ide\lib \nblibraries.properties".当我运行它时,它会打印"pins:17".

package pinbug1;    
import com.microchip.mplab.mdbcore.assemblies.Assembly;
import com.microchip.mplab.mdbcore.assemblies.AssemblyFactory;
import com.microchip.mplab.mdbcore.simulator.PinSet;
import com.microchip.mplab.mdbcore.simulator.Simulator;
import org.openide.util.Lookup;

public class PinBug1
{
    public static void main(String[] args)
    {
        AssemblyFactory assemblyFactory = Lookup.getDefault().lookup(AssemblyFactory.class);
        Assembly assembly = assemblyFactory.Create("PIC18F14K50");

        Simulator simulator = assembly.getLookup().lookup(Simulator.class);
        int num = simulator.getDataStore().getProcessor().getPinSet().getNumPins();
        System.out.println("pins: " + num);   // prints "pins: 17"
    }

}
Run Code Online (Sandbox Code Playgroud)

这个JRuby程序行为不正确.

我只需输入就运行下面的JRuby程序jruby bug_reproduce.rb并打印"pins:0".我希望它像Java程序一样打印"pins:17".

["mplab_ide/mdbcore/modules/*.jar",
 "mplab_ide/mplablibs/modules/*.jar",
 "mplab_ide/mplablibs/modules/ext/*.jar",
 "mplab_ide/platform/lib/org-openide-util*.jar",
 "mplab_ide/mdbcore/modules/ext/org-openide-filesystems.jar"
].each do |pattern|
  Dir.glob("C:/Program Files (x86)/Microchip/MPLABX/" + pattern).each do |x|
    require x
  end
end …
Run Code Online (Sandbox Code Playgroud)

ruby java jruby microchip mplab

7
推荐指数
1
解决办法
416
查看次数

使用Puma运行JRuby与最新的核磁共振成像仍然有好处吗?

我正在考虑将我们的ruby解释器更新为JRuby,因为我们必须从我们的应用程序中删除任何2.x特定语法并采用ruby 1.9.3兼容性,因此非常头疼.哪个不是世界末日.

当运行应用程序时,我发现我们不能在群集模式下使用Puma.问题是,鉴于过去几年MRI的所有修复和变化,"真实线程"仍然有效的好处是什么?

更新

为了使其更加客观,问题是,"最新版本的MRI是否否定了采用JRuby来实现本机线程为您提供的相同优势的必要性?"

ruby jruby puma mri

7
推荐指数
1
解决办法
6117
查看次数