16
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?