Rails3時代の認証システムはRestful Authenticationからdeviseに変わったみたいですが、このdeviseという認証システムには以下のような非常に豊富な機能が付いており、殆どのアプリケーションに対してオーバースペックな気がします。

  • Sign in
  • Sign out
  • Registration
  • Confirmation
  • Forget password
  • Lock/Unlock account

とはいえ、わざわざDeviseのControllerをオーバーライドして不要なアクションを削除したりするのはとてもメンドクサイので、Routingを編集することで当該機能にアクセスできないようにしちゃます。

deviseのroutesを定義しているdevise_forメソッドは、resourcesに使うような標準オプションも受け入れてくれるので以下のようにすればOKです。

# RAILS_ROOT/config/routes.rb
# デフォルトはこんな感じ
devise_for :users

# 全部無効化
devise_for :users, only: :none

# ログイン、ログアウトだけ有効化
devise_for :users, only: [:sign_in, :sign_out, :session]

# 小さいアプリではこんな感じで使ってます
devise_for :users, only: [:session] do
  get '/sign_in', :to => 'devise/sessions#new', :as => :new_user_session
  get '/sign_out', :to => 'devise/sessions#destroy', :as => :destroy_user_session
end

RailsもDeviseも非常に大きなシロモノになっていて、ちょっとしたアプリを作るには面倒なことが増えてきたので最近はPadrinoを勉強してます。すごくいいのでぜひどうぞ。

 

Ruby on Rails 3.1.0が正式リリースされたので、早速3.1.0RCで作っていたアプリをアップデートしたところproduction環境でassets pipelineが上手く動かなくなったので。

現象としては、stylesheet_link_tagやjavascript_include_tagで出力されるファイルのURLが、RC6だと

<link href="/assets/application-9bfec9e77b13d0aae452fa8f1b785be2.css" media="screen" rel="stylesheet" type="text/css" />
<script src="/assets/application-773d7f39b6aab9114a3b3b034fe6ac17.js" type="text/javascript"></script>

だったのが、stableだと

<link href="/assets/application.css" media="screen" rel="stylesheet" type="text/css" />
<script src="/assets/application.js" type="text/javascript"></script>

になってしまうため、assets:precompileで予めassetsファイルを作る設定であったproduction環境において、cssファイルもjsファイルも見つからずにかわいそうなことになるわけです。
それどころかrake assets:precompileもコケる事態になってました。

これは、3.1.0RC8あたりでassets pipelineに関する変更がいくつか取り込まれた関係で設定項目が増え、デフォルトの挙動が変更になったからですね。詳細はgithubのrailsリポジトリのissuesを見てください。

肝心の修正方法ですが、config/environments/production.rbの14~17行目あたりを以下のように変えるだけでOKでした。

# Don't fallback to assets pipeline if a precompiled asset is missed
config.assets.compile = true

# Generate digests for assets URLs
config.assets.digest = true

さて、3.1.0がリリースされて2日目ですが、早くもpjax_railsが取り込まれると噂の3.2.0が待ちどおしいです。

© 2011 sanojimaru.com Suffusion theme by Sayontan Sinha