Mount Engineを試してみた

id:onk さんのブログを読んで Rails の Mount Engine を試してみた。

Rails プロジェクトの初期化

まずプロジェクトを作成して welcome コントローラーを追加し、ルートパスで “Welcome!” を表示させる。

基本的な Mount

config/routes.rb に簡単な Proc をマウントする。

mount proc { [200, {}, ["Hello from mounted engine!"]] }, at: "/hello_mount_engine"

/hello_mount_engine というpathでちゃんと表示された。

Sinatra アプリの統合

独立した Sinatra アプリケーションを作成する。

require 'sinatra/base'

class HelloFromSinatra < Sinatra::Base
  get '/' do
    'Hello from Sinatra!'
  end

  get '/hello' do
    'Hello!'
  end
end

‘/‘と’/hello’はそれぞれ次のように表示される。

ではいよいよSinatraアプリをRailsアプリにマウントしてみる。

config/application.rb に require を追加:

require './hello_from_sinatra'

config/routes.rb でマウント:

mount HelloFromSinatra, at: "hello_sinatra"

rake routes で確認するとマウントされたアプリケーションがルーティングテーブルに表示される。

まとめ

Mount Engine 便利っぽい。別のアプリケーションを統合するのに便利な機能だった。