0

我的 rails 应用程序需要同时使用 JRuby 和 MRI。

这是场景 -

我的应用程序使用处理大量线程的后台服务器。我在 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要求重新捆绑应用程序。

有什么办法可以让这个到位吗?

4

1 回答 1

1

不在同一个应用程序中。如果您希望发生这种情况,您将需要在不同 rubies 下运行的单独应用程序。在 SOA 架构中,您将向后台服务器发送一条消息,以便它处理作业。

因此,在 heroku 中,您将为在 MRI 中运行的 Web 创建一个应用程序;然后您将在 JRuby 中为您的后台进程创建一个应用程序。他们将通过共享的 Redis 或共享数据库进行通信。

我建议使用 Trinidad 或 Puma 并将其全部保存在 JRuby 中(而不是继续运行乘客);这将是一个更简单的架构。

于 2013-01-31T16:02:59.170 回答