Railsの設定ファイルを環境毎に書けるプラグインをいつも見失う。なんて名前だったっけ?
rails configとか検索し辛いワードなのでここに記す。(via @fakestarbabyさん)
railsjedi/rails_config - GitHub
SinatraやPadrinoに対応してるのにrails_configとは是如何に。
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 ('#')
まだ空きがあるはず!今日は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作るのでヘッダも必要だしとか・・・だるいよなあ(ただの愚痴です・・・)
何故同じrouteを2回定義したときの動作が気になったかというと、@miminashiさんのtweetが気になったからです。
Lokkaではまずプラグインが読み込まれるのでこの動きは好都合。
# public/plugin/lokka-unk/lib/lokka/unk.rb:
module Lokka
module Unk
def self.registered(app)
app.get '/' do
'unk'
end
end
end
end
% curl http://localhost:9646
unk
プラグインから簡単にトップページを横取りできた。これはいいフリーダム。
# public/plugin/lokka-unk/lib/lokka/shit.rb:
module Lokka
module Shit
def self.registered(app)
app.get %r{^/([0-9a-zA-Z-]+)$} do |slug|
slug
end
end
end
end
% curl http://localhost:9646/1
1
% curl http://localhost:9646/hoge
hoge
個別ページはこんな感じ。選ばれない方のメソッドは単に実行されないので副作用はありません。