【发布时间】: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