从Rails到Phoenix的部分迁移

时间:2017-07-21 00:15:03

标签: ruby-on-rails backend phoenix-framework

我有一个rails应用程序,我想逐渐将其移至Phoenix。当我实现功能时,我希望phoenix拦截已经实现的请求,同时将未知请求传递给Rails应用程序。在这种情况下,最好的策略是什么?

1)如果我已经准备好接受一些开销,我可以创建一个插件并在那里路由所有未知请求(最后路由/*path)。但是如何完整地传递请求并返回响应?解析它,然后用HTTPoison再次构建不必要的工作,任何更好的想法?

2)我不确定,如果可以使用haproxy,但是旧应用程序可能是一个后备,如果主后端响应有一些错误,则会传递请求。这会减少开销吗?

3)最后我可以在haproxy中通过掩码分割请求,但似乎有很多工作,因为我计划使用rails进行CUD操作,使用phoenix进行R for某些资源。

还有其他选择吗?有人这样做的例子吗?谢谢!

1 个答案:

答案 0 :(得分:0)

阅读关于您确切问题的优秀帖子here。 基本思想是使用gem rails-reverse-proxy来定义Phoenix应用程序的代理。

然后,在Phoenix上开发您的功能,并添加必要的路线。保持轨道惯例(它与凤凰路由器的工作方式无关)。

使用'虚拟'连接您的rails应用程序。控制器并将其设置为使用rails-reverse-proxy

建议您将Phoenix应用程序拥有的所有ActiveRecord模型设为只读。通过向pheonix拥有的模型添加钩子after_initialize :readonly!。这样您就可以在Rails中使用模型而不会影响凤凰的所有权。只有Phoenix应用程序才能更改模型状态。