1. Devise
・ Devise는 Rails로 작성된 애플리케이션에 간단한 인증 기능(로그인 등)을 만들어주는 geml(라이브러리)입니다.
・ 또한, 메일 주소 등록을 통해 메일 인증, 유저 관리 기능도 만들어 주며, Migrate 파일을 이용하여 테이블 생성도 가능합니다.
2. Devise 설치 방법
・ Ruby의 Gemfile에 아래와 같이 등록하고 저장합니다.
#Gemfile
# devise
gem 'devise'
・ 등록하셨으면, gem을 설치하겠습니다. 터미널에서 bundle install을 입력합니다.
C:\daily_schedule>bundle install
Fetching gem metadata from https://rubygems.org/.............
Fetching gem metadata from https://rubygems.org/.
Bundle complete! 17 Gemfile dependencies, 82 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
・ bundle이 install 되었다면, Devise를 설치하기 위해 rails generate devise:install 명령어를 입력합니다.
C:\daily_schedule>rails generate devise:install
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
...
・ 삐빅 에러! 는 아니고, 몇 가지 설정을 해야 한다고 합니다. 먼저 Default URL을 설정합니다.
config/environments/development.rb
#위의 경로로 가서 아래의 문구를 적당히 붙여줍니다.
# mailer setting
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
・ 다음으로 Root를 설정해줍니다. 당장 뭐 할게 아니니까 Devise로 리다이렉트 시켜줍니다.
・ 나중에는 컨트롤러로 따로 연결해주셔야 합니다~
#routes.rb에 devise_for 아래에 추가합니다.
root :to => redirect('/users/sign_up')
・ 이제 Devise를 사용하여 User라는 모델을 생성하겠습니다. (이름은 user가 아니라도 괜찮습니다!)
・ rails g devise User를 입력해보아요
C:\daily_schedule>rails g devise User
invoke active_record
create db/migrate/20190304121913_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
・ DeviseCreateUsers라는 User 테이블을 생성하는 Migration 파일이 생성되었습니다.
# frozen_string_literal: true
class DeviseCreateUsers < ActiveRecord::Migration[5.2]
def change
create_table :users do |t|
## Database authenticatable
t.string :email, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
## Recoverable
t.string :reset_password_token
t.datetime :reset_password_sent_at
## Rememberable
t.datetime :remember_created_at
## Trackable
# t.integer :sign_in_count, default: 0, null: false
# t.datetime :current_sign_in_at
# t.datetime :last_sign_in_at
# t.string :current_sign_in_ip
# t.string :last_sign_in_ip
## Confirmable
# t.string :confirmation_token
# t.datetime :confirmed_at
# t.datetime :confirmation_sent_at
# t.string :unconfirmed_email # Only if using reconfirmable
## Lockable
# t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
# t.string :unlock_token # Only if unlock strategy is :email or :both
# t.datetime :locked_at
t.timestamps null: false
end
add_index :users, :email, unique: true
add_index :users, :reset_password_token, unique: true
# add_index :users, :confirmation_token, unique: true
# add_index :users, :unlock_token, unique: true
end
end
・ 필요한 칼럼이 있다면, 직접 추가하시거나 삭제 할 수 있습니다.
・ rails db:migrate를 입력하여 데이터베이스에 반영시킵니다.
C:\daily_schedule>rails db:migrate
・ devise는 자동으로 루트를 추가해줍니다. 루트를 확인해보아요~
C:\daily_schedule>rails routes
・ 자동으로 정의되어 있는 routes 정보를 볼 수 있습니다.
Prefix Verb URI Pattern Controller#Action
new_user_session GET /users/sign_in(.:format) devise/sessions#new
user_session POST /users/sign_in(.:format) devise/sessions#create
destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy
new_user_password GET /users/password/new(.:format) devise/passwords#new
edit_user_password GET /users/password/edit(.:format) devise/passwords#edit
user_password PATCH /users/password(.:format) devise/passwords#update
PUT /users/password(.:format) devise/passwords#update
POST /users/password(.:format) devise/passwords#create
cancel_user_registration GET /users/cancel(.:format) devise/registrations#cancel
new_user_registration GET /users/sign_up(.:format) devise/registrations#new
edit_user_registration GET /users/edit(.:format) devise/registrations#edit
user_registration PATCH /users(.:format) devise/registrations#update
PUT /users(.:format) devise/registrations#update
DELETE /users(.:format) devise/registrations#destroy
POST /users(.:format) devise/registrations#create
...
・ 어떤 화면이 생성되었을까 궁금하시면, 서버를 켜고, localhost:3000을 입력!
・ Root에 리다이렉트를 설정해두었기 때문에, Sign up 화면으로 이동합니다.

・ 위와 같이 정~말 기본적인 틀이 잡혀 있는 것을 확인할 수 있습니다.
・ 하지만, 기본적으로 제공해주는 화면은 매우 간단합니다. 커스터마이징을 하고 싶다면, rails generate devise:view users 명령어를 입력하여, view 파일을 수정하시면 됩니다.
・ 그럼 끝!
'IT > RUBY' 카테고리의 다른 글
Visual Studio Code, 루비를 편리하게 사용하는 방법 (0) | 2019.04.11 |
---|---|
Ruby On Rails, HTTP 헤더 값을 얻는 방법 (0) | 2019.04.10 |
Ruby On Rails, 테이블 생성하기 (0) | 2019.04.09 |
Ruby On Rails, 서버 강제 종료 방법 (0) | 2019.04.08 |
Ruby, 루비 기본 문법 정리! (0) | 2019.04.05 |