Как смонтировать приложение Sinatra в приложении Padrino?

Resque/Sidekiq поставляется с веб-интерфейсом, который представляет собой приложение Sinatra.

Способ смонтировать это в приложении Rails — добавить это в маршруты (http://railscasts.com/episodes/366-sidekiq?view=asciicast):

mount Sidekiq::Web, at: "/sidekiq"

Как смонтировать это в приложении Padrino? Отображение его в config.ru, как и других приложений Rack, не работает.

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

person Sathish    schedule 19.01.2013    source источник


Ответы (3)


Padrino использует Padrino.mount, который ожидает, что приложения будут реагировать на зависимости и setup_application. Этот хак (https://gist.github.com/1718723) позволяет монтировать приложение Sinatra внутри приложение Падрино

person Sathish    schedule 19.01.2013

Приложение Padrino — это стоечное приложение, и в config.ru вы увидите

require ::File.dirname(__FILE__) + '/config/boot.rb'
run Padrino.application

Вы можете изменить это, чтобы использовать Rack::URLMap

require ::File.dirname(__FILE__) + '/config/boot.rb'
run Rack::URLMap.new("/sidekiq" => Sidekiq::Web.new, "/app" => Padrino.application.new)
person irfn    schedule 19.01.2013
comment
Это не работает, если я использую padrino для запуска сервера. URLMap работает, только если я использую стойку для запуска сервера. - person Sathish; 19.01.2013

  1. Добавить gem 'sidekiq' в Gemfile
  2. bundle install
  3. Добавьте следующие строки в config/boot.rb

    Padrino.before_load do
      Padrino.dependency_paths << Padrino.root('app/workers/*.rb')
    end
    
  4. Добавьте следующие строки в config/apps.rb

    require 'sidekiq/web'
    
    Padrino.mount('Sidekiq', app_class: 'Sidekiq::Web', app_root: Sidekiq::Web.root).to('/sidekiq')
    
  5. Создайте любого рабочего в app/workers/

  6. Беги bundle exec sidekiq -r ./config/boot.rb

person zires    schedule 17.05.2016