【问题标题】:How run Javascript on server side in Ruby on Rails如何在 Ruby on Rails 中的服务器端运行 Javascript
【发布时间】:2014-08-03 23:28:25
【问题描述】:

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

【问题讨论】:

  • 我不推荐它,尝试寻找本地库,而不是尝试在不适合的环境中运行一个。这样做通常会导致性能不佳。
  • 好的,但除了性能问题之外,是否有可能以及如何完成?

标签: javascript ruby-on-rails node.js


【解决方案1】:

因为看起来你非常坚定地使用这些 nodejs 库,所以我将这样做。由于在错误的环境中运行代码是一个非常糟糕的主意,我会改为进行这样的设置。

前端,ERB 模板 => RoR 服务器 => nodeJs 服务器

这种设置背后的想法是,RoR 更像是一个任务主机,而 nodeJs 是工作人员。您的 RoR 应用程序会弄清楚需要发生什么,然后告诉 nodeJs 去做。然后,Nodejs 将响应 RoR 将呈现给用户的结果。

这是一个例子:
前端有人要求您的应用程序将 x 个比特币转移给其他人。然后,您的 Ruby on Rails 应用程序将执行所需的任何非比特币任务(例如:登录、向人们发送消息)。然后,您的 RoR 应用程序将向 nodeJs 服务器发送一个请求,该服务器将实际执行比特币任务。

以下是您将如何实施此设置。

  1. 做前端
  2. 将前端操作与您的 RoR 控制器连接
  3. 在你的 nodeJs 上创建一个 RESTful HTTP API。
    1. 如果您还不知道什么是 RESTful API,请研究一下。这是一个完全独立的话题
    2. 为您希望应用程序执行的每个操作创建一个入口点。
    3. 让这个 nodeJs 服务器在本地运行,这样人们在不通过您的 RoR 应用程序的情况下就无法访问它
  4. 然后使用 restful-client 之类的东西从您的 RoR 应用程序中使用您的 nodeJs API

【讨论】:

  • 听起来很合理,但似乎比我预期的要复杂。所以你是对的,可能我不会使用这些库。 (由于缺少代表点,无法为您的答案投票)
  • @user3866773 没关系。如果您认为这有助于将来有人解决您的问题,请接受答案。
猜你喜欢
  • 2011-10-01
  • 1970-01-01
  • 2012-07-31
  • 2015-08-22
  • 2017-01-25
  • 2012-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多