(Railsの進化によって)Rubyの記述量がどんどん削減された結果、今度はそれ以外のコードがネックになってきたと言えるでしょう。だから次はRuby以外のコードをあまり書かなくていいようにと、SCSSやCoffeeScriptが取り込まれたのでしょうネックになってきたというか、なんでrubyは綺麗に書けるのにHTMLとかCSSとかこんな冗長にしか書けないんだという不満が潔癖症のプログラマを動かしたように思う。まぁ、haml・coffee・scssを導入したらしたで、新しい書き方が3つ増えるわけで、一人でやる分にはいいけどチームで開発する時どうなんだという気がしないでもないが・・・やはり目先の学習コストに対する寛容さは人それぞれだと思うし。
それはそれとして、以下のアプリはHamlとsassのイージーサンプルとなっているので掘り起こしてみた。
Ruby Freaks Lounge:第9回 SinatraとSequel・Hamlで掲示板アプリを作る|gihyo.jp … 技術評論社
http://gihyo.jp/dev/serial/01/ruby/0009
上の通り、公開されてるコード( http://github.com/yhara/sinatbbs/tree/magazine )をとってきて動かせばローカルで掲示板アプリがサクっと動くが、Herokuで動かすには少し修正がいる。以下、その手順をメモ。
◯ファイル追加など
- Gemfile
sinatra, haml, sequel, sqlite3, heroku をGemfileに書き、bundle install --path ./vendor/bundle としておく。
- start.rb 修正
require './model/comment.rb' (./を先頭につける)
※
Ruby 1.9.2から$LOAD_PATHにカレントディレクトリが含まれなくなった - ぬいぐるみライフ(仮)
http://d.hatena.ne.jp/mickey24/20100907/1283869273
- comment.rb 修正
Sequel.connect(ENV['DATABASE_URL'] || "sqlite://db/development.sqlite3")
※
デプロイ時も考慮して、DBへの接続は Sequel.connect(ENV['DATABASE_URL'] || 'sqlite://my.db') という感じで書く必要あり。 - Lost+Found
http://d.hatena.ne.jp/Snaka/20090704/1246712748
- migration用ファイルの作成
db/migrate/001_create_posts.rb
class CreateComments < Sequel::Migration def up create_table :comments do primary_key :id text :name text :title text :message timestamp :posted_date end end end- Rakefile作成
require 'rubygems' require 'rake' require 'sequel' require 'sequel/extensions/migration' namespace :db do desc "migrate database" task :migrate do DB = Sequel.connect(ENV['DATABASE_URL'] ||'sqlite://db/development.sqlite3') Sequel::Migrator.apply(DB, './db/migrate') end end
- config.ru作成
require './start.rb'
run Sinatra::Application
※
Ruby Freaks Lounge:第23回 Rackとは何か(1)Rackの生まれた背景|gihyo.jp … 技術評論社
http://gihyo.jp/dev/serial/01/ruby/0023
◯ローカルで動かしてみる
# rake db:migrate
※sqliteなので不要だが、herokuで必要なので確認しておく
# rackup
◯Herokuで動かす
# git init
# git add ./
# git commit -am "<コメント>"
# heroku create <app名>
# git push heroku master
# heroku rake db:migrate
# heroku open
http://bbs-sp3.heroku.com/
完成。
参考サイト:
CSS拡張メタ言語「SCSS(Sass)」と「LESS」の比較 - (DxD)∞
http://dxd8.com/archives/217/
Ruby Sequel DBアクセスライブラリ - yshのメモ日記
http://d.hatena.ne.jp/yshgt/20080629/1214720897
herokuでsqliteなsequelつかうときのメモ - Lost+Found
http://d.hatena.ne.jp/Snaka/20090709/1247155835
sequelでmigration | ゆーすけぶろぐ
http://yusukezzz.net/blog/archives/1574
Sinatraの使い方 - ayaketanのプログラミング勉強日記
http://d.hatena.ne.jp/ayaketan/20111219/1324295283