첫 번째 devise ① - 소개 해보기 -
커스터마이즈도 여러가지 할 수 있어 편리할 것 같다! 하지만 조사하면 잘 다룰 때까지 어려울 것 같다. .
자신의 이해를 깊게 하기 위해서도, 몇 번에 나누어 정리해 보기로 했습니다.
명령만으로 좋은 분은 이쪽
빨리 devise 가고 싶다! ① - 입문 순서로 도입해 보자 -
환경
① 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
이하 화면이 나오면 완성!
다양한 동작을 확인해보십시오.
실제로 실용으로 사용하려면 커스마이즈가 필요하다고 생각합니다.
공부하면서 커스 마이즈도 정리해 나갑니다
Reference
이 문제에 관하여(첫 번째 devise ① - 소개 해보기 -), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/uloruson/items/ffb3d719b6d2fbea1afd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)