Fjord Boot Campに参加して早半年。Rubyの基礎学習が終わり、今日からいよいよWebアプリに入る。
強力なフレームワークであるRailsの前に、Sinatraという比較的軽量なフレームワークを利用してメモアプリを作る課題。
課題の答えは書けないが、Sinatraの始め方をメモ。
Sinatraの始め方
こちらのページがわかりやすい。
erb
は、Embedded RuByの略で、HTMLにRubyを埋め込む技術のことらしい。(参考:eRuby - Wikipedia)
Sinatraのインストール
まず、適当なディレクトリを作成。
$ mkdir sinatra
作ったディレクトリに移動し、
$ bundle init
Gemfileができるので、そのGemfileに下記を追記。
gem "sinatra"
Sitatraをインストールする。
$ bundle add sinatra --skip-install $ bundle install
アプリ作成
rbファイルを作成。例:test.rb
require "sinatra" get "/" do "Hello world!" end
Sinatraを起動する。
$ bundle exec ruby test.rb
Sinatraを起動している状態で下記にアクセスすると、ページを表示できる。
簡単でびっくり。
リロードで変更を反映できるようにする
これで一応アプリの土台ができたが、test.rb
を変更してページをリロード(再読み込み)しても、変更は反映されない。変更を反映させるためには、Sinatraを再起動する必要がある。
変更のたびに再起動させるのは面倒なので、gemを使う。Sinatraを一旦停止して、Gemfileに下記を追記。
gem "sinatra-contrib"
インストール。
$ bundle install
test.rb に require "sinatra/reloader"
を追記して読み込む。
require "sinatra" require "sinatra/reloader" get "/" do "Hello world!" end
あらためてSinatraを起動する。以降はリロードで変更が反映できるようになる。
ルーティング
get
以外にも以下のようなメソッドが使える。
get '/' do .. 何か見せる .. end post '/' do .. 何か生成する .. end put '/' do .. 何か更新する .. end patch '/' do .. 何か修正する .. end delete '/' do .. 何か削除する .. end options '/' do .. 何か満たす .. end link '/' do .. 何かリンクを張る .. end unlink '/' do .. 何かアンリンクする .. end
require "sinatra" require "sinatra/reloader" get "/" do "Hello world!" end get "/user/:name" do "User Name #{params[:name]}" end get "/hello/*" do |name| "Hello #{name}. How are you?" end get "/foo/bar" do "/foo/bar page!" end
なんでもできちゃいそう!