첫 번째 devise ① - 소개 해보기 -

웹 앱의 중요한 기능 중 하나인 로그인 인증 관리를 간단하게 도입하는 gem입니다.
커스터마이즈도 여러가지 할 수 있어 편리할 것 같다! 하지만 조사하면 잘 다룰 때까지 어려울 것 같다. .
자신의 이해를 깊게 하기 위해서도, 몇 번에 나누어 정리해 보기로 했습니다.

명령만으로 좋은 분은 이쪽
빨리 devise 가고 싶다! ① - 입문 순서로 도입해 보자 -

환경


  • Ruby 2.3.3
  • Rails 4.1.16
  • Windows 8 64bit

  • ① gem 도입



    새 프로젝트를 만듭니다. (좋아하는 이름으로, 나는 devise로 만들었습니다)
    $ rails new devise
    

    프로젝트가 생성되면
    Gemfile을 열고 나열된 gem의 끝에 추가합니다.

    Gemfile
    gem 'rails', '4.1.16'
    gem 'sqlite3'
    gem 'sass-rails', '~> 4.0.3'
    gem 'uglifier', '>= 1.3.0'
    gem 'coffee-rails', '~> 4.0.0'
    gem 'jquery-rails'
    gem 'turbolinks'
    gem 'jbuilder', '~> 2.0'
    gem 'sdoc', '~> 0.4.0',          group: :doc
    gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw]  #Win 32bitなら :x64_mingwは不要。
    gem 'bcrypt-ruby', '~> 3.0.0'          # ←いれないとcannot load such file -- bcrypt_extが発生します。
    
    #↓↓↓以下を追記します↓↓↓
    gem 'devise'
    
    

    gem을 설치합니다.
    $ bundle install
    

    ② devise 설치



    이하, 커맨드를 실행한다.
    $ 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', port: 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. You can copy Devise views (for customization) to your app by running:
    
           rails g devise:views
    
    ===============================================================================
    

    ③ devise로 모델 만들기



    그런 다음 사용할 모델을 만듭니다.
    $ rails g devise User
          invoke  active_record
          create    db/migrate/20170304053003_devise_create_users.rb
          create    app/models/user.rb
          invoke    test_unit
          create      test/models/user_test.rb
          create      test/fixtures/users.yml
          insert    app/models/user.rb
           route  devise_for :users
    

    모델이 생성되면 migrate를 실행합니다.
    $ rake db:migrate
    == 20170304053003 DeviseCreateUsers: migrating ================================
    -- create_table(:users)
       -> 0.0061s
    -- add_index(:users, :email, {:unique=>true})
       -> 0.0012s
    -- add_index(:users, :reset_password_token, {:unique=>true})
       -> 0.0009s
    == 20170304053003 DeviseCreateUsers: migrated (0.0093s) =======================
    

    모델, 컨트롤러, 뷰는 표준 탑재되어 있습니다.
    일단 확인을 위해 서버를 시작하고 움직이는지 확인해 봅시다.
    $ rails s
    

    브라우저에서 다음 URL에 액세스합니다. (내 경우는 로컬 서버입니다)
    http://localhost:3000/users/sign_up
    



    이러한 화면이 표시되면 문제 없습니다.
    단지, 지금 그대로 가입해도 작성되었습니다등의 통지나 알람은 아닙니다.

    행동을 확인하기 위해 최소한의 뷰를 만드십시오.

    ④ 뷰 작성



    컨트롤러를 만듭니다.
    $ rails g controller home index
    

    다음은 application.erb에 다음을 추가합니다.
    * 거동 확인용 링크
    * 알림 및 알림 기능

    application.html.erb.
    <!DOCTYPE html>
    <html>
    <head>
      <title>Devise</title>
      <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
      <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
      <%= csrf_meta_tags %>
    </head>
    <body>
    
      <!-- ↓↓↓これを追記↓↓↓ -->
    
      <p class="notice"><%= notice %></p>
      <p class="alert"><%= alert %></p>
    
      <% if user_signed_in? %>
        ログインユーザー: <%= current_user.email %>
        <%= link_to 'アカウント変更', edit_user_registration_path %>
        <%= link_to "ログアウト", destroy_user_session_path %>
      <% else %>
        <%= link_to "TOP画面", root_path %>
        <%= link_to "新規作成", new_user_registration_path %>
        <%= link_to "ログイン", new_user_session_path %>
      <% end %>
    
      <!-- ここまで -->
    
      <%= yield %>
    
    </body>
    </html>
    

    ⑤ 루트 만들기



    root to: "home#index"를 routes로 설정합니다.

    보충) devise_for :users는 모델을 만들 때 자동으로 추가됩니다.

    routes.rb
    Rails.application.routes.draw do
    
      devise_for :users
      root to: "home#index"
    
    end
    

    ⑥ 완성! !



    서버를 시작하고 ~bash
    $ rails s

    브라우저에서 다음 URL에 액세스합니다. (내 경우는 로컬 서버입니다)
    http://locakhost:3000
    

    이하 화면이 나오면 완성!



    다양한 동작을 확인해보십시오.
    실제로 실용으로 사용하려면 커스마이즈가 필요하다고 생각합니다.

    공부하면서 커스 마이즈도 정리해 나갑니다

    좋은 웹페이지 즐겨찾기