jitter + growlもいいけど、vimでもっと素早く直感的にエラーを知りたい。

そんな時はsyntastic

" .vimrc
Bundle 'scrooloose/syntastic'
:BundleInstall

syntasticはIDEみたいにエラーがあったら左にマークを表示してくれる。デフォルトでファイル保存時に走るので便利。

Terminal — vim — 88×26

coffeescriptは最初から対応してて、coffeeコマンドでsyntaxをチェックしてくれる。プラグイン形式になっているので自分で書けば何でも行けるハズ。coffeelintが走るようにしたいなあ。

Railsの設定ファイルを環境毎に書けるプラグインをいつも見失う。なんて名前だったっけ?

rails configとか検索し辛いワードなのでここに記す。(via @fakestarbabyさん)

railsjedi/rails_config - GitHub

SinatraやPadrinoに対応してるのにrails_configとは是如何に。

Paperclipで画像サイズの最後に使うコレ

has_attached_file :foo, :style => {:thumb => '100x80>'}

いつも意味忘れてググるけどImageMagickのオプションなので下記に書いてある。

Resize or Scaling -- IM v6 Examples

  • Ignore Aspect Ratio ('!')
  • Only Shrink Larger ('>')
  • Only Enlarge Smaller ('<')
  • Fill Given Area ('^')
  • Percentage Resize ('%')
  • Pixel Area Limit ('@')
  • Cropping ('#')

参照:[rails]PaperClipでクロッピング - func09

まだ空きがあるはず!今日はTokyo PayPal Developers Groupのイベントですよ!

PayPal Express Checkout, Subscriptions - Tokyo PayPal Developers Group

セレゴ・ジャパン様がミーティングルームとプロジェクターを貸してくださいました。場所は渋谷駅の北川、セルリアンタワーから歩いて2分ほどです。地図:http://www.cerego.com/en/contact-us/

開場は19:30から、発表の開始は20:00頃です。イベント終了後、おそらく近くのお店で懇親会が行われます。

paypal-express@novさんのお話も絶対聞きたいし、@mreinschさんが作った、簡単にPayPalの定期支払いが出来るRailsプラグインのsubscription_fuも超注目なのです。

っていうか、今やってる仕事のプロジェクトでもsubscription_fu使うので行かなければならないのです。そしてsubscription_fuの低レイヤー部分はpaypal-expressに置き換えられる予定なので両方必聴なのです。

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

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

# Gemfile:
group :development do
  gem 'erb2haml'
end
% rake haml:convert_erbs
Looking for ERB files to convert to Haml...
Converting: app/views/layouts/application.html.erb... Done!
Converting: app/views/devise/unlocks/new.html.erb... Done!
Converting: app/views/devise/sessions/new.html.erb... Done!
Converting: app/views/devise/registrations/new.html.erb... Done!
Converting: app/views/devise/registrations/edit.html.erb... Done!
Converting: app/views/devise/passwords/new.html.erb... Done!
Converting: app/views/devise/passwords/edit.html.erb... Done!
Converting: app/views/devise/mailer/unlock_instructions.html.erb... Done!
Converting: app/views/devise/mailer/reset_password_instructions.html.erb... Done!
Converting: app/views/devise/mailer/confirmation_instructions.html.erb... Done!
Converting: app/views/devise/confirmations/new.html.erb... Done!

deviseのhaml/slim対応は本体から消えたっぽいのでこっちがいいかも。application.html.erbも変換してくれるし。

vimのplugin管理ツール。pathogenだのなんだのとスルーしてきたけどいい加減効率も悪いので入れてみました。

% git submodule add git://github.com/gmarik/vundle.git .vim/vundle
set nocompatible
filetype off
set rtp+=~/.vim/vundle/
call vundle#rc()

Bundle 'rails.vim'
Bundle 'The-NERD-tree'
Bundle 'quickrun'
Bundle 'vim-ruby/vim-ruby'
Bundle 'Shougo/neocomplcache'

.vimrcにBundle 'foo'と書いておいて:BundleInstallでまるっとインストール。.vim/bundleを.gitignoreに入れておく。

そもそもvim良く分かってないのでゴチャゴチャしてしまって嫌だなあと思っていた俺の.vimディレクトリ以下がスッキリ!.vimrcとvundlerプラグインだけになった!

改めて自分の.vimrcを見て、本当に使ってるモノだけにしてみたらビックリするほどvimを活かしてないことが判明しました。ネオコンは"これからやる気だす"という意気込みの現れで、現在はまったく活用できておりません・・・。

参照:pathogen+git submodule から Vundle に乗り換える - Yarukidenized:ヤルキデナイズド

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

komagata's gist: 912141 — Gist

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

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に行くようになった。

同じrouteを2回定義する件。

routesも要はRegexpとブロックの配列。でも最初に定義した方が呼ばれるって何か変。こういうものって後に追加した方が呼ばれる設計にする方が自然な気がする。

そこでもしかして同じroutesとか関係なくて、単にファイル内で上から下に書いてく時の優先順位がそのまんまこの設計に反映されてる的な感じなんじゃないかと思ってpassしてみた。

# public/plugin/lokka-unk/lib/lokka/unk.rb:
module Lokka
  module Unk
    def self.registered(app)
      app.get '/' do
        puts 'unk'
        pass
      end
    end
  end
end
% bundle exec ruby lokka.rb
unk
localhost - - [17/Feb/2011:10:41:33 JST] "GET / HTTP/1.1" 200 38183
- -> /

普通にページは表示されつつ、標準出力にunk。予想通りだ。これは擬似beforeみたいにも使えそう。(普通にbefore '/' do ... endした方が良いが。)

sinatraはルールがシンプルだから自由度が高いなあ。

何だか感慨深い。Java(僕のJava知識はJ2SE1.4で止まってる)とかその他の大きめなフレームワークだとChain-of-responsibilityパターンとかいってFilterChainみたいな感じで実装すると思うんだよね。こういうの。

sinatraはちっちゃいからRegexpとブロックのオブジェクトを配列にもってるから単にナメればいいでしょ?みたいな雰囲気。

Filterクラスを継承したクラスを作るとか面倒。Objective-Cだとブロック対応してない環境のためにワザワザdelegate作るのでヘッダも必要だしとか・・・だるいよなあ(ただの愚痴です・・・)