【问题标题】:How can I use sidekiq monitoring with a Sinatra app?如何通过 Sinatra 应用程序使用 sidekiq 监控?
【发布时间】:2018-09-22 16:29:32
【问题描述】:

我的路线文件:

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

【问题讨论】:

    标签: ruby sinatra sidekiq


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 感谢您的链接。我似乎已经解决了这个问题,但现在在我的路由文件中运行时出现未定义的方法错误。我编辑了原始问题以提供更多详细信息。
      • 你挂载 Sidekiq::Web,你不会在 get 中运行它。
      猜你喜欢
      • 2019-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-27
      • 2011-02-28
      • 1970-01-01
      相关资源
      最近更新 更多