Padrino


SinatraベースのWebフレームワーク。RailsっぽくSinatraを使える。

Sinatraはシンプルで自由度が高いけど、機能が少なすぎる。
Railsは機能が過剰でお手軽感に欠ける。
Padrinoは機能の量とお手軽感、自由度がちょうど良い。

ドキュメント

インストール

一応RVM使っておく。

$ rvm install 1.9.2
$ rvm 1.9.2
$ rvm gemset create padrino
$ rvm 1.9.2@padrino

$ gem install padrino

プロジェクト作成

$ padrino g project my_project
$ cd my_project
$ echo "rvm 1.9.2@padrino" > .rvmrc

Haml, scss, ActiveRecord, RSpec という構成 (Generators

$ padrino g project my_project -e haml -c scss -d activerecord -t rspec

ライブラリはBundlerで。

$ gem install bundler
$ bundle install

サーバ起動・終了

$ padrino start

$ padrino start -d -p 3000 -e development -a thin
$ padrino stop

thinを使う場合はGemfileに gem 'thin' を追加しておく。

Controller生成

$ padrino g controller User get:index

Model生成

$ padrino g model User name:string age:integer email:string

Assets PipelineでCoffeeScriptを使う


以下をGemfileに追加してbundle install。

gem 'padrino-sprockets', :require => 'padrino/sprockets'
gem 'coffee-script'
gem 'therubyracer', :require => 'v8'

public/ 以下を app/assets/ に移動(ただしfaviconはpublicに戻す)

$ mkdir -p app/assets
$ mv public/* app/assets/
$ mv app/assets/favicon.ico public/

jsとcssをそれぞれ適当に変更。

app/assets/javascripts/application.js
//= require ./libs/jquery
//= require ./libs/jquery-ujs
//= require_tree .

app/assets/stylesheets/application.css
/*
 *= require_self
 *= require_tree .
*/

app/app.rbのconfigブロックに以下を追加

# Sprockets support
require 'sprockets'
register Padrino::Sprockets
sprockets

View(layoutとか)でjsとcssを指定

%link(rel="stylesheet" type="text/css" href="/assets/application.css")
%script(type="text/javascript" src="/assets/application.js"

CoffeeScriptのファイル名は app/assets/javascripts/hoge.js.coffee のようにする。
するとWebでは /assets/hoge.js になる。

例:(jQueryBackbone.jsUnderscore.jsjson2を使用)

#= require ./libs/jquery-min.js
#= require ./libs/underscore-min.js
#= require ./libs/backbone-min.js
#= require ./libs/json2.js
#= require ./models/hoge.js

window.application ||= {}

class Router extends Backbone.Router
  routes:
    '': 'index'
    〜〜〜

class application.MyClass ## 他のスクリプトからこのクラスを使いたい場合
  constructor: (@name) ->
    〜〜〜


JavaScriptライブラリをwget

Padrinoとは直接関係ないけど。

$ mkdir -p app/assets/javascripts/libs
$ cd app/assets/javascripts/libs

jQuery
$ wget http://code.jquery.com/jquery-1.7.min.js -O jquery-min.js

Backbone.js
$ wget http://documentcloud.github.com/backbone/backbone-min.js

Underscore.js
$ wget http://documentcloud.github.com/underscore/underscore-min.js

json2.js
$ wget https://raw.github.com/douglascrockford/JSON-js/master/json2.js


Comments