[Rails5] devise는 뭐야?
소개
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
===============================================================================
영어 모르는 사람이므로 문장을 번역 도구에 걸어보고,
대략 본
[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
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
===============================================================================
영어 모르는 사람이므로 문장을 번역 도구에 걸어보고,
대략 본
라는 것 같기 때문에, 각각 조정.
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도 만지고 싶기 때문에, 실시·게재일은 미정···.
결론
뭔가 눈치채는 점이 있으면,
지적이나 어드바이스등 받을 수 있으면 매우 도움이 됩니다!
Reference
이 문제에 관하여([Rails5] devise는 뭐야?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/betti/items/12c0d8a47a08bd28c64d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
뭔가 눈치채는 점이 있으면,
지적이나 어드바이스등 받을 수 있으면 매우 도움이 됩니다!
Reference
이 문제에 관하여([Rails5] devise는 뭐야?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/betti/items/12c0d8a47a08bd28c64d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)