Rubyの入門や書き捨てアプリを作る場合は sinatraがオススメ!

| コメント(0) | トラックバック(0)

Rubyのフレームワークsinatraの紹介です。 Railが有名すぎますが、sinatraも使い勝手が良い感じです。

自分が使ってみて下記2点が非常に便利と思いました。

  • 最小のコード記述でMVCが使える
  • 最初はhttpサーバーの設定など特に考えなくていよい

と、言うわけで早速使い方。

基本動作させるまで、1分もかかりません。スゴイ!!

install

cmd
gem install sinatra

ソース

app.rb
require 'sinatra'
get '/' do
  "Hello world " 
end

動かしてみる

コマンドでプログラム起動

cmd
ruby app.rb
  #終了はCtrl-Cで

ブラウザーでアクセス

URL
http://localhost:4567
表示
Hello world

以上がsinatraの基本的な動かし方です。

もう少し便利に1、自動リロード編

app.rb を編集した場合、rubyの終了、起動をしないと表示結果が変わりません。 そこで、自動的にプログラムをリロードしてくれるモジュールを追加するとより開発が便利なります。

cmd
gem install sinatra-contrib
app.rb
require 'sinatra'
require 'sinatra/reloader'
get '/' do
  "Hello world " 
end

require sinatra/reloaderを追加するだけで、OKです。

もう少し便利に2、cssやjsなど静的ファイル読み込み

app.rbを置いているフォルダにpublicフォルダを作り、 その中にcssjsファイルを設置するとOK。

フォルダ構成
app.rb
public/styels.css
public/main.js
app.rb
# -*- coding: utf-8 -*-
require 'sinatra'
require 'sinatra/reloader'

get '/' do
  "<html><body>" +
    '<link   href="styles.css" type="text/css" rel="stylesheet" />' +
    '<script src="main.js"     type="text/javascript"    ></script>  ' +
    "<p>Hello world </p>" +
    "</html></body>"

end
styles.css
p{
    font-size:40px;
}
main.js
alert('hoge')

もう少し便利に3、ERBテンプレート利用編

MVCのviewの部分をテンプレート化して、 RubyとHTMLのソースコードを分離して使ってみます。分離方法は下記2点

  • Rubyのソースコード内で分離(最後にHTMLソースを記載)
  • HTMLのテンプレートファイルを別に用意して分離

1.Rubyのソースコード内で分離の場合

app.rb
# -*- coding: utf-8 -*-
require 'sinatra'
require 'sinatra/reloader'

#URL / でアクセス
get '/' do
  erb :index
end

#URL /hoge でアクセス
get '/hoge' do
  erb :hoge
end

__END__

@@index
<html><body>
 index template <br>
</html></body>

@@hoge
<html><body>
 hoge template <br>
</html></body>

2.HTMLのテンプレートファイルを別に用意して分離の場合

'views'フォルダを作成して、その中に拡張子'.erb'でテンプレートファイルを用意していきます。

フォルダ構成
app.rb
views/views.erb
app.rb
# -*- coding: utf-8 -*-
require 'sinatra'
require 'sinatra/reloader'

#URL / でアクセス
get '/' do
  erb :views 
end

#URL /hoge でアクセス
get '/hoge' do
  erb :hoge
end
views.erb
<html><body>
 views template  <br>
</html></body>
hoge.erb
<html><body>
 hoge template <br>
</html></body>

もう少し便利に4、変数渡し編

テンプレートに変数を渡したい場合、下記2点の方法があります。

  • インスタンス変数 ( @変数名 )
  • ローカル変数 ( 変数名)
app.rb
# -*- coding: utf-8 -*-
require 'sinatra'
require 'sinatra/reloader'

get '/' do

  #インスタンス変数
  @title='test page'

  #ローカル変数
  contents = 'this page is test'

  erb :index ,  :locals => {:contents => contents ,
                            :contents2 => 'hogehoge'}

end


__END__


@@index
<html><body>
<%= @title %><br>
<%= contents %><br>
<%= contents2 %><br>
</html></body>

インスタンス変数は@title='test page'だけの記述で渡ります。

ローカル変数の場合は下記の部分

  erb :index ,  :locals => {:contents => contents ,

シンボル:locals宣言し、その内部で変数名と値をわたします。

おわり

実行環境さえあれば、httpサーバー(webrick)を用意せずに、簡単にMVCモデルの利用まで、 さくっと実装できてしまいます。

関連記事

トラックバック(0)

トラックバックURL: http://mukaer.com/cgi-bin/mt/mt-tb.cgi/107

コメントする

PR

PR





検索

Loading

メニュー

twitter