如何在Ruby on Rails中在服务器端运行Javascript

5
我打算使用Ruby on Rails编写一个与比特币相关的Web应用程序。现在有一些非常有用的库,如Bitcoinjs或Bitcore,它们是用Javascript编写的,可以在Web浏览器上的客户端运行,或者在Node.js上的服务器端运行。然而,由于我打算使用RoR编写此应用程序,我想知道如何在服务器端利用这些库。 是否有一种方法(即gem)可以允许在服务器上解释Javascript,或者我可以在我的RoR代码中启动一个Node.js实例,通过该实例解释这些javascript库并执行其函数? 非常感谢您的帮助。

我不建议这样做,尝试寻找原生库而不是在不适合的环境中运行一个库。这样做通常会导致性能不佳。 - Noah Huppert
好的,但除了性能问题之外,这是否可能,并且如何实现? - Reto
1个回答

4

由于您似乎非常决心使用这些Node.js库,以下是我处理的方式。由于在错误的环境中运行代码是一个非常糟糕的想法,我建议采用以下设置。

前端,ERB模板 => Rails服务器 => node.js服务器

此设置的想法是Rails更像是任务主管,而node.js则是工作者。您的Rails应用程序会确定需要发生什么,并告诉node.js去执行它。然后,node.js会返回结果,Rails再将其呈现给用户。

以下是一个示例:
前端有人要求您的应用将x比特币转账给其他人。然后,您的Ruby on Rails应用程序会执行除了比特币任务之外的其他任务(例如登录、发送消息)。随后,您的Rails应用程序会向node.js服务器发送请求,该服务器实际上会执行比特币任务。

以下是您可以实施该设置的方法。

  1. 制作前端界面
  2. 将前端操作与Rails控制器连接起来
  3. 在你的nodeJs上创建一个RESTful HTTP API。
  4. 如果你还不知道什么是RESTful API,请进行研究。这是一个完全独立的主题
  5. 为你想要应用程序执行的每个操作创建一个入口点。
  6. 使这个nodeJs服务器在本地运行,这样人们就不能直接访问它,而必须通过你的Rails应用程序。
  7. 然后使用类似restful-client的工具从你的Rails应用程序中使用你的nodeJs API。

听起来很合理,但似乎比我预期的要复杂得多。所以你是对的,我可能不会使用这些库。(由于声望点数不足,无法为您的答案投票) - Reto
@user3866773 没问题。如果您认为答案对未来的提问者有帮助,请接受它。 - Noah Huppert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接