Lokkaでテーマ毎に多言語化ファイル(ja.ymlとか)を置けるようになるパッチを頂きました。

Commit a8a798ff13f1a1c8594c7eedd0027f0720b95543 to komagata/lokka - GitHub

また、テーマ毎に404ページを設定出来るようにしました。(public/theme/p0t/404.hamlとか)

Commit dbe91a0a4339bef57118f7073f66a2936fe67298 to komagata/lokka - GitHub

Terminal — screen — 236×52

Macにdefaultで入ってるgemは何でユーザー別の場所が/Library/Ruby/Gems/1.8より後にあるんだろう?この順番が逆でさえあれば普通にみんなsudo無しでgem入れてもシステムが汚れなくて良いと思うんだけどなあ・・・。

SayKotoeriで読み上げるだけのearthquake pluginを書きました。(SayKotoeri必須)

komagata's gist: 912141 — Gist

カタカナ英語のいい辞書がフリーでないかな?

Test::Unit + Capybaraによる自動テスト。

Test::UnitはRailsデフォルトだけあってサポートが行き届いていて簡単。

DataMapperのvalidationのエラーメッセージを国際化するdm-validations-i18nにitロケール(イタリア語)を追加しました。

komagata/dm-validations-i18n - GitHub

以前、台湾語・中国語のパッチを貰っていて対応してたんですがイタリア語も貰ったついでにdm-core 1.1.0対応をしてテストをちょっと追加しました。

dm-core 1.1.0対応というのはdm-coreがextlibを使わなくなったのでdm-validations-i18n内のextlib依存コードを修正したというだけです。cattr_accessorがいきなり使えなくなったのでビックリしました。

関連:dm-validations-i18n - komagata

JenkinsでRailsアプリをテストする。

環境

Jenkinsのインストール

さくらのVPSにDebian squeezeをインストールする方法はこちら

$ wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
$ sudo vi /etc/apt/sources.list
deb http://pkg.jenkins-ci.org/debian binary
$ sudo apt-get update
$ sudo apt-get install jenkins

jenkinsユーザーが作成されて8080にjenkinsが立ち上がる。

nginxでのReverse proxyの設定

example.com:8080では味気無いのでci.example.comでアクセス出来るようにする。

$ sudo apt-get install nginx
$ sudo vi /etc/nginx/sites-available/ci.example.com
server {
  listen 80;
  server_name ci.example.com;
  location / { proxy_pass http://localhost:8080; }
}
$ ln -s /etc/nginx/sites-available/ci.example.com /etc/nginx/sites-enable/ci.example.com

rvmのインストール

rvmをsystem wideにインストールするのは大変なので単にjenkinsユーザーにインストールする。

$ sudo su - jenkins
$ bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )

大体nokogiriを使う段になって困るので下記をちゃんとインストールしておく。

$ rvm package install readline openssl zlib
$ rvm install 1.8.7 -C --with-openssl-dir=$HOME/.rvm/usr --with-readline-dir=$HOME/.rvm/usr --with-zlib-dir=$HOME/.rvm/usr

アプリ名でgemsetを作っておき、bundlerをインストールしておく。(jenkinsのタスクでやっても構わないと思う)

$ rvm use ruby-1.8.7-p334
$ rvm gemset create rails-example-app
$ rvm use ruby-1.8.7-p334@rails-example-app
$ gem install bundler

ユーザー認証

LAN内でない場合はユーザー認証をかける。"Manage Jenkins"の"Access Control"で"Secure Realm"を"Jenkins's own user database"にして"Allow users to sign up"にチェックを入れる。"Authorization"は"Matrix-based security"を選び、管理者ユーザーとなる予定のユーザー名を追加しておく。少し分かりづらいがここで設定した後、同じ名前でsign upをすれば良い。(間違って管理画面にはいれなくなってしまった場合はここを参考にしてリセットする。)

Configure System [Jenkins]

gitプラグインのインストール

大体が社内のgitやgithubから持ってくることになるのでgitプラグインをインストールする。"Manage Jenkins" > "Plugin Manager" > "Available"から"Git Plugin"を選択してインストールする。"Github Plugin"もついでに入れておくと良いかもしれない。

ビルドの設定

"Source Code Management"から"Git"を選択し、"Repositories" > "URL of repository"にリポジトリのURLを入れる。(githubのプライベートリポジトリを使っている場合はjenkinsユーザーで鍵を作り、githubの"Admin" > "Deploy Keys"から登録しておけばいい。)ビルドトリガーは好きに設定する。右側の"?"に親切な説明があるので迷わないだろう。ビルドはrailsなので"Execute shell"を選択する。rvmにはrvm-shellという指定の環境でshellを実行するうってつけのコマンドがあるのでそれをshebangに設定すればいい。

u2plus Config [Jenkins]

"Post-build Actions"で"E-mail Notification"を設定しておく。Debianデフォルトのexim4はメールが飛ぶようになってないのでいっそのことpostfixを入れた方が楽。

$ sudo apt-get install postfix

関連:Debian Squeeze install to Sakura VPS - komagata

HHKにはMuteはあってもPlayキーは無いのでiMoteを使って↓キー(Fn + /)にPlay/Pauseを割り当ててみた。(結局MBAで使い辛いのでC-Cmd-1に変更)

iMote Preferences

仕事中はヘッドホンしてるので話す時など結構頻繁に使うんですよね。iMoteには色々な機能があるけどこれしか使ってません。

CUIコマンドのend to endテストとはこんな感じだろうか?

spec/css_selector_command_spec.rb at master from komagata/css_selector - GitHub

# spec/css_selector_command_spec.rb:
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')

describe "css_selector" do
  it "get title" do
    result = `echo '<html><head><title>foo</title></head><body><h1>bar</h1></body></html>' | bin/css_selector title`
    result.should == "foo\n"
  end

  it "get h1" do
    result = `echo '<html><head><title>foo</title></head><body><h1>bar</h1></body></html>' | bin/css_selector h1`
    result.should == "bar\n"
  end
end

どっかに参考になるプロジェクトがないかしら。

TerminalでちょこっとWeb上のテキストが欲しい時が結構あるのでcss_selector.gemというのを作りました。

標準入力からCSS Selectorで指定した物の結果を改行繋ぎで出すだけのコマンドです。

CSS Nite in Ginza, Vol.56

Webデザイナーのための“黒い画面”入門

“黒い画面”(ターミナル)とは何か。Webデザイナーが“黒い画面”を使うメリットと"黒い画面"は難しくないという紹介をします。

CUIでのコマンドの基礎、オプションについてを紹介し、sassコマンドを使って実際の使い方を説明します。

次のCSS Niteで"黒い画面"のお話をさせていただくことになりました。