Прежде чем мы начнем, я хотел бы объяснить мотивацию этой статьи. Когда я начинал разработку с Rails, добавление даже самых простых функций в мои крошечные приложения было непростой задачей. Я представляю себе подобные сценарии при работе с другими фреймворками и проектами, и поэтому я хотел бы пройтись по функции, которую я реализовал в нескольких своих проектах, которая была «маленькой победой», и которая мотивировала меня на расширение. мои знания при создании соответствующих приложений. Это руководство предназначено для тех, кто относительно плохо знаком с рельсами, или для тех, кто хочет добавить замечательную функцию в свое существующее приложение.

Предпосылки:

  1. Получите хороший обзор RailsУчебник по Rails от Майкла Хартла
  2. Может быть, посмотрите некоторые из нихRailsCasts
  3. Создайте несколько простых приложений RailsCloud9

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!

Ваше здоровье,

Бриндер Даливал