- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在尝试在我的一个使用 Celluloid 的项目中使用池。但是,每当我在 include
的 Celluloid 类上调用 pool
方法(因此从 Celluloid::ClassMethods
接收方法)时,我总是得到错误:
NoMethodError: undefined method `services' for Celluloid:Module
router at /Users/my_username/.rvm/gems/jruby-9.0.5.0/gems/celluloid-supervision-0.20.6/lib/celluloid/supervision/deprecate/supervise.rb:54
supervise at /Users/my_username/.rvm/gems/jruby-9.0.5.0/gems/celluloid-supervision-0.20.6/lib/celluloid/supervision/deprecate/supervise.rb:6
pool at /Users/my_username/.rvm/gems/jruby-9.0.5.0/gems/celluloid-pool-0.20.5/lib/celluloid/supervision/container/behavior/pool.rb:13
<top> at celluloid_pool_test.rb:14
具体来说,这部分似乎是问题所在:
NoMethodError: undefined method `services' for Celluloid:Module
它告诉我违规行是 /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
方法的代码:
def router(*_args)
# TODO: Actually route, based on :branch, if present; or else:
Celluloid.services ### this line is what causes the error
end
为了确保问题不是出在我的特定项目上,我从 this article 中获取了一个代码示例它利用池并尝试运行它:
require 'celluloid'
require 'mathn'
class PrimeWorker
include Celluloid
def prime(number)
if number.prime?
puts number
end
end
end
pool = PrimeWorker.pool
(2..1000).to_a.map do |i|
pool.prime! i
end
sleep 100
它失败了,错误与我的项目完全相同:
最后,我在 IRB 中运行了一段非常简单的代码,看看 pool
是否触发了关于 services
的错误:
class Foo
include Celluloid
end
Foo.pool
果然,我得到了完全相同的错误。 Celluloid 中似乎存在错误,或者我没有正确加载依赖项。但是,我在尝试解决此问题时确实需要'celluloid/supervision'
,但无济于事。我是不是做错了什么,或者这是 Celluloid 中的错误?
最佳答案
似乎其他人之前也遇到过这个问题:https://github.com/celluloid/celluloid-pool/issues/10 .我想这与 Celluloid.services
被弃用并且不能在较新版本的 Celluloid 中工作有关,因此使用 require 'celluloid/current'
而不仅仅是 require 'celluloid'
似乎可以解决问题。
关于ruby - 尝试使用池会导致 Celluloid 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39379387/
我是 Celluloid 的新手,对矿池和 future 有一些疑问。我正在构建一个简单的网络爬虫(请参阅底部的示例)。我的 URLS 阵列有几十万个 URL,所以这个例子被剥离到几百个。 我现在要做
为了理解赛璐珞,我写了下面的脚本。 require 'celluloid/current' class Processor include Celluloid def perfom(numbe
我正在尝试在我的一个使用 Celluloid 的项目中使用池。但是,每当我在 include 的 Celluloid 类上调用 pool 方法(因此从 Celluloid::ClassMethods
我在 Google 计算引擎上部署了一个 JRuby 应用程序。我注意到加载 celluloid gem 需要一段时间。在查看更多细节后,我发现加载 celluloid/internals/stack
我的问题应该能帮助我走上正确的道路。 我正在使用并发框架 celluloid 开发一个 ruby 应用程序。这是它的样子: 我有一些插件。我想同时运行它们并等到最后一个完成。我有一个抽象类,叫做P
最近我将我的 Rails 版本更新到 4.2.3 并将 ruby 版本更新到 ruby-2.2.3。之后,当我 bundle 它时会出现以下错误: $ bundle Fetching gem me
我有一个 Pinoccio microcontroller (绝对棒极了,试试看)。微 Controller 为其服务器打开一个套接字。我正在 Ruby 应用程序中编写 TCP 套接字服务器,我将在其
我正在构建一个小的 ruby 程序来运行与 MQTT 的连接。服务器并订阅 channel 。我正在使用 mosquitto gem 这只是 libmosquitto 的桥梁C 库。 我创建了一个
情况 我使用 Chrome 的 Remote Debugging Protocol 连接到 WebSocket ,使用 Rails 应用程序和实现 Celluloid 的类,或者更具体地说,cellu
每次我启动该应用程序时,我第一次调用它时,它都会返回 Dead Actors。之后它按预期返回。 require 'celluloid' class BatchProcess include Ce
我正在使用 Ruby 1.9.3,并在 Mac OSX 10.7 上进行测试。 我有一个 Sender 类,它应该向某个 URL 发送请求: require "celluloid" require "
我知道 Http.rb 和 Celluloid[1] 目前不支持当前超时,但是否有临时解决方法? 这是我要运行的代码: def fetch(url, options = {} ) puts
我的应用中有 2 个 Actor 。服务和 PushSocket。我正在使用邮箱在两个 Actor 服务和 PushSocket 之间进行通信。当我只是在 PushSocket 上创建单个实例并将消息
我看到了一些我试图理解的奇怪问题,该问题的第一部分是试图了解数据库池在 Celluloid 与 Celluloid/ZMQ 中的工作方式。 数据库池。 1) 线程。 5.times do Th
我正在使用 Celluloid::IO 进行 DNS 查询,下面是我的代码: require 'celluloid/io' class MyResolver include Celluloid
我已经将 rvm 设置为 # .rvmrc rvm use rbx-2.0.0-rc1 并且它正确地设置了版本 $ ruby -v rubinius 2.0.0rc1 (1.8.7 release 2
我正在尝试安装 GitLab CI,但出现此错误。 Gem::InstallError: celluloid requires Ruby version >= 1.9.2. An error occu
我按照 Sidekiq 的简单设置说明找到了 here ,但我无法让它工作。 这是堆栈跟踪。我也启动了redis服务器。有人知道我在这里缺少什么吗? E, [2012-09-28T09:11:36.4
我是一名优秀的程序员,十分优秀!