4

我正在尝试启动我的应用程序。是独角兽+工头+sinatra的应用。

这是我的 config.ru 文件:

require "rubygems"
require "sinatra"

Bundler.require

require File.expand_path '../twitter_module.rb', __FILE__
run TwitterModule

require File.expand_path '../lib/tweet_streamer.rb', __FILE__

require 'sidekiq/web'
run Rack::URLMap.new('/' => Sinatra::Application, '/sidekiq' => Sidekiq::Web)

这是我的 sidekiq.yml:

---
:pidfile: tmp/pids/sidekiq.pid
development:
  :verbose: true
  :logfile: log/sidekiq_development.log

这是我的Procfile:

unicorn: bundle exec unicorn -c config/unicorn.rb
sidekiq: bundle exec sidekiq -C config/sidekiq.yml -e development -r lib/workers

现在的问题是我总是给出这个错误:

2013-10-12T15:30:23Z 28234 TID-ov4rh38wo INFO:   Please point sidekiq to a Rails 3/4 application or a Ruby file  
2013-10-12T15:30:23Z 28234 TID-ov4rh38wo INFO:   to load your worker classes with -r [DIR|FILE].

我错过了什么?

4

1 回答 1

9

与其将lib/workers/目录指定-r为 sidekiq 的选项,不如将其指向某个文件,该文件将为您的工作人员处理必要的要求和设置。例如,您可能environment.rb在项目的根目录中有一个文件,需要lib/workers/目录中的所有工作人员;你可以使用 Sidekiq 来指定这个-r ./environment.rbconfig.ru请注意,Sidekiq 不会自行加载您的文件,因为它不使用 Rackup,这可能很有用;相反,您可能希望提取environment.rb文件或类似文件所需的任何内容,并从config.ru.

于 2013-10-12T22:14:05.590 回答