Ruby on rails 无法使用Clockwork启动clock.rb模块-activesupport中未定义的方法
我有一个网络应用程序,需要做一些背景工作。我有一个Ruby on rails 无法使用Clockwork启动clock.rb模块-activesupport中未定义的方法,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个网络应用程序,需要做一些背景工作。我有一个clock.rb文件,其中包含以下内容: require 'clockwork' include Clockwork require './config/boot' require './config/environment' every(5.seconds, 'ticking.get') { Resque.enqueue(TickingJob) } [...rest of the code irrelevant...] 当我尝试使用clo
clock.rb
文件,其中包含以下内容:
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
启动文件时,出现以下错误:
/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>'
/usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/yaml.rb:56:in`:
您的ruby安装似乎缺少psych(用于YAML输出)。
要消除此警告,请安装libyaml并重新安装ruby。
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.0/lib/active_-support/configurable.rb:31:in`config':未定义的方法`inheritable_copy'(NoMethodError)
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.0/lib/active\u support/configurable.rb:86:在'config'中
来自/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.0/lib/active\u support/configurable.rb:59:in`default\u per\u page='10
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/kaminari-0.13.0/lib/kaminari/config.rb:35:in'block in'
来自/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`'
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/kaminari-0.13.0/lib/kaminari/config.rb:3:in`'
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`'
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层)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`'
from/home/raph/public/[…]/config/environment.rb:2:在'require'中
from/home/raph/public/[…]/config/environment.rb:2:in`'
from/home/raph/public/[…]/app/clock.rb:5:in'require'
from/home/raph/public/[…]/app/clock.rb:5:in`'
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/clockwork-0.4.0/bin/clockwork:12:在“require”中
from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/clockworks-0.4.0/bin/clockworks:12:in`'
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`'
from/usr/local/rvm/gems/ruby-1.9.3-p194/bin/ruby\u noexec\u包装:14:in'eval'
from/usr/local/rvm/gems/ruby-1.9.3-p194/bin/ruby\u noexec\u包装:14:in`'
关于“psych”的第一个错误似乎与此无关(我每次都会看到它,并且我确实重新安装了
libyaml
)。至于第二个,我不知道。模块activesupport
的代码是否不正确?您需要移动包含时钟系统行要求行:
require 'clockwork'
require './config/boot'
require './config/environment'
include Clockwork
every(5.seconds, 'ticking.get') { Resque.enqueue(TickingJob) }
[...rest of the code irrelevant...]
如果您删除了require语句下面的所有内容,是否仍会出现错误。您好,是的,如果我只留下require语句,则错误完全正确。您是否尝试将include Clockwork移到所有require语句下面?并将环境引导到最顶端。它似乎确实有效!非常感谢你@iouri,把这个作为答案贴出来,这样就可以接受了。