JRuby可以使用原创的Ruby宝石吗?

时间:2009-07-23 07:54:04

标签: ruby-on-rails jruby

我正在考虑JRuby on Rails和我的产品的原始Ruby on Rails有什么区别?

它在开发活动,部署,原始或可伸缩性之间的支持方面有何不同?

我看过很多文章。他们说JRuby和Ruby一样功能。这是否意味着我们可以将Ruby gems用于JRuby,使用scaffold和像Ruby这样的ActiveRecord,我们还可以像Java一样部署产品吗?

6 个答案:

答案 0 :(得分:7)

只有纯粹用Ruby编写的gem才能在JRuby下运行。像RMagick或MySQL的Gems或需要C扩展的JSON(标准实现)将在某些情况下让你失去运气,在其他情况下使用JDBC MySQL和JSON-JRuby gems等替代品。

答案 1 :(得分:3)

请参阅我的回答here

此外,这是一个方便的参考: Is It JRuby

答案 2 :(得分:0)

大多数(但不是全部)Ruby宝石也可用于JRuby。 Scaffold和ActiveRecord绝对可以与JRuby一起使用。您将找不到JRuby on Rails中缺少的任何RoR功能。

使用JRuby,您可以将应用程序部署为标准WAR。如果您不确定是否要使用本机Ruby或JRuby,我建议您使用Netbeans IDE。有了它,您可以轻松地从原生Ruby切换到JRuby for Rails应用程序。

答案 3 :(得分:0)

JRuby是Ruby的完整实现,它们是相同的,但JRuby在JVM上运行。它可以很好地扩展,因为您可以将它部署在像Glassfish或JBoss这样的应用程序服务器中。

当然,你可以使用Rails,只有一个配置,数据库适配器。您必须为ActiveRecord安装JDBC适配器,例如:

gem install activerecord-jdbcmysql-adapter

并在您的database.yml

adapter: jdbcmysql

你已经完成了!

编辑:

如果你感兴趣的是各种Ruby实现之间的比较,http://www.infoq.com/presentations/seifer-ruby-vm-comparison和JRuby是最好的实现之一。

答案 4 :(得分:0)

您无需为JRuby重新安装所有宝石。您所要做的就是将GEM_HOME环境变量设置为包含宝石的路径。另请注意,JRuby不支持本机扩展。所以你必须找到使用原生扩展的宝石的JRuby兼容替代品。

答案 5 :(得分:0)

您可以阅读此JRuby description

有一些关于ruby gem以及cloud jruby如何使用它们的文本:

  

许多宝石在JRuby中都能正常工作;但是,一些Gems构建了本机C库作为其安装过程的一部分。除非Gem还提供了与本机库等效的Java,否则这些Gems将无法在JRuby中运行。