【问题标题】:cannot load such file -- rufus-scheduler (LoadError)无法加载此类文件 -- rufus-scheduler (LoadError)
【发布时间】:2015-05-31 17:49:21
【问题描述】:

虽然我不想排除我可能遗漏了一些非常愚蠢的东西,但我确实尝试阅读了我能找到的关于这个主题的所有内容,所以这是我的问题:

我正在尝试在我的 redmine (2.6) 安装中运行 rufus-scheduler,如下所述:http://www.redmine.org/projects/redmine/wiki/RedmineReceivingEmails#Schedule-email-receiving-with-Rufus-Scheduler

主机系统是 CentOS 7 x64 + Plesk 12。

gem list 显示rufus-scheduler (3.0.9)

重新启动 redmine 时,我收到以下错误日志:

cannot load such file -- rufus-scheduler (LoadError)
  /usr/local/share/gems/gems/activesupport-3.2.21/lib/active_support/dependencies.rb:251:in `require'
  /usr/local/share/gems/gems/activesupport-3.2.21/lib/active_support/dependencies.rb:251:in `block in require'
  /usr/local/share/gems/gems/activesupport-3.2.21/lib/active_support/dependencies.rb:236:in `load_dependency'
  /usr/local/share/gems/gems/activesupport-3.2.21/lib/active_support/dependencies.rb:251:in `require'
  /var/www/vhosts/klwr.de/redmine.klwr.de/redmine-2.6.1/config/initializers/emailhandler.rb:3:in `<top (required)>'
  /usr/local/share/gems/gems/activesupport-3.2.21/lib/active_support/dependencies.rb:245:in `load'
  /usr/local/share/gems/gems/activesupport-3.2.21/lib/active_support/dependencies.rb:245:in `block in load'
  /usr/local/share/gems/gems/activesupport-3.2.21/lib/active_support/dependencies.rb:236:in `load_dependency'
  /usr/local/share/gems/gems/activesupport-3.2.21/lib/active_support/dependencies.rb:245:in `load'
  /usr/local/share/gems/gems/railties-3.2.21/lib/rails/engine.rb:593:in `block (2 levels) in <class:Engine>'
  /usr/local/share/gems/gems/railties-3.2.21/lib/rails/engine.rb:592:in `each'
  /usr/local/share/gems/gems/railties-3.2.21/lib/rails/engine.rb:592:in `block in <class:Engine>'
  /usr/local/share/gems/gems/railties-3.2.21/lib/rails/initializable.rb:30:in `instance_exec'
  /usr/local/share/gems/gems/railties-3.2.21/lib/rails/initializable.rb:30:in `run'
  /usr/local/share/gems/gems/railties-3.2.21/lib/rails/initializable.rb:55:in `block in run_initializers'
  /usr/local/share/gems/gems/railties-3.2.21/lib/rails/initializable.rb:54:in `each'
  /usr/local/share/gems/gems/railties-3.2.21/lib/rails/initializable.rb:54:in `run_initializers'
  /usr/local/share/gems/gems/railties-3.2.21/lib/rails/application.rb:136:in `initialize!'
  /usr/local/share/gems/gems/railties-3.2.21/lib/rails/railtie/configurable.rb:30:in `method_missing'
  /var/www/vhosts/klwr.de/redmine.klwr.de/redmine-2.6.1/config/environment.rb:14:in `<top (required)>'
  config.ru:3:in `require'
  config.ru:3:in `block in <main>'
  /usr/local/share/gems/gems/rack-1.4.5/lib/rack/builder.rb:51:in `instance_eval'
  /usr/local/share/gems/gems/rack-1.4.5/lib/rack/builder.rb:51:in `initialize'
  config.ru:1:in `new'
  config.ru:1:in `<main>'
  /usr/local/share/gems/gems/passenger-4.0.59/helper-scripts/rack-loader.rb:108:in `eval'
  /usr/local/share/gems/gems/passenger-4.0.59/helper-scripts/rack-loader.rb:108:in `load_app'
  /usr/local/share/gems/gems/passenger-4.0.59/helper-scripts/rack-loader.rb:127:in `<module:App>'
  /usr/local/share/gems/gems/passenger-4.0.59/helper-scripts/rack-loader.rb:27:in `<module:PhusionPassenger>'
  /usr/local/share/gems/gems/passenger-4.0.59/helper-scripts/rack-loader.rb:26:in `<main>'

我的第一个猜测是我需要将以下指令之一应用于 Apache:

RailsAppSpawnerIdleTime 0
PassengerMinInstances 1
PassengerSpawnMethod direct

但是,应用这些的任意组合只会更改错误日志,这样错误就不会发生在 rack-loader 中,而是在 rack-preloader 中。

显示 redmine 的包内容不会显示 rufus 调度程序。这可能是一个原因吗? (如果是,这应该在 redmine 的一些文档中提及)。

这是 config/initializers/emailhandler.rb 文件的完整内容:

require 'rubygems'
require 'rake'
require 'rufus-scheduler'

load File.join(Rails.root, 'Rakefile')

ENV['host']='xxx'
ENV['port']='25'
ENV['username']='xxx'
ENV['password']='xxx'
ENV['project']='xxx'
ENV['unknown_user']='accept'
ENV['no_permission_check']='1'

scheduler = Rufus::Scheduler.new
# Check emails every 1 mins
scheduler.in '1m' do
  task = Rake.application['redmine:email:receive_imap']
  task.reenable
  task.invoke
end

感谢您花时间阅读此 + 以获取任何提示。祝你有美好的一天。

【问题讨论】:

  • 作者推荐不用bundler直接安装gem很奇怪。我知道当 Redmine 启动时,它只能看到“捆绑”的宝石。这意味着我建议你在Gemfile 中添加一行gem 'rufus-scheduler',运行bundle install 并尝试再次启动Redmine。
  • @gotva 请将其粘贴为答案。它有效:)

标签: ruby-on-rails ruby passenger redmine rufus-scheduler


【解决方案1】:

奇怪的是作者推荐直接安装gem,不用bundler

我知道当 Redmine 启动时,它只能看到“捆绑”的宝石。意思是我建议你加一行

gem 'rufus-scheduler' 

到 Gemfile,运行 bundle install 并尝试再次启动 Redmine。

【讨论】:

  • 谢谢,这解决了我的问题 echo "gem rufus-scheduler" >> Gemfile
猜你喜欢
  • 1970-01-01
  • 2015-05-30
  • 2015-01-22
  • 2012-10-25
  • 2020-12-05
  • 2017-03-18
  • 2018-07-31
  • 2015-03-20
  • 2012-02-27
相关资源
最近更新 更多