PeaceJet

証券会社で証券外務員(転職しました!)をやりながら、マーケティングやデータ分析・UI/UX改善などを行っています。

【Ruby on Rails】deviseのインストール手順



deviseのインストール手順

こんにちは、PeaceJetです。
今回はDeviseのインストール手順を書こうと思います。

deviseとは

f:id:PeaceJet:20180407204058p:plain
deviseとはRuby on Railsで作成したWEBアプリケーションに対して、複雑なコードを書かず、簡単に認証機能を実装することの出来るGemとなります。
認証機能を提供するGemは他にもありますが、そのなかでも一番使用されております。
それを裏付けるのが、GitHubでのStar数やWatch数です。

Gem 星の数 GitHub
devise 18,471 https://github.com/plataformatec/devise
authlogic 4,038 https://github.com/binarylogic/authlogic
sorcery 461 https://github.com/Sorcery/sorcery
Rodauth 411 https://github.com/jeremyevans/rodauth
LoadError in Devise::SessionsController#create
cannot load such file -- bcrypt_ext
Extracted source (around line #292):
    def require(file)
        result = false
            load_dependency(file) { result = super }
        result
    end
end

開発環境

以下の開発環境となります。
Raby 2.4.3
Rails 5.1.3

Gemfile

Gemfileには以下のように追記しましょう。

gem 'devise'
# Ruby2.3以後は、以下のGemが必要になります。
gem 'bcrypt-ruby', '~> 3.0.0'

Console

# bundle
$ bundle install

# deviseをインストールします。
$ rails g devise:install
# Deviseの日本語化
# config/locales以下のファイルを置き換えます。
devise.ja.yml
devise.en.yml
$ rails secrets:setup
$ rails secret
$ notepad rails secrets:edit
# /bin/rails secretsというファイルが作成される。
$ rails g devise:install

$ rails g devise User
  invoke  active_record
  create    db/migrate/20180404132544_devise_create_users.rb
  create    app/models/user.rb
  insert    app/models/user.rb
    route  devise_for :users

$ rails g devise:views users
  invoke  Devise::Generators::SharedViewsGenerator
  create    app/views/users/shared
  create    app/views/users/shared/_links.html.erb
  invoke  form_for
  create    app/views/users/confirmations
  create    app/views/users/confirmations/new.html.erb
  create    app/views/users/passwords
  create    app/views/users/passwords/edit.html.erb
  create    app/views/users/passwords/new.html.erb
  create    app/views/users/registrations
  create    app/views/users/registrations/edit.html.erb
  create    app/views/users/registrations/new.html.erb
  create    app/views/users/sessions
  create    app/views/users/sessions/new.html.erb
  create    app/views/users/unlocks
  create    app/views/users/unlocks/new.html.erb
  invoke  erb
  create    app/views/users/mailer
  create    app/views/users/mailer/confirmation_instructions.html.erb
  create    app/views/users/mailer/email_changed.html.erb
  create    app/views/users/mailer/password_change.html.erb
  create    app/views/users/mailer/reset_password_instructions.html.erb
  create    app/views/users/mailer/unlock_instructions.html.erb

$ rails secrets:setup
Adding config/secrets.yml.key to store the encryption key: f042aef509eb39d2b348368c42a4e3b8

Save this in a password manager your team can access.

If you lose the key, no one, including you, can access any encrypted secrets.

      create  config/secrets.yml.key

Ignoring config/secrets.yml.key so it won't end up in Git history:

      append  .gitignore

Adding config/secrets.yml.enc to store secrets that needs to be encrypted.

For now the file contains this but it's been encrypted with the generated key:

# See `secrets.yml` for tips on generating suitable keys.
# production:
#  external_api_key: 1466aac22e6a869134be3d09b9e89232fc2c2289

You can edit encrypted secrets with `bin/rails secrets:edit`.

Add this to your config/environments/production.rb:
config.read_encrypted_secrets = true
#/config/Initializer/devise.rb
  # 有効にすることで、好みのviewを使えるようになる。
  config.scoped_views = true