问题标签 [celluloid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - 尝试使用池会导致赛璐珞崩溃
我正在尝试在我的一个使用赛璐珞的项目中使用池。但是,每当我在赛璐珞pool
类的类上调用该方法include
(因此从 接收方法Celluloid::ClassMethods
)时,我总是会收到错误消息:
具体来说,这部分似乎是问题所在:
NoMethodError:赛璐珞的未定义方法“服务”:模块
它告诉我违规行是/Users/my_username/.rvm/gems/jruby-9.0.5.0/gems/celluloid-supervision-0.20.6/lib/celluloid/supervision/deprecate/supervise.rb:54
. 事实证明,该行包含该Celluloid::Supervision.router
方法的代码:
为了确保问题不在于我的特定项目,我从这篇文章中获取了一个使用池的代码示例并尝试运行它:
它以与我的项目完全相同的错误失败:
最后,我在 IRB 中运行了一段非常简单的代码,看看是否pool
是触发错误的原因services
:
果然,我得到了完全相同的错误。似乎赛璐珞中有一个错误,或者我没有正确加载依赖项。但是,require 'celluloid/supervision'
我尝试解决此问题,但无济于事。我做错了什么还是赛璐珞中的一个错误?
ruby - 赛璐珞 0.17.3 给出意外的“未定义方法”错误
我今天早上第一次开始使用赛璐珞宝石。我正在关注这个Railscasts 教程并试图解决问题。
我有一个名为的类"SomeClass"
,它只有一个方法。这是代码:
当我创建该类的新实例并调用它的方法时(用一声 ie "assholify!"
),我得到undefined method 'assholify!'
, 错误。但是赛璐珞应该在用砰的一声调用时异步触发该方法。所以这就是我调用该方法的方式:
这是错误的完整回溯:
为什么我会收到此错误?这是调用函数的正确方法吗?另外我如何摆脱Celluloid 0.17.3 is running in BACKPORTED mode.
警告?
ruby-on-rails - rails请求期间的赛璐珞死锁
我有以下控制器路径,应该将文件上传到 azure。
我使用 azure-contrib 将分块文件上传到 azure,而 azure-contrib 又使用赛璐珞。
我得到的错误是:
ruby - 如何在赛璐珞池阻塞上进行#future 调用?
我正在尝试创建工作人员池,这些工作人员将执行一些 HTTP 通信并使用结果计算值。
我最初的方法是这样的:
它或多或少像预期的那样工作——似乎有 5 个并发进程同时运行external_call
。
问题是,代码不是“流线型”的,并且预先计算了所有arguments
(这些计算比 快得多external_call
)。我希望我的代码在第一个块中等待,因为池无法提供将立即开始工作的未来。
future
不是在等待池释放工作者(也不是async
)。我怎样才能让这些调用等待池中的空闲工作人员(即执行类似于get
从池中返回准备使用的工作人员的操作)?
ruby - 赛璐珞和 ThreadError:无法创建线程:资源暂时不可用
我正在运行几个主要使用异步处理赛璐珞工作的工作人员。我的一些代码也使用未来或之后。一切都很好而且很快,但最终系统开始引发:ThreadError:无法创建线程:资源暂时不可用
我正在使用 Ruby 2.3.1,我想知道是否有解决方案来防止这种情况。我不在乎我是否处理一个工人池来控制线程数量,但我不想提出我没有更多可用线程和系统崩溃的观点。
迁移到 JRuby 是解决这个问题的唯一方法吗?
ruby - 对要在不同内核上并行处理的循环进行分区
我怎样才能完成一个循环来查询它在可用 CPU 内核上的迭代?所以每次迭代都将并行运行,因此完成得更快?我正在尝试了解宝石赛璐珞,但如果有另一种我可以使用的宝石,请毫不犹豫地告诉我!
ruby - 赛璐珞调整大小池
我有以下程序结构。
客户端是启用赛璐珞的类,使用include Celluloid
. 在我尝试循环执行程序之前,这很有效。我需要根据从外部数据馈送中收到的参数数量动态调整工作人员池的大小。
我尝试在随后的循环中包含池创建,pool.terminate
但它是垃圾邮件线程并导致演员崩溃。
ruby-on-rails - PubNub Ruby SDK:赛璐珞::DeadActorError:试图调用死演员:fetch_average
我正在尝试使用PubNub Ruby SDK 4.0.25运行一个简单的 Ruby 代码,但是在运行时ruby subscriber.rb
我收到如下所示的日志错误:
这是subscriber.rb
文件的样子:
其中client.rb
:
我在 2.4.1 版本中使用 Ruby(我也尝试过 2.3.3、2.4.0、2.4.2),这就是我的Gemfile
样子(我也在 4.0.23 版本中尝试过 pubnub gem):
并且Gemfile.lock
:
这是publisher.rb
文件:
并且输出publisher.rb
给出了这样的日志跟踪:
我无法解决这个问题,Celluloid::DeadActorError
我希望有人能给我一些如何处理它的线索。有趣的是,当我 2 个月前运行这段代码时,它运行得非常好。
rspec - 如何使用 rspec 成功模拟赛璐珞
好吧,我已经筋疲力尽了。在某种意义上用尽了选项。
我们有管理参与者的主管。
我需要做的就是模拟actor
其中定义了一个方法的空气制动器notify_exception
。
即以下调用
相关的rspec代码...
我试过这个..不起作用
尝试了以下方法(不确定我在做什么)
这项工作,但测试在最后挂起,直到被杀死。
有什么帮助吗?
ruby - Ruby:通过 TCP 套接字发送字符串
我对 Ruby 很陌生,决定尝试使用另一种编程语言。我一直在尝试掌握套接字,这是一个我一般不太熟悉的领域。我创建了一个基本的“游戏”,允许玩家在屏幕上移动他的图标,但是,我正在尝试将其变成可以使用 TCP 套接字的多人游戏。
目前,当玩家作为主机启动游戏时,它会创建一个服务器。如果玩家作为客户端启动游戏,它会连接到服务器。目前只能在同一台机器上工作,但连接已经建立成功,作为客户端连接时,服务器创建用户名,发送回客户端,客户端使用它创建播放器。
当我尝试在服务器和客户端之间进行通信时,问题就出现了,消息似乎是从服务器发送到客户端,但只是部分发送,而且它们似乎在开始或结束时大部分被截断。
如果有人可以就造成这种情况的原因提出建议,将不胜感激。我正在将 Ruby 与 Gosu 和 Celluloid-IO 一起使用。
服务器类
客户类
边注; 还有一个Host类,它模仿客户端类,只是它调用服务器。我知道这是一种糟糕的做事方式,一旦我克服了当前的问题,我打算修复它。
提前谢谢了