LoginSignup
16
17

More than 5 years have passed since last update.

ModularStyleのSinatraをPassengerで公開

Last updated at Posted at 2013-06-04

Sinatraの書き方にはClassic StyleとModular Styleという2種類があります。

  • Classic Style
require 'sinatra'

get '/' do
  "Hello World!"
end
  • Modular Style
require 'sinatra/base'

class App < Sinatra::Base

  get '/' do
    'Hello world!'
  end
end

Passengerで公開する場合、Classic Styleはドキュメントが結構あったのですが、Modular Styleの場合はあまり資料がなかったのでまとめました。(公式のドキュメントもよく見ると書いてあるのですが、わかりづらい)
PassengerがApacheで有効になっていることが前提です。

作成するのは以下のファイルです。

root/
├── app.rb
├── config.ru
├── public/(空でOK)
└── tmp/(空でOK)

config.ruには以下のように記述します。

require File.expand_path(File.dirname(__FILE__)) + '/app'
run App

ファイル更新があるたびにアプリケーションの再読み込みを行う必要があれば、tmp/always_restart.txtをいれてください。

あとは、Apacheの設定でDocumentRootをpublicにすればOKです。

<VirtualHost *:80>
    ServerName app.local
    DocumentRoot "/path/to/public"
    <Directory "/path/to/public">
        Order allow,deny
        Allow from 127.0.0.1
    </Directory>
</VirtualHost>

これで、http://app.localからSinatraアプリケーションにアクセスできます。

ちなみに、Classic Styleのときは、config.ruの中身が

require File.expand_path(File.dirname(__FILE__)) + '/app'
run Sinatra::Application

となります。

16
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
17