如何在 Sinatra 应用程序中使用 sidekiq 监控?

How can I use sidekiq monitoring with a Sinatra app?

我的路线文件:

require 'sinatra'
require 'sidekiq'
require 'sidekiq/web'
require 'sequel'

get '/' do
   # Some stuff
end

get '/sidekiq' do
    run Sidekiq::Web
end

要去http://localhost:4567/sidekiq

NoMethodError at /sidekiq
undefined method `run' for #<Sinatra::Application:0x007f670d2123b8>

我正在使用 bundle exec sidekiq -r ./workers/gyf_downloader.rb 先启动 Sidekiq,然后 bundle exec ruby routes.rb 启动 Sinatra 应用程序。

关于如何使它正常工作有什么建议吗?


我已经修复了以下错误:

Internal Server Error

undefined method `join' for #<String:0x007fa504414c08>
WEBrick/1.3.1 (Ruby/2.2.1/2015-02-26) at localhost:4567

根据下面 Mike Perham 的回答,在我的 gemfile 中使用 gem 'sinatra', git: 'git@github.com:sinatra/sinatra.git' 查看 this Sinatra issue on github

这是 Sinatra 中的一个已知问题:

https://github.com/sinatra/sinatra/issues/951

将以下代码添加到 config.ru。首先定义您的应用程序的路径,然后是 sidekiq。接下来你应该添加 Sidekiq 配置和路径映射路由。

# config.ru
require './app' 
require 'sidekiq'
require 'sidekiq/web'

Sidekiq.configure_client do |config|
  config.redis = { url: "redis://#{ENV['REDIS_HOST']}:#{ENV['REDIS_PORT']}" }
end

run Rack::URLMap.new('/' => App, '/sidekiq' => Sidekiq::Web)