この前Rails3.1がリリースされたと思ったら、もうRails3.2です。
バージョンが上がると、重宝して使っていたgemやプラグインが対応に追いつくのかが不安なんですが、その内のひとつ「devise」に関してのちょっとしたエントリーです。
deviseとは
github.com/plataformatec/devise
deviseはシステムのログイン管理を担ってくれるRubyのパッケージです。
ログイン認証が必要なシステムに対して、ユーザー登録・パスワードの暗号化・パスワードリセットなどの処理を担ってくれるので便利です。
そのdeviseを使用したプロジェクトを作ります。
Railsは3.2です。
rails new sample |
で、プロジェクト作成。データベースも作成しておきます。
Gemfileに、deviseに関する行を追加。
gem 'devise' |
その後、本来は
rails generate devise:install |
とすべきところを、
rails generate devise user |
と、いきなりモデルの作成をしました。
すると、
/home/user/.rvm/gems/ruby-1.9.2-p180@rails32/gems/execjs-1.3.0/lib/execjs/runtimes.rb:50:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable) |
本編とは関係ないエラーが出てしまいました。
JavaScriptのランタイムが無いと。
Gemfileから
# gem 'therubyracer' |
のコメントアウトを外します。
で、再度
rails generate devise user |
を実行。
すると、必要なファイルが作成されます。
そして、アプリを起動すると。。
/home/user/.rvm/gems/ruby-1.9.2-p180@rails32/gems/devise-2.0.1/lib/devise/rails/routes.rb:406:in `raise_no_devise_method_error!':User does not respond to 'devise' method. This usually means you haven't loaded your ORM file or it's being loaded too late. To fix it, be sure to require 'devise/orm/YOUR_ORM' inside 'config/initializers/devise.rb' or before your application definition in 'config/application.rb' (RuntimeError) |
何か怒られました。
ここで、「ああ、『rails generate devise:install』をしてなかった。。」と、インストールコマンドを実行。
rails generate devise:install |
すると、
/home/yama/.rvm/gems/ruby-1.9.2-p180@rails32/gems/devise-2.0.1/lib/devise/rails/routes.rb:406:in `raise_no_devise_method_error!': User does not respond to 'devise' method. This usually means you haven't loaded your ORM file or it's being loaded too late. To fix it, be sure to require 'devise/orm/YOUR_ORM' inside 'config/initializers/devise.rb' or before your application definition in 'config/application.rb' (RuntimeError) |
同じエラーです。どつぼにはまりかけです。
エラーをよく読むと、
config/initializers/devise.rb か、
config/application.rb に、
require 'devise/orm/YOUR_ORM' を書いてね、と言われているようです。
どのO/Rマッパーを使うのかがわからないと起動できないみたいですね。
なので、
config/application.rb に
require 'devise/orm/active_record' |
を記述後、インストールコマンドを実行。
無事、必要なファイルが生成され、deviseを使えるようになりました。
何事も順序どおりに、端折っちゃだめよというお話でした。