# Gemfile:
group :development
  gem 'haml-rails'
end

真面目なサイトを作る時になんでSlimじゃなくてHamlかっていうと、ちょこちょこバグがあるからです・・・。

ProxyLocal

ProxyLocal could proxy your local web-server and make it publicly available over the internet.

ローカルのWebサーバーに他人にちょっとアクセスして欲しい時(何かの実験中とか)に便利なgem。

# app.rb:
require 'rubygems'
require 'sinatra'

get '/' do
  ' ┐(´ー`)┌'
end

こういう糞アプリがあったとして、まずローカルで立ち上げる。

% ruby app.rb 
== Sinatra/1.2.6 has taken the stage on 4567 for development with backup from Thin
>> Thin web server (v1.2.11 codename Bat-Shit Crazy)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:4567, CTRL+C to stop

でproxylocalをインストールして立ち上げると・・・

% gem install proxylocal
% proxylocal 4567 --host unk
Local server on port 4567 is now publicly available via:
http://unk.t.proxylocal.com/

http://unk.t.proxylocal.com/

xxx.t.proxylocal.comでアクセス出来るようになる。このぐらいの気軽さで外からアクセスさせることができると嬉しい。

datamapper(dm-core) 1.1.0では0.10.0からdeprecatedになっていた明示的なINの利用が出来なくなりました。明示的なINと暗黙的なINって何なのかというと下記の様な違いです。

# implicit
Foo.all(:id.in => [1, 2, 3])

# explicit
Foo.all(:id => [1, 2, 3])

対象がArrayだと自動的にINになるんですね。1.0.2で使ってたけどdeprecatedの表示は出てなかった気がするけどなあ。ヤラレタ。

つい先日、LokkaにもCI環境が整ったのでデグレしないようにテスト駆動バグ修正していくことにしました。

RuntimeError - explicit use of 'in' operator is deprecated - Issues - komagata/lokka - GitHub

$ gem install cmdline-fu
% cmdline-fu matching ssh               
# Copy ssh keys to user@host to enable password-less ssh logins.
$ssh-copy-id user@host

# start a tunnel from some machine's port 80 to your local post 2001
ssh -N -L2001:localhost:80 somemachine

# output your microphone to a remote computer's speaker
dd if=/dev/dsp | ssh -c arcfour -C username@host dd of=/dev/dsp

# Mount folder/filesystem through SSH
sshfs name@server:/path/to/folder /path/to/mount/point

サイトの方ちゃんと見に行ってみると、「こっちのがいいだろう」とか「それ動かなくね?」とかツッコミが多いので常用するワンライナーを探してる場合はちゃんと見た方がいいかも。

# config/application.rb:
module Foo
  class Application < Rails::Application
    config.autoload_paths += %W(#{config.root}/lib)
  end
end

gemにmoneky patch当てないでcloneしてgem 'foo', :git => 'git://foo'しようというのをどっかでみたけどslim-railsで

Deprecated: Use `require 'slim'` instead of `require 'slim/rails'`

が出るのは放置してたらcloneしてる人がいた。pull requestが送られてから2週間たってるけどマージされる気配が無いのでcloneした方を使う。

# Gemfile:
gem 'slim-rails', :git => 'git://github.com/stjernstrom/slim-rails.git'

もっと面倒なのかと思ってたけど簡単。さっさと自分でやればよかったな。

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