[Rails5] devise는 뭐야?

7548 단어 루비Railsdevise

소개



Rails의 공부로서 gem 주위를 만져 보는 기획입니다.
우선 시작에 유명한 곳

devise

시도해 보겠습니다.

무슨 젬이야?



간단하게 말하면 로그인 로그아웃등의 인증 기능을 간단하게 추가할 수 있는 gem이라고 한다.
백문은 겉보기에 부족하다는 것으로 우선 만져 보겠습니다.

검증 환경



다음 환경에서 실시했습니다.
[client]
・MacOS Mojave(10.14.2)
・Vagrant 2.2.2
・VBoxManage 6.0.0

[virtual]
・CentOS 7.6
・Rails 5.2.2
・ruby 2.3.1

참고까지.

devise 도입



1.gem 설치

사전에 Rails 공부용으로 작성한 프로젝트로 진행합니다.
각 MVC는 적당히 게시판 앱을 상정하여 Posts 컨트롤러 등을 생성 완료되었습니다.
(index, show, edit의 빈 페이지를 볼 수있는 정도)
$ rails g model post
$ rails g controller posts index show edit

그 전제하에 Gemfile에 다음을 추가한다.

Gemfile
# Devise
gem 'devise'

추가하면 설치.
$ bundle install

-----------
Fetching devise 4.5.0
Installing devise 4.5.0
-----------
→無事に完了。

2.devise 설치 및 설정 조정

rails generate로 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

===============================================================================

영어 모르는 사람이므로 문장을 번역 도구에 걸어보고,
대략 본
  • 1. 기본 URL을 설정하십시오
  • 2.root_url 설정
  • 3. 플래시 메시지를 보내려면 이렇게 설정하십시오
  • 4.Devise의 view는이 명령으로 만들어라

  • 라는 것 같기 때문에, 각각 조정.

    development.rb
    # Devise
    config.action_mailer.default_url_options = { host: 'localhost', port: 1234 }
    

    routes.rb
    root 'posts#index'
    

    application.html.erb
    <!DOCTYPE html>
    <html>
      <head>
        <title>掲示板アプリと見せかけたRails gemトライアル</title>
        <%= csrf_meta_tags %>
        <%= csp_meta_tag %>
    
        <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>
        <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
      </head>
    
      <body>
        <p class="notice"><%= notice %></p>
        <p class="alert"><%= alert %></p>
        <%= yield %>
      </body>
    </html>
    
    $ rails g devise:views
    

    여기까지 최저한의 설정은 아마 완료.

    3.User 모델 생성 및 마이그레이션 실행

    그런 다음 devise를 사용하여 User 모델을 생성합니다.
    $  rails g devise User
    

    그러면 사용자 모델과 마이그레이션 파일이 생성됩니다.
    또한 routes.rb에

    rotes.rb
    devise_for :users
    

    동시에 자동으로 추가되었습니다.

    생성된 User 모델이나 마이그레이션은 쭉 눈을 통해 유지하면서,
    이번은 생성되었을 때의 디폴트 그대로 진행해 보겠습니다.
    $ bundle exec rake db:migrate
    

    4.view 편집

    로그인/로그아웃 및 로그인 정보를 발행하도록
    메뉴를 추가해 봅니다. 이하를 추기.

    application.html.erb
    <header>
      <nav>
        <% if user_signed_in? %>
        <%= link_to 'ログアウト', destroy_user_session_path, method: :delete %>
        <% else %>
        <%= link_to 'サインアップ', new_user_registration_path %>
        <%= link_to 'ログイン', new_user_session_path %>
        <% end %>
      </nav>
    </header>
    

    CSS는 이번 스루.
    (진짜는 깨끗이 예쁜 것을 만들고 싶지만!)

    5. 동작 확인

    그럼 서버를 시작해 페이지를 보자.







    Foo!
    빌어 먹을 같은 기본 화면이지만,
    안전하게 표시되었습니다.

    가입, 로그인, 로그아웃 각각 동작 확인을 실시하고,
    특히 문제없이 작동하는지 확인하고 완료!

    소감



    역시 gem은 편리하다고 생각했다. (작은 느낌)
    다만 당연히 커스터마이즈 해 사용하지 않으면 무골인 물건이 되어 버리므로,
    상기까지는 어디까지나 드디어 스타트 라인에 서는 느낌인 것은 염두에.

    그래서 나중에 devise에 대해 파고들 것입니다.
    다른 gem도 만지고 싶기 때문에, 실시·게재일은 미정···.

    결론



    뭔가 눈치채는 점이 있으면,
    지적이나 어드바이스등 받을 수 있으면 매우 도움이 됩니다!

    좋은 웹페이지 즐겨찾기