【问题标题】:No such file to load -- rufus-scheduler没有要加载的文件——rufus-scheduler
【发布时间】:2014-02-28 13:25:45
【问题描述】:

我正在 redmine 中开发一个插件如何每天发送邮件,所以我安装了 rufus-scheduler 在我的 Gemfile 中添加这一行

gem "rufus-scheduler "

我还安装了 gem

sudo gem install rufus-scheduler --source http://gemcutter.org

在我的 redmine/plugins/latest-issues-redmine-plugin/lib/latest_issues/view_hook_listener.rb 我这样做

class LatestIssuesViewHookListener < Redmine::Hook::ViewListener

    require File.join(File.dirname(__FILE__), '../../app/models/latest_issues_setup')
    require 'net/smtp'
    require 'rubygems'
    require 'rufus-scheduler

def load_issues   
 scheduler = Rufus::Scheduler.start_new   
 scheduler.every '1h' do
send_email "test@test.com", :body => html
  end
end
end        

对这个错误有什么想法吗?

谢谢

【问题讨论】:

  • 1:哪个 Ruby 版本? 2:你用的是rvm吗?
  • jruby 1.7.10 (1.9.3p392) 2014-01-09 c4ecd6b on OpenJDK 64-Bit Server VM 1.7.0_51-mockbuild_2014_01_10_10_19-b00 [linux-amd64] 和 Rails 3.2.16
  • “我在我的代码中执行此操作”是什么意思?你的意思是a)你尝试将它作为一个独立的脚本还是b)我盲目地将它粘贴到我的rails控制器中......?
  • 我刚刚在我的控制器中过去了
  • 警告:为每个访问视图侦听器的 HTTP 请求启动 rufus-scheduler 是很危险的。每个调度程序都有自己的线程,您最终会发现 Ruby 进程被未使用的调度程序压得喘不过气来。更好的方法是在 config/initializers/ 中的某处启动调度程序,然后从控制器/侦听器进行调度。

标签: ruby rubygems jruby rufus-scheduler


【解决方案1】:

你写在你的 Gemfile 中

gem "rufus-scheduler "

不应该

gem "rufus-scheduler"

改为?

添加行后,您必须运行

bundle install

让 Bundler 获取 rufus-scheduler gem(并更新 Gemfile.lock 文件)。

IIRC,在启动 Rails 应用程序时,Bundler 应该已经抱怨没有 rufus-scheduler。这应该发生在 LoadError 之前。那么,您是否正在使用 Bundler 启动 Rails 应用程序? (你是怎么开始的呢?)

【讨论】:

    【解决方案2】:
    sudo gem install rufus-scheduler --source http://gemcutter.org
    

    通过“gem”命令安装 ruby​​gems,该命令通常指向“系统”Ruby,通常又不是 JRuby。

    你可能会这样做

    jruby -S gem install rufus-scheduler
    

    在 JRuby 加载路径中安装 gem。

    【讨论】:

      【解决方案3】:

      试试

      require 'rubygems' # tell ruby that you're using rubygems
      require 'rufus-scheduler'
      
      scheduler = Rufus::Scheduler.new # rufus-scheduler 3.0 style
      
      scheduler.in '5s' do
        puts "order ristretto"
      end
      scheduler.every '10s' do
        puts "I feel like drinking coffee"
      end
      
      #scheduler.join
      

      您似乎遵循的是旧教程。 rufus-scheduler 的当前自述文件位于 https://github.com/jmettraux/rufus-scheduler

      【讨论】:

      • 嗨 jmettraux,我试试你的代码并参考本教程 github.com/jmettraux/rufus-scheduler 仍然有这个 LoadError: No such file to load -- rufus-scheduler,谢谢
      • LoadError 表示 Ruby 在其加载路径中找不到“rufus-scheduler”代码。你如何管理你的依赖关系?尝试在您的问题中解释(通过编辑问题),这样我们就不会在那些微小的 cmets 上浪费时间......
      猜你喜欢
      • 2015-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-04
      • 2011-07-25
      • 1970-01-01
      • 1970-01-01
      • 2011-04-08
      相关资源
      最近更新 更多