未初始化的常量Timer ::定时器

时间:2016-06-09 21:04:22

标签: ruby scheduled-tasks

我正在尝试定期执行任务,我看到this。我使用gem 'timer'

安装了bundle install

然后这是我的Timer课程:

require 'timers'
    class Timer

       def initialize
           timers = Timers::Group.new
           timers.every(5) { puts "Another 5 seconds" }
       end
    end

但是当我运行课程时我面临错误:

   `require': cannot load such file -- timers (LoadError)

这是我gem env的输出:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.5.1
  - RUBY VERSION: 2.3.0 (2015-12-25 patchlevel 0) [x86_64-linux]
  - INSTALLATION DIRECTORY: /usr/local/rvm/gems/ruby-2.3.0
  - USER INSTALLATION DIRECTORY: /home/ubuntu/.gem/ruby/2.3.0
  - RUBY EXECUTABLE: /usr/local/rvm/rubies/ruby-2.3.0/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/rvm/gems/ruby-2.3.0/bin
  - SPEC CACHE DIRECTORY: /home/ubuntu/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /usr/local/rvm/gems/ruby-2.3.0
     - /usr/local/rvm/gems/ruby-2.3.0@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gem" => "--no-document"
     - "install" => "--no-rdoc --no-ri"
     - "update" => "--no-rdoc --no-ri"
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /home/ubuntu/.nvm/versions/node/v4.4.3/bin
     - /usr/local/rvm/gems/ruby-2.3.0/bin
     - /usr/local/rvm/gems/ruby-2.3.0@global/bin
     - /usr/local/rvm/rubies/ruby-2.3.0/bin
     - /mnt/shared/bin
     - /home/ubuntu/workspace/node_modules/.bin
     - /home/ubuntu/bin
     - /usr/local/sbin
     - /usr/local/bin
     - /usr/sbin
     - /usr/bin
     - /sbin
     - /bin
     - /mnt/shared/sbin
     - /opt/gitl
     - /opt/go/bin
     - /mnt/shared/c9/app.nw/bin
     - /usr/local/rvm/bin

1 个答案:

答案 0 :(得分:0)

此错误告诉我们您尝试加载的代码不在LOAD_PATH上。当您require 'timers'告诉Ruby在LOAD_PATH中搜索名为timers.rb的文件时,无法找到它。安装gem不会将gem放在您的加载路径上。

听起来您没有使用Bundler来管理您的依赖项。一旦你开始依赖第三方代码,你真的应该开始使用Bundler。它会将您需要的所有代码放在LOAD_PATH上,并提供大量其他有用的功能。

如果你只是搞乱,你可以做的一个选择是: ruby -I <path/to/timers/lib>

这将允许Ruby找到timers.rb