Эта инструкция рассказывает как создать приложение на Rails API в качестве бекенда с Ember на фронтенде c нуля. Cтатья объединяет два поста на эту тему первый и второй.
Обзор
От переводчика: Оригинал статьи aviav
Создаем бекенд
На момент написания статьи Rails 5 требует Ruby версии 2.2.2 и выше, если вы используете rvm, выполните rvm install 2.2.3
, чтобы установить требуемую версию. Чтобы использовать в качестве дефолтной версии rvm use 2.2.3 --default
.
От переводчика: Для каждого проекта, я рекомендую создавать отдельный гемсет, дабы не испытывать проблем с зависимостями, это можно сделать по моей статье.
Так как Rails 5 на данный момент не зарелизен, нам нужно клонировать репозиторий на Github и генерировать приложение из исходников. Для этого выполняем команды:
От переводчика: Лично у меня, на третьей команде возникли трудности с установкой гема nokogiri, помогла команда
gem install nokogiri -v 1.6.7rc3 --pre
.
Генерируем ресурс пользователи
Мы сгенерируем очень простое приложение с помощью генератора rails (rails generate scaffold
) и выполним миграции:
Установим JSON формат сериализации данных
REST адаптер Ember требует чтобы root объекты были представлены в JSON. Это можно достигнуть установкой json адаптера вместо flatten_json сериалайзера Active Model.
Создаем новый файл инициализации config/initializers/ams_json_adapter.rb
включающий следующий текст:
Чтобы протестировать что данные представляются в нужном формате, запустим сервер с помощью команды bin/rails server
и создадим нового пользователя с помощью curl
:
Открыв в браузере localhost:3000/users
, мы можем увидеть только что созданного пользователя и то что данные отображаются в формате, который мы указали.
Установка CORS
Так как наши бекенд и фронтенд будут запускаться отдельно, нам нужно сконфигурировать Cross Origin Resource Sharing (CORS). Мы будем пробовать бекенд на localhost:3000 и фронтенд на localhost:4200. В начале, нам нужно раскомментировать rack-cors
в Gemfile, запустить bundle
и добавить следующий код в config/initializers/cors.rb:
От переводчика: здесь и далее, я советую использовать адрес 0.0.0.0 для запуска серверов вместо localhost.
Создаем фронтенд
Данная инструкция включает Ember приложение, которое использует простой ресурс Users
чтобы получать данные от Rails API и показывать их на главной странице.
Установка Ember CLI и созадние фронтенд
Для установки Ember CLI, мы используем –no-optional, так как он менее подвержен ошибкам. Используя nvm, нам не нужно запускать npm от пользователя root, это исключает проблемы прав:
Create the Ember.js app:
На момент написания статьи, даже с использованием текущей версии node.js, появляется предупреждение:
Не волнуйтесь: фикс этого ошибочного сообщения анонсирован и будет добавлен в следущих версиях Ember CLI.
Генерируем адаптер приложения
Чтобы заставить наше приложение на Ember общаться с Rails приложением, мы сгенерируем адаптер:
Теперь отредактируем файл app/adapters/application.js
:
Добавляем ресурс Users в router.js
Редактируем app/router.js
:
Генерируем модель User
Вначале,
Затем редактируем app/models/user.js
:
Генерируем маршрут Users/index
Теперь,
Редактируем app/routes/users/index.js
:
Пишем шаблон для Users/index
Редактируем app/templates/users/index.hbs
:
Тестируем приложение
Чтобы протестировать наше приложение, запустим в директории Rails приложения:
и в каталоге Ember приложения:
Теперь откроем в браузере страницу localhost:4200/users
чтобы проверить работу приложения!
Большое спасибо уходит Moritz за корректировку данного поста!