我需要将JRuby和MRI用于我的rails应用程序。
这是情景 -
我的应用使用处理大量线程的后台服务器。我有表演
在MRI上运行它的问题。后台服务器以rake
任务和需求启动
使用Rails环境。
我正在使用Passenger作为Web服务器。由于JRuby对Passenger的支持是最近的, 我想继续使用MRI。
这是我想要的东西 -
这使用Ruby 1.9启动服务器:
sudo passenger start -p 80 -e production --user=deploy
并在同一个应用程序中运行后台服务器 -
jruby -S rake background_server:start_daemon RAILS_ENV=production
问题是,第二个命令jruby -S rake
要求重新绑定应用程序。
我有什么方法可以实现这个目标吗?
答案 0 :(得分:1)
不在同一个应用中。如果你想要这样的话,你需要在不同的红宝石下运行的独立应用程序。在SOA体系结构中,您将向后台服务器发送一条消息,以便它处理作业。
因此,在heroku中,您将为在MRI中运行的Web创建一个应用程序;然后,您将在JRuby中为后台进程创建一个应用程序。他们通过共享的Redis或共享数据库进行通信。
我会建议使用特立尼达或彪马并将其保留在JRuby中(而不是继续运行乘客);它将是一个更简单的架构。