ゆうなんとかさんの雑記帳的な。

Twitterで踊ったり音ゲーしたりしてるあの名前がよくわからない人が書いてるらしいよ。

RailsにRackアプリケーションをマウントしてみた

思ったよりも簡単です。やることをざっくり言うと、

  1. Railsにパスを通す
  2. ルートにマウント

の2つだけです。

Railsにパスを通す

たとえばapp/api/以下にSinatraとかGrapeとかを置いておきたいとしましょう。そうしたら、config/application.rbに

    config.paths.add "app/api", glob: "**/*.rb"
    config.autoload_paths += Dir["#{Rails.root}/app/api/*"]

と書いておきます。

ルートにマウント

終わったらconfig/routes.rbのルーティングを編集します。

mount Api => "/"

みたいな感じでマウントできます。たぶん上のようにルートにマウントするのが無難です、たぶんね。

お疲れ様でした。でも…

以上です。簡単ですね。
でも、ただ置いただけだと、Deviseなんかの認証プラグインは面倒見てくれません。一応ログを見ると認証しているようではあるんですけど、失敗しても弾いてくれませんwこれはダメだ…えっと、このへんの対策はもう少し調べてからあとで書きます。

Sinatraをマウントするときの注意点

require 'sinatra'
get '/' do
  '北上さん'
end

こういうのはマウントできません。

require 'sinatra'
class SuperKitagami < Sinatra::Base
  get '/' do
    'スーパー北上さん'
  end
end

これならマウントできます。