我有一个rails应用程序,我想逐渐将其移至Phoenix。当我实现功能时,我希望phoenix拦截已经实现的请求,同时将未知请求传递给Rails应用程序。在这种情况下,最好的策略是什么?
1)如果我已经准备好接受一些开销,我可以创建一个插件并在那里路由所有未知请求(最后路由/*path
)。但是如何完整地传递请求并返回响应?解析它,然后用HTTPoison再次构建不必要的工作,任何更好的想法?
2)我不确定,如果可以使用haproxy,但是旧应用程序可能是一个后备,如果主后端响应有一些错误,则会传递请求。这会减少开销吗?
3)最后我可以在haproxy中通过掩码分割请求,但似乎有很多工作,因为我计划使用rails进行CUD操作,使用phoenix进行R for某些资源。
还有其他选择吗?有人这样做的例子吗?谢谢!
答案 0 :(得分:0)
阅读关于您确切问题的优秀帖子here。
基本思想是使用gem rails-reverse-proxy
来定义Phoenix应用程序的代理。
然后,在Phoenix上开发您的功能,并添加必要的路线。保持轨道惯例(它与凤凰路由器的工作方式无关)。
使用'虚拟'连接您的rails应用程序。控制器并将其设置为使用rails-reverse-proxy
。
建议您将Phoenix应用程序拥有的所有ActiveRecord模型设为只读。通过向pheonix拥有的模型添加钩子after_initialize :readonly!
。这样您就可以在Rails中使用模型而不会影响凤凰的所有权。只有Phoenix应用程序才能更改模型状态。