我想知道在Volt框架中包含ruby类的最佳方法是什么。我想使用Socket Class来查找网站访问者的IP地址。我想在控制器中使用它,但是放置:
require 'socket'
文件顶部的不起作用。有什么建议吗?
答案 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的精彩截屏。