Λάδι Βιώσας

http://profile.hatena.ne.jp/kenkitii/

いまさらながら らくちん Sinatra 環境構築メモ

久しぶりにちょこっと Web アプリでも書いてみよっかな、と調べていたら浦島太郎状態だったのでメモ。環境は、MacOSX 10.7.5 + XCode 4.6.1 です。

環境の構築

Homebrew + Command Line Tools for Xcode

パッケージマネージャーです。結構面倒ですが入ってなかったら入れときましょう。

rbenv

rvm と似たようなもんだけど、bundler を使う場合に便利そうなので rvm から乗り換えることにしました。

$ rvm seppuku

として、rvm アンインストール後、~/.zshrc に書いていた rvm 関連のスクリプトを削除します。

続いて rbenv その他もろもろをインストールします*1

$ brew install rbenv ruby-build readline openssl
$ echo 'eval "$(rbenv init -)"' >> ~/.zshenv

インストール可能な Ruby のバージョンを確認します。

$ ruby-build --definitions # or rbenv install -l

とりあえず ruby 1.9.3 と 2.0.0のインストール。

$ RUBY_CONFIGURE_OPTS="--enable-shared --with-readline-dir=$(brew --prefix readline) --with-openssl-dir=$(brew --prefix openssl)"  rbenv install 1.9.3-p392
$ RUBY_CONFIGURE_OPTS="--enable-shared --with-readline-dir=$(brew --prefix readline) --with-openssl-dir=$(brew --prefix openssl)"  rbenv install 2.0.0-p0
$ rbenv global 1.9.3-p392 # 1.9.3 を使う
$ rbenv rehash; ruby -v # バージョン確認
Sinatra などなどのインストール*2
$ gem install sinatra shotgun bundler guard-livereload

スクリプトひな形

Gemfile
source :rubygems
 
gem 'sinatra'
gem 'haml'
 
group :development do
  gem 'guard'
  gem 'rb-fsevent' # OSX固有のもの
  gem 'guard-livereload' # ブラウザ自動リロード
  gem 'guard-ego' # Guardfile を変更した際に Guard が再起動される
end
config.ru
require "bundler"
Bundler.require
require File.dirname( __FILE__ ) + '/app'

run Sinatra::Application
app.rb
get '/' do
  'Hello, World'
end

使い方

作業ディレクトリで

$ guard init livereload

して、Guardfile に sinatra 用の設定を追加↓

guard 'livereload' do
 # sinatra
  watch(%r{.+\.rb})
  watch(%r{views/.+\.(haml|sass|css)})
end
$ guard

↑で起動後、Chrome ブラウザの Livereload アイコンクリックして

$ shotgun

を立ち上げます。こんな感じなこと↓が無事できました!

どうぞおためしください

*1: openssl を入れるのは、ruby 2.0 が システムデフォルトのものより新しいバージョンを必要とするため、readline はシステムデフォルトのものを使ってしまうと、irb や pry で日本語が打てなくなるため。

*2:shotgun は自動スクリプトリロードウェブサーバー、guard-livereload はブラウザの自動リロードのパッケージです。