Приложение Синатра как Rails 3 подпуть - PullRequest
2 голосов
/ 26 июня 2010

Я пытаюсь получить приложение sinatra в качестве подпути в моем приложении rails 3. В частности, система очередей Resque имеет основанный на Sinatra веб-интерфейс, который я хотел бы сделать доступным через / resque в моем обычном приложении rails.

Вы можете посмотреть проект здесь: http://github.com/defunkt/resque

Я нашел людей, которые говорили о добавлении файла рэкапа и делали такие вещи:

run Rack::URLMap.new( \
  "/" => ActionController::Dispatcher.new,
  "/resque" => Resque::Server.new
)

Но я действительно не знаю, где это поставить или как заставить его работать. У меня развертывание с пассажиром, но было бы неплохо, чтобы оно также работало, когда я запускаю 'rails server'. Есть предложения?

- изменить -

Я добился определенного прогресса, поместив в config / rout.rb следующее:

match '/resque(/:page)', :to => Rack::URLMap.new("/resque" => Resque::Server.new)

Что, кажется, работает довольно хорошо, однако оно теряет общую папку (которая определена в геме, я думаю), и в результате нет информации о стилях и изображениях.

Ответы [ 2 ]

3 голосов
/ 26 июня 2010

Вы можете настроить любую конечную точку стойки в качестве маршрута в рельсах 3. Это руководство по wycats описывает то, что вы ищете, и многое другое, что вы можете сделать в рельсах3:

http://yehudakatz.com/2009/12/26/the-rails-3-router-rack-it-up/

Например:

class HomeApp < Sinatra::Base
  get "/" do
    "Hello World!"
  end
end

Basecamp::Application.routes do
  match "/home", :to => HomeApp
end
1 голос
/ 24 марта 2011

Решение Yehuda (/ Scott S) у меня не работает с Rails 3.0.4 и Sinatra 1.2.1 ... установка :anchor => false в совпадении - ключ:

# in routes.rb
match "/blog" => MySinatraBlogApp, :anchor => false

# Sinatra app
class MySinatraBlogApp < Sinatra::Base
  # this now will match /blog/archives
  get "/archives" do
    "my old posts"
  end
end

(ответ з / о Майкл Райдел - http://inductor.induktiv.at/blog/2010/05/23/mount-rack-apps-in-rails-3/)

...