DataMapperに手こずってあんまり進みませんでした。今のとこ、テーマディレクトリのインデックスページが表示できたってだけです・・・。

管理画面とテーマでviewsのディレクトリを変える必要があるのをどうしようかなというとこで今日はタイムアップ。

http://localhost:9393/

リポジトリは下記。名前はPyha(ピュハ)FJORD絡みで北欧の方の湖の名前です。特に意味は無いです。

komagata's pyha at master - GitHub

一人合宿1日目。CMS、とにかく作り始めました。

目標はデザイナーの方でも使える、クラウド環境対応(要はGAEとHeroku)のCMSです。

要はWordPressです。WordPressをクラウド対応(要はRDB、KVS、noSQL他DB対応)するのは相当難しい(出来てもデザイナーが使えるようなものにならなさそう)という結論からRubyで作ることにしました。

ツール自体はほぼ使ったことあるのを使うので技術的なチャレンジはしない予定です。Sinatra, DataMapperとかを使って、テーマ・プラグイン機構のあるCMSを地味に作る感じ。Windowsでの動作も必須で行きたい。

僕個人の趣味はなるべく我慢して、面倒な機能も頑張って実装しようと思います。

明日11日から15日まで5日間の夏休みに入ります。

しかし、僕は夏休みを全て投げ売って一人合宿をすることにしました。(自宅で)

Herokuでも動くRubyのCMSを作りたいと思います。一人合宿ですが、毎日経過報告をブログに書こうと思います。

こういうことをブログに書くことで自らを追い込みたいと思います。

ハッシュタグ:#1mancamp

インストール

% gem install sqlite3-ruby rails --pre
% rails new foo
% cd foo
% rails generate scaffold Club name:string exclusive:boolean
% rake db:migrate
% rails server

何でCMS作りたいかというと、WordPressが凄い便利だなーと思うからです。

デザイナー(@machidaさん)とプログラマー(俺)で会社をやってますが、デザインがメインの会社なので当然デザインの案件が多いです。そうすると、WordPressがあればプログラマーは何もしなくていいという案件がとても多いんです。

@machidaさんがWordPressを使い込んでるということもあるんですが、プログラマー無しでまともなWebサイトが作れるとかWordPress凄いなー。嫌だなー 怖いなー 怖いなー って思ってたんです。(褒め言葉)

でもまあ、時々はそのサイト向けに特化した機能や動きが必要になって、既存のプラグインでは対応出来ない時、プログラマー(俺)がプラグインをPHPで書くんですが、これが辛い・・・。

また、既存のプラグインで対応できるかの調査でそのプラグインのコードを全部読んだりするんですが、これもシンドイ・・・。(プラグインの作者がヘボイとかそういうわけでは全然無く、PHPとWordPressのルールと流儀をしっかり守ると逆にシンドイコードになるのです・・・)

それは我慢しろって話ですが、PaaS環境(GAE, Heroku)で動かないのがかなりダルイ。

WordPress用にさくらインターネットの500円の共有レンタルサーバーを借りるのがお決まりのコースなんですが、WordPress以外は全部Herokuに置くようになってから、@machidaさんが、

「何でWordPress、Herokuで動かないんですかねえ」

と、キレそうになっているのでHerokuで動くWordPress的な物が欲しいのでCMSを作ります。

.gvimrc

if has('gui_macvim')
    set imdisable " IMを無効化
    set antialias 
    set nobackup
    set guifont=Monaco:h14
    colorscheme darkblue

    " ヤンクをクリップボードへ送り込む
    set clipboard+=unnamed

    " ルーラーを表示
    set ruler
    set title

    " メニューバー無し
    set guioptions-=T

    " フルスクリーン時画面いっぱい
    set fuoptions=maxvert,maxhorz
endif

インストール

% bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )

.zshrcに追加

if [[ -s /Users/komagata/.rvm/scripts/rvm ]] ; then source /Users/komagata/.rvm/scripts/rvm ; fi

ruby1.9.2をインストール

% rvm install 1.9.2

ruby1.8.7をインストール

% rvm install 1.8.7

デフォルトのrubyを設定する

% rvm --default 1.8.7-p299

ブックマークしてもらった時に、「この人はブログやってるのかな?」と思う事が多くて、b.hatena.ne.jpのbをdに変えるお仕事が何か苦痛だった。

と思ったら、アイコン部分をマウスオーバーするとメニューが出てきて、その人がはてなで他に使ってるサービスが出てきた。便利ー。

最小プランは無料であるHerokuに静的ファイルを置くための雛形を作っときました。

$ git clone git://github.com/komagata/heroku-static.git
$ cd heroku-static
$ heroku create foo-bar-buz
$ git push heroku master

komagata's heroku-static at master - GitHub

html, js, css, imageなど、静的ファイルだったらpublicディレクトリに置いてpushすればすぐ公開。

あんまり無料ホームページとして使われてもHerokuは困るだろうけど、git必須な時点で誰も彼も使うということにはならんでしょう(多分)。僕はjsとかのデモやサンプルを置く場所として使ってます。

中見てもらえばわかりますが、こういうのを置いてるだけです。

% cat config.ru
require 'rubygems'
require 'sinatra'
get('/') { open('public/index.html').read }
run Sinatra::Application

必要な物がherokuのgemとgitだけなので慣れればGAEより楽だと思います。みんなで金払ってHerokuがパワフルになるといいな。

このブログのBundler化とRails2.3.5から2.3.8へのバージョンアップをやりました。

ハマったとこ

今までは

% haml --rails .

とやって、vendor/plugin/haml/init.rbを生成していたんですが、それが要らなくなった。

init.rbの中はhamlを読み込む処理だったのでbundlerではbundlerが必要なライブラリを読み込むから要らないんですね。Rails3から必要無いというわけではなく、Bundlerを使った場合に必要無いってことなんですな。

認証

BASIC認証大好き(REST厨乙)なのでこのブログもBASIC認証なんですが、ついでにパスワードとかもHerokuの環境変数にしてみました。
username: <%= ENV['CLOISTER_USERNAME'] || 'username' %>
password: <%= ENV['CLOISTER_PASSWORD'] || 'test' %>