JSの設定

2012年1月28日土曜日

SinatraとSequel・Hamlで掲示板アプリを作る そしてHerokuへあげる

WEB+DB Press Vol.65「Write Less, Do More」のコラムから引用:
(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

2012年1月22日日曜日

Heroku で lokka

lokkaという、sinatra(軽量rails)上で動くcmsをHeroku(ruby版Paas)にアップする手順メモ。

◯環境

Mac OS X 10.6.8
MacPorts 2.0.3
rvm 1.10.2
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin10.8.0]
gem 1.8.15
heroku (2.18.1)
git version 1.7.7.4

◯環境構築手順

http://www.macports.org/install.php
macportsのインストール(略)
rvmのインストール(略)
rubyのインストール(略)
gitのインストール(略)

git clone git://github.com/komagata/lokka.git #lokkaを取得する
cp -p database.default.yml database.yml #lokkaディレクトリ内にdatabase.ymlを作成
bundle install ./vendor/bundle --without development postgresql #postgresを使わない設定
bundle exec rake db:setup
bundle exec rackup #ローカルでlokkaが確認できる

gem install heroku #ここからherokuにデプロイしていく
heroku create
git push heroku master #ssh公開鍵を作成しておく必要がある
heroku rake db:setup
heroku open #デプロイされたlokkaを確認できる

gem install taps #ローカルでlokka確認したときユーザ作成などしていたらDBをpushする
heroku db:push sqlite://db/development.sqlite3

◯できたもの
http://spinel3-lokka.heroku.com/

◯参考サイト

HerokuでWebアプリ開発を始めるなら知っておきたいこと (7)ブログならLokka - アインシュタインの電話番号☎
http://d.hatena.ne.jp/ruedap/20110505/ruby_heroku_web_app_development_tips_7

LokkaをインストールしてHerokuにデプロイした - kk_Atakaの日記
http://d.hatena.ne.jp/kk_Ataka/20111127/1322329546

HerokuでDBのデータをダウンロードしたりアップロードしたり - アインシュタインの電話番号☎
http://d.hatena.ne.jp/ruedap/20110222/ruby_heroku_database_sqlite3_download_upload

HerokuにWebアプリ(Sinatra)をデプロイする手順をまとめた - kk_Atakaの日記
http://d.hatena.ne.jp/kk_Ataka/20111126/1322240459

2012年1月9日月曜日

第2図書係補佐に出てくる読みたい本

前回
http://spinel3.blogspot.com/2012/01/blog-post.html

「読み終わったらもう1周読んで、読んでみたい順に10冊程度ピックアップしてみようと思う。」
このように書いた。読み終わったので宣言通りピックアップしてみよう。

何もかも憂鬱な夜に
人間失格
深い河
コインロッカー・ベイビーズ
アラビアの夜の種族

世界の終わりとハードボイルド・ワンダーランド
親友交歓
笙野頼子三冠小説集 (河出文庫): http://goo.gl/HEv0X
中陰の花
わたしたちに許された特別な時間の終わり

コメント。

巻末に中村文則さんとの対談がのっている。彼の作品である「銃」か「何もかも憂鬱な夜に」の選択で後者を。
又吉ファンになったからには太宰は外せないので「人間失格」と「親友交歓」。
後者は太宰の面白い側面が見られるらしい。
深い河はインドが舞台ということで興味深い。
コインロッカー・ベイビーズは又吉の思い出とリンクしすぎている。この章と「右で蹴れや」の章は、ニヤつかずに読むことは難しい。人によっては爆笑するだろう。

アラビアの夜の種族は、災厄の書を読んでみたい。ちょっと紹介文から引用しよう。
「面白すぎて読む者が夢中になり破滅する」と伝えられる「災厄の書」をナポレオンに献上しナポレオンのエジプト侵攻を阻止するという設定からして規格外だ。それほど面白い物語であると冒頭で宣言した上で、実際に作中で「災厄の書」の内容を語るという真っ向勝負。

世界の終わりとハードボイルド・ワンダーランドは、面白いんだろうけどひょっとしたら読まないかもしれない。前に一度挫折したことがあるようなないような。
笙野頼子三冠小説集は閉ざしがちな女性たちを描いているということで興味ある。
「中陰の花」は現役僧侶の人が書いたということで興味深い。
わたしたちに許された特別な時間の終わりは、演劇そのものに対する嫌疑に満ち溢れているということで興味深い。紹介文から引用しよう。
・・・それが岡田利規さんが作・演出をするチェルフィッチュという劇団だった。チェルフィッチュの舞台は演劇そのものに対する嫌疑に満ち溢れていた。・・・公演された作品を岡田さん自身が小説化したのが、『わたしたちに許された特別な時間の終わり』である。

初めの5つは特に読んでみたいもの、あとの5つは余裕があったら読んでみたいもの。
第2図書係補佐を読まれた方、あなたの選択とは似ているでしょうか?