{ 2012.2.22 }

rails3.2でdeviseのインストール手順を間違えたら面倒だった話

    はてなブックマーク - rails3.2でdeviseのインストール手順を間違えたら面倒だった話
    このエントリーをはてなブックマークに追加

    この前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を使えるようになりました。

    何事も順序どおりに、端折っちゃだめよというお話でした。

    Comments are closed.