$ 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

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

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入れてもシステムが汚れなくて良いと思うんだけどなあ・・・。

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

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

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

MiniMagickを使ってRMagickと決別する。

MiniMagickはImageMagickのRuby bindingじゃなくて、ImageMagickのCommand Line InterfaceのWrapper。Paperclipのアプローチに関心してたけど本来はこういうのをPaperclipが使うべきですね。

関連:RailsからImageMagick(convert)に自由にオプションを渡せると聞いて飛んできました - komagata

Railsでguardを使う。(rspec)

# Gemfile:
group :test do
  gem 'rspec-rails'
  gem 'guard-rspec'

  # for Mac
  gem 'rb-fsevent'
  gem 'growl'
end
$ guard init rspec
$ guard start

deviseでログイン後のURLを設定する方法。

deviseではログイン後にはデフォルトでroot_pathに移動するようになってる。それを変えたい。

devise / lib / devise / controllers / helpers.rb

def after_sign_in_path_for(resource_or_scope)
  scope = Devise::Mapping.find_scope!(resource_or_scope)
  home_path = "#{scope}_root_path"
  respond_to?(home_path, true) ? send(home_path) : root_path
end

上記の様にresource(普通はUser)のroot_pathが設定されてればそっちに行くようになってるので下記の様にuser_root_pathに何かを設定すればいい。

# config/routes.rb:
Foo::Application.routes.draw do
  match '/snippets' => 'snippets#index', :as => :user_root
end

ログイン後に/snippetsに行くようになった。

% gem install haml2slim
% ls app/views/emotions 
_form.html.haml edit.html.haml  index.html.haml new.html.haml   show.html.haml
% haml2slim app/views/emotions 
% ls app/views/emotions 
_form.html.haml _form.html.slim edit.html.haml  edit.html.slim  index.html.haml index.html.slim new.html.haml   new.html.slim   show.html.haml  show.html.slim
# app/views/emotions/show.html.slim: 
p#notice= notice
p
  b Body:
  = @emotion.body
p
  b Kind:
  = @emotion.kind
= link_to 'Edit', edit_emotion_path(@emotion)
= link_to 'Back', emotions_path

OMG!

Generators Slim - Issues - plataformatec/devise - GitHub

I'm exec this generate for slim, but the code created is erb...

$ rails g devise:views usuarios -e slim
  create  app/views/usuarios
  create  app/views/usuarios/confirmations/new.html.erb
  create  app/views/usuarios/mailer/confirmation_instructions.html.erb
  create  app/views/usuarios/mailer/reset_password_instructions.html.erb
  create  app/views/usuarios/mailer/unlock_instructions.html.erb
  create  app/views/usuarios/passwords/edit.html.erb
  create  app/views/usuarios/passwords/new.html.erb
  create  app/views/usuarios/registrations/edit.html.erb
  create  app/views/usuarios/registrations/new.html.erb
  create  app/views/usuarios/sessions/new.html.erb
  create  app/views/usuarios/shared/_links.erb
  create  app/views/usuarios/unlocks/new.html.erb

josevalim February 11, 2011 | link

You need devise master to do that.

READMEに書いてあるけど、deviseでhaml or slim(-eオプション)使いたかったら1.1.7じゃ駄目でmaster使えとのこと。1.2rcが正式になったら使えるようになるかも。