[rails] いまさらのdevise 初心者向けの備忘録的にメモっておこう
参考:http://ruby-rails.hatenadiary.com/entry/20140801/1406907000
1.インストール
Gemfileに書いてバンドル。
2.deviseの各ファイルをプロジェクト内に展開
こういうのが大体書いてない。書いてないhowto系は爆発すればいい。
rails g devise:install
これを打つと
$ rails g devise:install
create config/initializers/devise.rb
create config/locales/devise.en.yml
===============================================================================
Some setup you must do manually if you haven't yet:
1. Ensure you have defined default url options in your environments files. Here
is an example of default_url_options appropriate for a development environment
in config/environments/development.rb:
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
In production, :host should be set to the actual host of your application.
2. Ensure you have defined root_url to *something* in your config/routes.rb.
For example:
root :to => "home#index"
3. Ensure you have flash messages in app/views/layouts/application.html.erb.
For example:
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
4. If you are deploying on Heroku with Rails 3.2 only, you may want to set:
config.assets.initialize_on_precompile = false
On config/application.rb forcing your application to not access the DB
or load models when precompiling your assets.
5. You can copy Devise views (for customization) to your app by running:
rails g devise:views
===============================================================================
と。あとは基本的に手順を順番にこなしていく形になります。
3.deviseのメール送信時のホスト名を指定
config/environments/development.rbに追記する
# config/environments/development.rb
Rails.application.configure do
...
# deviseの設定
config.action_mailer.default_url_options = { host: 'localhost:3000' }
...
end
productionモードでは、host:に実際のサーバーの値を設定しましょう。
4.root_urlを指定
deviseはログアウト時などのリダイレクト先としてroot_urlを使う
そうです。ここ重要。
# config/routes.rb
...
root to: "home#index"
...
5.エラーメッセージの処理
deviseはログインやログアウトなどのときに、flashにサクセスやエラーメッセージを追加する
そうです。ここも重要。
# app/views/layouts/application.html.erb
....
<body>
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
<%= yield %>
</body>
</html>
6.手順4で提示されているものはスキップ
rails 3.2 の人だけやってください。
5は、Viewをカスタマイズしたいときのため必要であり、今はインストールのみのためスキップします。
7.Viewのカスタマイズ
rails g devise:views とコマンドを走らせます。
# rails g devise:views
invoke Devise::Generators::SharedViewsGenerator
create app/views/devise/shared
create app/views/devise/shared/_links.erb
invoke form_for
create app/views/devise/confirmations
create app/views/devise/confirmations/new.html.erb
create app/views/devise/passwords
create app/views/devise/passwords/edit.html.erb
create app/views/devise/passwords/new.html.erb
create app/views/devise/registrations
create app/views/devise/registrations/edit.html.erb
create app/views/devise/registrations/new.html.erb
create app/views/devise/sessions
create app/views/devise/sessions/new.html.erb
create app/views/devise/unlocks
create app/views/devise/unlocks/new.html.erb
invoke erb
create app/views/devise/mailer
create app/views/devise/mailer/confirmation_instructions.html.erb
create app/views/devise/mailer/reset_password_instructions.html.erb
create app/views/devise/mailer/unlock_instructions.html.erb
rails3の時代で提供されていたdeviseではhamlでのgenerateがあったようですが、色々問題があるらしく消されたとのこと。
面倒ですが、gemのhtml2hamlを入れて一回generateしたあとに魔法の言葉で置換しましょう。
# gem install html2haml
Fetching: html2haml-2.0.0.gem (100%)
Successfully installed html2haml-2.0.0
1 gems installed
# for file in app/views/devise/**/*.erb; do html2haml -e $file ${file%erb}haml && rm $file; done
後者のfor文は実行しても何もレスポンスないですが、きっちりファイルが置換されているはず。確認しましょう。
8.モデルの作成
rails g devise [モデル名]で作成。
下ではUserで作成。まぁこんなもん大体UserとかAdminとかでしょ。
# rails g devise User
invoke active_record
create db/migrate/20150127110429_devise_create_users.rb
create app/models/user.rb
invoke rspec
create spec/models/user_spec.rb
insert app/models/user.rb
route devise_for :users
モデルを作ったので、rake db:migrateで、migrateしましょう。
こういう基礎的な事こそまとめておきたかったのと
Wordpress内にマークダウン書式が使えるというプラグインを入れたので試してみたw
以上。