2

Rails3アプリのサブパスとしてsinatraアプリを取得しようとしています。具体的には、resqueキューイングシステムにはsinatraベースのWebインターフェイスがあり、通常のRailsアプリの/resqueからアクセスできるようにしたいと考えています。

ここでプロジェクトを見ることができます:http://github.com/defunkt/resque

ラックアップファイルを追加してこの種のことを行うことについて話している人がいます。

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

しかし、それをどこに置くか、どのように実行するかは本当にわかりません。私の展開は乗客と一緒ですが、「railsserver」を実行するときにも実行しておくと便利です。助言がありますか?

- 編集 -

config / routers.rbに次のように配置することで、ある程度の進歩を遂げました。

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

これはかなりうまく機能しているように見えますが、パブリックフォルダー(私が推測するgem内で定義されている)が失われ、その結果、スタイリング情報も画像もありません。

4

2 に答える 2

3

Rails 3のルートとして、任意のラックエンドポイントを設定できます。wycatsによるこのガイドでは、探しているものや、rails3で実行できるその他の多くのことについて説明します。

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
于 2010-06-25T23:43:11.997 に答える
1

Yehuda(/ Scott S)のソリューションは、Rails3.0.4およびSinatra1.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

(回答c / o Michael Raidel- http://inductor.induktiv.at/blog/2010/05/23/mount-rack-apps-in-rails-3/

于 2011-03-23T21:56:49.127 に答える