Этот проект направлен на:
Сводка спецификации:
Вот его мобильное приложение Counter
Установите Ruby Version 2.3.0 и установите ее на свой менеджер Environment Ruby (подробнее здесь).
Установите Postgres и запустите сервер PostgreSQL на переднем плане (подробнее здесь).
Клонировать хранилище и войти внутрь:
git clone git://github.com/jordifierro/rails-api-base.git --origin rails-api-base your-project-name
cd your-project-name
./bin/rename_project YourProjectName
./bin/remove_notes
./bin/create_psql_user yourprojectname
./bin/setup
rspec
./bin/reset_git https://github.com/yourusername/your-project-name.git
Вот и все, теперь вы можете начать разработку собственного приложения!
(При разработке на LocalHost запустите Mailcatcher, чтобы получить подтверждение пользователя и восстановить электронные письма с паролем)
gem install mailcatcher
mailcatcher
Само приложение почти пустое, оно только направлено на то, чтобы предоставить некоторые основные модули, реализовать структуры с некоторыми шаблонами и дать пример кода. Вот спецификации:
Приложение включает в себя только модули, связанные с Rails-API, поэтому оно более тонкое, чем обычное приложение, но не имеет некоторых функций (которые можно добавить вручную, если это необходимо). Архитектура API следует за Greails и HTTP RESTFUL GOOM, такими как:
Маршруты конечной точки и структура кода готовы добавить новые версии API. Версия выбирается через headers['Accept'] с такими значениями, как application/vnd.railsapibase.v1 для использования первой версии.
Для предоставления примера приложения это был разработан код для управления notes (например, представление с рукописными бумагами), составленное title и content . Таким образом, приложение имеет маршруты примечаний, контроллер, модель и RSPEC для работы с этими примечаниями.
Его уникальная цель - стать руководством о том, как добавить новый код, поэтому он будет удален сценарием оболочки bin/remove_notes .
Чтобы структурировать глобальные функции контроллера API, различные модули были реализованы как ActiveSupport :: Congewer и тестируются с использованием поддельных контроллеров. Эти модули включены в Apicontroller, который является контроллером отца остальных контроллеров (проверьте этот пост). На данный момент есть 4 модуля: аутентификация, обработка ошибок, интернационализация и истечение версии (проверьте это другое). Code Climate - это сервис, используемый для проверки того, что это и все остальные кода следует за хорошими практиками (вы должны активировать его для своего проекта, чтобы использовать его).
Codeclimate также может работать локально с помощью его CLI.
Почти каждый API требует пользователей, сессий и аутентификации, так что это самая важная особенность этого приложения. Выбранное решение использует has_secure_password и has_secure_token с пользовательской реализацией для обработки сеансов и пользователей:
Токен возвращается при входе в систему пользователей, и он должен быть установлен на headers['Authorization'] на более поздних запросах для их аутентификации. Больше информации об этом (этот пост)
Чтобы проверить, можно ли использовать версию, существует модуль, который фильтровал это перед каждым вызовом метода. Он вернет ошибку, если версия истек, а также есть конечная точка, чтобы проверить дату истечения с помощью клиента (например, чтобы предупредить пользователя обновить приложение). Если вы хотите установить дату истечения срока действия для конкретной версии, просто установите целочисленную форматированную на string для ENV['LAST_EXPIRED_VERSION'] . Все версии, равные или ниже указанного, отправят сообщение об обновлении обновления сообщением об обновлении, когда их спросят. Система для установки предупреждения для некоторых версий такая же, используя ENV['LAST_WARNED_VERSION'] чтобы установить более высокую версию, которую вы хотите предупредить. Больше информации об этом (этот пост)
Приложение переводится на английский язык (язык по умолчанию) и испанский (как пример перевода). Существует простой модуль, который берет локаль из request.env['HTTP_ACCEPT_LANGUAGE'] (который может быть установлен через заголовок Accept-Languange ) и устанавливает его в систему для автоматического возврата соответствующего перевода. Больше информации об этом (этот пост)
Чтобы проверить, что все необходимые переводы устанавливаются для конкретного языка, расстройте следующую строку в файл spec_helper.rb , поместите там целевой язык и запустите rspec :
I18n.default_locale = :es
Чтобы добавить некоторый контроль над клиентами API, есть секретная система проверки ключей API, которую можно активировать, чтобы убедиться, что это действительный клиент, который создает пользователя. Чтобы активировать эту службу, просто установите значение для ENV['SECRET_API_KEY'] . Секретный ключ API должен быть отправлен в headers['Authorization'] при вызове создать новый метод пользователя.
Этот проект был разработан с использованием процесса TDD, и весь код тестируется с использованием RSPEC, следующие рекомендации по передовым методам, определенные на BetterSpecs.org. Важно держать это таким образом. Код климат проверяет, что тесты охватывают все случаи кода. Travis-Ci-это непрерывная система интеграции, которая запускает тесты каждый раз, когда производится толчок. Если вы хотите использовать эти услуги, вы должны включить их на их веб -сайтах. Если вы этого не сделаете, просто удалите файл .travis.yml .
Чтобы избежать бремени вручную изменять код для подготовки файлов для запуска нового проекта, были реализованы некоторые сценарии. Вы можете найти их в bin/ папке (они самостоятельно разрушены после использования).
Они были проанализированы Shellcheck.
Чтобы избежать проблем развертывания, база данных Postgres была настроена с самого начала как система базы данных для тестирования и разработки. Тот факт, что Heroku использует его в качестве своей системы DB по умолчанию, также считался.
Проект использует Rails 5.1.4 (модуль API) и Ruby 2.3.0 и намеревается быть в курсе, используя услуги Gemnasium. Вы должны активировать эту услугу для своего репо, если вы хотите его использовать.
Чтобы повысить элегантность и читаемость кода, это руководство по рубиновому стилю было использовано в качестве ссылки. Rubocop Gem - это анализатор Ruby Static Code, основанный на этом руководстве по стилю. Просто беги:
gem install rubocop
rubocop
Помните, что файл .rubocop.yml определяет конфигурацию (удалите ее, если не используется).
Ответы отформатируются с использованием драгоценного камня ActiveModelserializers. Сериализаторы отвечают за форматирование выходного json и являются хорошим способом отделить этот слой от моделей и контроллеров. Кроме того, они версируются как контроллеры (например: Api::V1::Serializer ), потому что они непосредственно мешают выводу каждой версии API. Это поможет нам поддерживать контракты на старые версии.
Вот его мобильное приложение Counter
Я не опытный разработчик Rails, поэтому все предложения и вклад более чем приветствуются!
rspec
rubocop
К сожалению, участников пока нет.
http://jordifierro.com