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

时间:2015-03-13 22:37:27

标签: ruby sinatra sidekiq

我的路线档案:

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

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

2 个答案:

答案 0 :(得分:2)

这是Sinatra的一个已知问题:

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

答案 1 :(得分:2)

将以下代码添加到 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)