首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用Clockwork启动clock.rb模块- activesupport的未定义方法

无法使用Clockwork启动clock.rb模块- activesupport的未定义方法
EN

Stack Overflow用户
提问于 2012-10-05 21:26:44
回答 1查看 1.5K关注 0票数 4

我有一个网络应用程序,需要做一些后台工作。我有一个clock.rb文件,其中包含以下内容:

代码语言:javascript
复制
require 'clockwork'
include Clockwork

require './config/boot'
require './config/environment'

every(5.seconds, 'ticking.get') { Resque.enqueue(TickingJob) }
[...rest of the code irrelevant...]

当我尝试使用clockwork app/clock.rb启动该文件时,我得到以下错误:

代码语言:javascript
复制
/usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/yaml.rb:56:in `<top (required)>':
It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.0/lib/active_support/configurable.rb:31:in `config': undefined method `inheritable_copy' for #<Hash:0x000000012b3f08> (NoMethodError)
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.0/lib/active_support/configurable.rb:86:in `config'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.0/lib/active_support/configurable.rb:59:in `default_per_page='
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/kaminari-0.13.0/lib/kaminari/config.rb:35:in `block in <module:Kaminari>'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/kaminari-0.13.0/lib/kaminari/config.rb:9:in `configure'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/kaminari-0.13.0/lib/kaminari/config.rb:34:in `<module:Kaminari>'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/kaminari-0.13.0/lib/kaminari/config.rb:3:in `<top (required)>'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/kaminari-0.13.0/lib/kaminari.rb:38:in `require'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/kaminari-0.13.0/lib/kaminari.rb:38:in `load_kaminari!'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/kaminari-0.13.0/lib/kaminari.rb:47:in `hook!'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/kaminari-0.13.0/lib/kaminari.rb:60:in `load!'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/kaminari-0.13.0/lib/kaminari.rb:73:in `<top (required)>'
    from /usr/local/rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.2.1/lib/bundler/runtime.rb:68:in `require'
    from /usr/local/rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.2.1/lib/bundler/runtime.rb:68:in `block (2 levels) in require'
    from /usr/local/rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.2.1/lib/bundler/runtime.rb:66:in `each'
    from /usr/local/rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.2.1/lib/bundler/runtime.rb:66:in `block in require'
    from /usr/local/rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.2.1/lib/bundler/runtime.rb:55:in `each'
    from /usr/local/rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.2.1/lib/bundler/runtime.rb:55:in `require'
    from /usr/local/rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.2.1/lib/bundler.rb:128:in `require'
    from /home/raph/public/[...]/config/application.rb:7:in `<top (required)>'
    from /home/raph/public/[...]/config/environment.rb:2:in `require'
    from /home/raph/public/[...]/config/environment.rb:2:in `<top (required)>'
    from /home/raph/public/[...]/app/clock.rb:5:in `require'
    from /home/raph/public/[...]/app/clock.rb:5:in `<top (required)>'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/clockwork-0.4.0/bin/clockwork:12:in `require'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/clockwork-0.4.0/bin/clockwork:12:in `<top (required)>'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/bin/clockwork:19:in `load'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/bin/clockwork:19:in `<main>'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/bin/ruby_noexec_wrapper:14:in `eval'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/bin/ruby_noexec_wrapper:14:in `<main>'

关于“心理”的第一个错误似乎并不重要(我每次都会遇到这个错误,而且我确实重新安装了libyaml)。至于第二个,我不知道。模块activesupport的代码是不是坏了?

EN

回答 1

Stack Overflow用户

发布于 2013-08-14 03:41:34

您需要将include Clockwork行移动到require行下面:

代码语言:javascript
复制
require 'clockwork'    
require './config/boot'
require './config/environment'

include Clockwork

every(5.seconds, 'ticking.get') { Resque.enqueue(TickingJob) }
[...rest of the code irrelevant...]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12747267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档