1

我想知道在 Volt 框架中包含 ruby​​ 类的最佳方法是什么。我想使用Socket 类来查找站点访问者的 IP 地址。我想在控制器中使用它,但是把:

require 'socket'

在文件的顶部不起作用。有什么建议么?

4

1 回答 1

3

好吧,我不认为你可以在客户端使用 Socket 类,因为 Volt 使用OpalRb在客户端运行 Ruby,不幸的是我不认为 Opal 可以支持 Socket 类,因为这很难做到浏览器。但是,您可以在服务器端运行代码并将所需的结果传递给客户端。您可以使用Volt 的任务来执行此操作。您可以像这样创建它们:

require 'socket'

class SocketTask < Volt::Task
  def use_sockets
    # do your thing with sockets here...
  end
end

然后你可以在其他地方使用它们,例如,在这样的控制器中:

class Controller < Volt::ModelController
  def some_action
    SocketTask.use_sockets

    # You can also use the #then method of the returned promise to get the result of the call.
    # You can even use the #fail method on the promise to get any thrown errors.
    # The following can also run code on the client.

    SocketTask.use_sockets.then do |result|
      alert result
    end.fail do |error|
      puts error
    end
  end
end

这里还有 Rick Carlino 关于 Volt 任务的精彩截屏视频。

于 2015-07-14T15:03:02.040 回答