2011-02-01
2011-02-10
■ [book] 昨年売れた本ランキングとか
やろうと思ってたら2月になってしまったという。
1位
B003L7H9SA
2位
4774143898
3位
4798025623
4位
4873114454
5位
4777512924 4774142727 4774143243 4774143073 477414164X 4798119172 4797352604
というわけで1位は松江ラーメンでした(本じゃない!)
■ [rails] "Simple Omniauth"に従ってログイン処理を書いてみたのだが
- http://railscasts.com/episodes/241-simple-omniauth
- http://asciicasts.com/episodes/241-simple-omniauth
RailsCastsの「Simple Omniauth」という回で、Omniauthを使ってTwitterログインを実装する方法が紹介されている。 「Simple」というのは、deviseとか使ってパスワードでもTwitterでもログインできるようにするんじゃなくて、OmniauthによるTwitterログインのみ提供する、という意味。
んでそれに従うと本当に簡単にTwitterログインができるんだけど、テストを書こうとしてちょっと困った。
config/routes.rbでは、以下のように〜/auth/twitter/callbackというURLにsessions#createを割り当てている。「resources :sessions」ではないので、〜/sessions/createというURLは存在しない。
match "/auth/:provider/callback" => "sessions#create"
さて、test/functionals/sessions_controller_test.rbでcreateアクションのテストをしようとして
post :create
と書くと、「:controller => "sessions", :action => "create"というルーティングは定義されていない」というエラーになってしまう。
こういうケースってどうしたら良いんでしょう?
ちなみにtest/integraton/でやろうとすると、post "/auth/twitter/callback" はできるんだけど、その前にrequest.env["omniauth.auth"]に値を入れる方法がないという…
とりあえず config/routes.rbにresources :sessionsを追加してテストを書いた。
2011-02-13
■ [rails] 10 Ruby on Rails Best Practices - SitePoint
The Ruby Show経由。
- Fat Model, Skinny Controller
- Reusable Scopes and Relations
- Package Your Code into Gems and Plugins
- Use the Built-in Ruby Duck Typing Methods
- Manage Attribute Access
- Use Non-database-backed Models
- Virtual Attributes
- Use Translations
2011-02-21
■ [ruby] WEB+DBのRuby連載第5回はRakeとChefとCapistranoの話です
今週発売のWEB+DB PRESSのRuby連載は、Rake・Capistrano・Chefの記事を書きました。「Rubyによる自動化」つながりです。 Rake=日々の作業を自動化する=初級、Capistrano=デプロイとサーバ管理を自動化する=中級、Chef=サーバ構築を自動化する=上級というイメージで、それぞれ2p/3p/3pという配分です。
Chefはけっこう複雑なシステムなので3pでは導入部分までしか書けませんでしたが、 いきなり公式Wikiを見るとどこから読んでいいのか分からなくて困ると思うので(というか困った)、先に本記事を導入として読んでいただくと入りやすいと思います。
4774145440
メモ1
Capistrano + Rails3(Bundler) + Unicornという組み合わせは罠があるそうです。
メモ2
そういえば本編では「とりあえずchef gemを入れてchef-soloを試す」という手順を書いたので、まっさらのマシンにChef Soloを入れる手順は書かなかったのでした。
まあRubyを入れてRubyGemsを入れてChef gemを入れてもいいんですが、Debian/Ubuntu/CentOS/RHELに関してはパッケージマネージャで入れるのが楽です。