Нет такого файла для загрузки rufus-scheduler

Я разрабатываю плагин в redmine, как отправлять почту каждый день, поэтому я устанавливаю rufus-scheduler и добавляю в свой Gemfile эту строку

gem "rufus-scheduler "

а также я устанавливаю драгоценный камень

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 "[email protected]", :body => html
  end
end
end        

Любые идеи для этой ошибки?

Спасибо


person My name is    schedule 28.02.2014    source источник
comment
1: Какая версия Ruby? 2: Вы используете rvm?   -  person Casper    schedule 28.02.2014
comment
jruby 1.7.10 (1.9.3p392) 09.01.2014 c4ecd6b на 64-разрядной виртуальной машине OpenJDK Server 1.7.0_51-mockbuild_2014_01_10_10_19-b00 [linux-amd64] и Rails 3.2.16   -  person My name is    schedule 28.02.2014
comment
что вы имеете в виду, говоря, что я делаю это в своем коде? Вы имеете в виду: а) вы попробуете это как отдельный скрипт или б) я вслепую вставлю это в свой контроллер рельсов...?   -  person jmettraux    schedule 28.02.2014
comment
я только что прошел в своем контроллере   -  person My name is    schedule 28.02.2014
comment
Предупреждение: опасно запускать rufus-scheduler для каждого HTTP-запроса, попадающего в ваш прослушиватель представления. Каждый планировщик получает свой собственный поток, в итоге вы получите процесс Ruby, перегруженный неиспользуемыми планировщиками. Лучший способ — запустить планировщик где-нибудь в config/initializers/, а затем запланировать его из контроллера/прослушивателя.   -  person jmettraux    schedule 01.03.2014


Ответы (3)


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

устанавливает rubygems с помощью команды "gem", которая, как правило, указывает на "системный" Ruby, который, как правило, опять же не JRuby.

Вы могли бы, вероятно, сделать

jruby -S gem install rufus-scheduler

чтобы установить гем в пути загрузки JRuby.

person jmettraux    schedule 28.02.2014

вы пишете в своем Gemfile

gem "rufus-scheduler "

не должно быть

gem "rufus-scheduler"

вместо?

После добавления строки вам нужно будет запустить

bundle install

чтобы позволить Bundler получить гем rufus-scheduler (и обновить файл Gemfile.lock).

IIRC, при запуске приложения Rails Bundler уже должен был жаловаться на отсутствие rufus-scheduler. Это должно было произойти до ошибки LoadError. Итак, вы запускаете приложение Rails с помощью Bundler? (Как вы вообще это начинаете?)

person jmettraux    schedule 28.02.2014

Попробуйте с

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

Вы, кажется, следуете старому учебнику. Текущий файл readme для rufus-scheduler находится по адресу https://github.com/jmettraux/rufus-scheduler

person jmettraux    schedule 28.02.2014
comment
привет jmettraux, я попробую ваш код и обратитесь к этому руководству github.com/jmettraux/rufus-scheduler и до сих пор ошибка LoadError: Нет такого файла для загрузки -- rufus-scheduler, спасибо - person My name is; 28.02.2014
comment
LoadError означает, что Ruby не может найти код rufus-scheduler в своем пути загрузки. Как вы управляете своими зависимостями? Попробуйте объяснить в своем вопросе (отредактировав вопрос), чтобы мы не тратили время на эти крошечные комментарии... - person jmettraux; 28.02.2014