在Volt Framework中使用ruby类

时间:2015-07-14 14:40:34

标签: ruby voltrb

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

require 'socket'
文件顶部的

不起作用。有什么建议吗?

1 个答案:

答案 0 :(得分:3)

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

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任务here的精彩截屏。