Прежде чем мы начнем, я хотел бы объяснить мотивацию этой статьи. Когда я начинал разработку с Rails, добавление даже самых простых функций в мои крошечные приложения было непростой задачей. Я представляю себе подобные сценарии при работе с другими фреймворками и проектами, и поэтому я хотел бы пройтись по функции, которую я реализовал в нескольких своих проектах, которая была «маленькой победой», и которая мотивировала меня на расширение. мои знания при создании соответствующих приложений. Это руководство предназначено для тех, кто относительно плохо знаком с рельсами, или для тех, кто хочет добавить замечательную функцию в свое существующее приложение.
Предпосылки:
- Получите хороший обзор Rails — Учебник по Rails от Майкла Хартла
- Может быть, посмотрите некоторые из них — RailsCasts
- Создайте несколько простых приложений Rails — Cloud9
RubyGems
Я полагаю, что, ознакомившись с некоторым из действительно хорошего контента, перечисленного выше, вы окажетесь в довольно хорошем месте, чтобы продолжить это руководство. Я хотел бы подчеркнуть, что это руководство будет базовым пошаговым руководством. Пожалуйста, посетите The Devise Wiki для более подробных материалов о драгоценном камне Devise. Что такое драгоценный камень? Короче говоря, гем — это модуль/библиотека, которую вы можете установить и использовать в соответствующем проекте.
Выше находится драгоценный камень (который я создал), который содержит каталог всех предприятий, зарегистрированных в городе Сан-Франциско, штат Калифорния. Если кто-то захочет использовать biz_directory в своем проекте Rails, ему просто нужно будет включить его в свой файл gem и запустить bundle install. Это даст им возможность использовать библиотеку в своем приложении! Узнайте больше о RubyGems здесь.
1. Создайте новое приложение:
Создайте новое приложение Rails и перейдите в него. Я работаю локально с Rails 5.0, OSX, терминалом и Sublime в качестве текстового редактора.
команда:rails new deviseApp
rails new deviseApp
Наше новое приложение создано:
Откройте текстовый редактор. Для возвышенных пользователей команда: subl .
subl .
Давайте очистим наш терминал с помощью команды: clear
clear
Выше мы видим структуру нашего нового приложения. Сейчас самое время запустить сервер rails и проверить, работает ли наше приложение, конечно, локально.
Откройте новую вкладку терминала и выполните команду:rails s.
rails s
(это сокращение от rails server). Если вы столкнетесь с какими-либо сбоями при запуске сервера rails, убедитесь, что вы находитесь в каталоге проекта вашего приложения, и повторите команду. Для получения дополнительной помощи проверьте эту ветку.
Это недооцененный шаг. Радуйтесь тому, что эта счастливая страница отображается, это одна из небольших проблем, которые мне пришлось преодолеть, когда я впервые начал работать с рельсами.
2. Драгоценный камень изобретения.
Давайте найдем и откроем наш Gemfile, который должен находиться в корневом каталоге нашего приложения (см. предпоследнее изображение выше). Внутри вы увидите список драгоценных камней по умолчанию, которые включены в наше приложение. Иди вперед и
добавьте: gem 'devise'в Gemfile и сохраните.
gem 'devise'
Вернувшись на первую вкладку терминала, запустите команду: bundle install, которая установит гем devise в ваше приложение.
bundle install
Затем перейдите к перезапуску сервера rails на второй вкладке терминала с помощью команды: rails restart (или CTRL + C, чтобы остановить сервер, и запустите команду rails s снова)
rails restart
3. Установка/конфигурация устройства
На первой вкладке терминала давайте настроим Devise в нашем приложении, выполнив команду:rails g devise:install (g — сокращение от generate).
rails g devise:install
Это создаст для нас два файла:
Затем откройте файл development.rb, который будет находиться по следующему пути: app/config/environments/. Здесь мы хотим настроить параметры URL по умолчанию.
Включите в файл следующую строку:
config.action_mailer.default_url_options = {хост: ‘localhost’, порт: 3000}
config.action_mailer.default_url_options = { host: ‘localhost’, port: 3000 }
Теперь сохраните.
Наконец, откройте файл application.html.erb (app/view/layouts/) и добавьте следующее над ‹%= строка yield %›:
<% if notice %> <p class=”alert alert-success”><%= notice %></p> <% end %> <% if alert %> <p class=”alert alert-danger”><%= alert %></p> <% end %>
Сохранять.
4. Настройте модель пользователя Devise для наших пользователей.
На первой вкладке терминала выполните следующие команды:
rails g devise user
rails db:migrate
Первая команда сгенерирует нашу модель пользователя.
Второе (несложное объяснение) использует миграцию в rails для упорядоченного добавления (или подготовки к добавлению) соответствующих данных, которые мы только что сгенерировали, в нашу базу данных. Для получения дополнительной информации о миграции см. эту страницу. Вы можете проверить результаты переноса, посетив файл schema.rb (app/db/).
Стоит отметить, что рельсы поставляются с поддержкой SQLite. По умолчанию Rails использует базу данных SQLite при создании нового проекта, но вы всегда можете изменить ее позже. Если вы используете OSX 10.5 или выше, как и я, у вас уже есть SQLlite. Если нет, то установить его можно по инструкции здесь.
Хорошо, наконец… перезагрузите сервер.
rails restart
5. Создание пользователя/настройка представлений
После настройки устройства в нашем приложении мы, наконец, можем создать нашего первого пользователя, чтобы он/она мог входить/выходить из нашего приложения!
Имейте в виду, что если бы вы вручную реализовали функцию аутентификации, подобную этой, вам понадобились бы представления для страницы входа, страницы выхода, страницы регистрации нового пользователя и т. д. Угадайте, что? Devise берет на себя всю тяжелую работу и настраивает соответствующие маршруты и представления.
Чтобы увидеть все новые маршруты в нашем приложении, выполните команду: rake route в первом окне терминала.
rake routes
Теперь идите и посетите: http://localhost:3000/users/sign_up
Здесь вы увидите форму регистрации, созданную для вас! Ура! …хорошо, но что, если в будущем вы захотите изменить текст или добавить цвета в свой вид? В настоящее время вы не сможете найти какие-либо новые виды устройств, перечисленные после запуска рейк-маршрутов… давайте это исправим.
Запустите команду: rails g devise:views
rails g devise:views
Теперь вы сможете увидеть все представления, сгенерированные devise, в app/views/devise/
Вот код нашей страницы регистрации (devise/registrations/new.html.erb):
Теперь давайте добавим несколько соответствующих ссылок, чтобы вошедший в систему пользователь знал, что он вошел в систему! Перейдите по адресу: app/views/layouts/application.html.erb и под тегом ‹title› добавьте:
<p class="navbar-text pull-right">
<% if user_signed_in? %>
Logged in as <strong><%= current_user.email %></strong>.
<%= link_to 'Edit profile', edit_user_registration_path, :class => 'navbar-link' %> |
<%= link_to "Logout", destroy_user_session_path, method: :delete, :class => 'navbar-link' %>
<% else %>
<%= link_to "Sign up", new_user_registration_path, :class => 'navbar-link' %> |
<%= link_to "Login", new_user_session_path, :class => 'navbar-link' %>
<% end %>
</p>
Сохранить.
Обновите страницу регистрации. Вы должны увидеть несколько новых ссылок:
Во второй части мы обсудим создание пользователей, их фактическую аутентификацию и некоторые замечательные дополнительные функции, которые поставляются вместе с Devise!
Спасибо за чтение, и мы приветствуем любые отзывы, чтобы сделать это руководство лучше. О, и подписывайтесь на меня в Twitter и Github!
Ваше здоровье,
Бриндер Даливал