繁体   English   中英

我可以在Rails应用程序中编写JRuby脚本,然后仅将JRuby用于该脚本/类吗?

[英]Is it possible for me to write a JRuby script within my Rails app and use JRuby just for that script/class?

我有一个从各种第三方导入数据的Rails应用程序。 这些工作需要很长时间,我正在研究如何使用线程来加快速度。 我对Java一无所知,如果这没有道理,那么我深表歉意。

不,JRuby是备用的Ruby解释器,因此您不能在运行MRI(使用C语言编写的标准Ruby解释器)中“切换”到它。

您可以在MRI中创建线程 ,但是许多人使用后台作业队列来处理此类问题。 如果确实愿意,您还可以在JRuby中编写第二个应用程序,第一个应用程序对其进行远程调用。

是的,您可以,只要您打算在单独的流程(例如rake任务)中运行它

Gemfile您必须同时处理宝石集不同的两个选项,例如:

platform :ruby do
  gem "pg"
  gem "ruby-oci8", '>= 2.1.4'
end

platform :jruby do
  gem "activerecord-jdbcpostgresql-adapter"
end

并且您需要决定如何处理Gemfile.lock 一种选择是在git上保留2个Gemfile.lock,一个用于JRuby gems,一个用于MRI Ruby gems- Gemfile.lock.mriGemfile.lock.jruby ,然后在运行bundle时相应地进行符号链接。

另一个问题是,是否应该使用上述方法,所以上面的方法有点挑剔,我通常将其用于构建gem或将应用程序移植到JRuby。

产生多个进程和后台作业队列通常是在MRI Ruby中完成工作的方式,为单个导入任务引入一个全新的红宝石似乎是过大的选择。

就是说,我曾经遇到过这样的情况(通过ruby进行海量数据导入),适当的多线程本可以为我省去很多麻烦,但是最终我总是退一步将问题划分并在单独的进程中运行(每次都奇怪一个rake任务中的id,例如另一个id中的每个偶数id –请记住,如果您这样做可能会需要重建数据库中的表,否则可能会遇到非常滑倒的回归问题,因此一定要进行基准测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM