Estos proyectos tienen como objetivo ser:
Resumen de especificaciones:
Aquí está su aplicación móvil del cliente contraparte que consume datos de esta API -> Android -Base
Instale Ruby versión 2.3.0 y configúrelo con su Ruby Environment Manager (más información aquí).
Instale Postgres e inicie el servidor PostgreSQL en primer plano (más información aquí).
Clonar el repositorio y entrar en él:
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
Eso es todo, ¡ahora puedes comenzar a desarrollar tu propia aplicación!
(Mientras se desarrolla en localhost, inicie MailCatcher para recibir la confirmación del usuario y recuperar los correos electrónicos de contraseña)
gem install mailcatcher
mailcatcher
La aplicación en sí está casi vacía, solo tiene como objetivo proporcionar algunos módulos básicos, implementar las estructuras con algunos patrones y dar código de muestra. Aquí están las especificaciones:
La aplicación incluye solo los módulos relacionados con Rails-API, por lo que es más delgado que una aplicación normal, pero carece de algunas características (que se pueden agregar manualmente si es necesario). La arquitectura de la API sigue las rieles y las prácticas de buenas buenas buenas como:
Las rutas de punto final y la estructura del código están listas para agregar nuevas versiones de API. La versión se elige a través de headers['Accept'] con valores como application/vnd.railsapibase.v1 para usar la primera versión.
Para proporcionar el código de muestra de la aplicación, se ha desarrollado código para administrar notes (como la representación de notas de papel escritas a mano), compuesta por un title y un content . Por lo tanto, la aplicación tiene las rutas de notas, el controlador, el modelo y los RSPEC para trabajar con esas notas.
Su propósito único es ser una guía de cómo agregar un nuevo código, por lo que será eliminado por el script bin/remove_notes shell.
Para estructurar las características del controlador global de la API, se han implementado diferentes módulos como ActiveSupport :: preocupación y probado utilizando controladores falsos. Esos módulos se incluyen en el apicontrolador, que es el controlador padre del resto de los controladores (verifique esta publicación). En este momento hay 4 módulos: autenticación, manejo de errores, internacionalización y vencimiento de la versión (verifique este otro). El clima de código es el servicio utilizado para verificar que este y todo el resto del código siga buenas prácticas (debe activarlo para que su proyecto lo use).
CodeClimate también se puede ejecutar localmente con su CLI.
Casi todas las API requieren usuarios, sesiones y autenticaciones, por lo que esta es la característica más importante de esta aplicación. La solución elegida utiliza has_secure_password y has_secure_token con una implementación personalizada para manejar sesiones y usuarios:
Se devuelve un token cuando los usuarios inician sesión y debe establecerse en headers['Authorization'] en solicitudes posteriores para autenticarlos. Más información sobre eso (esta publicación)
Para verificar si aún se puede usar una versión, hay un módulo que filtra eso antes de cada llamada de método. Devolverá un error si la versión ha expirado y también hay un punto final para verificar la fecha de vencimiento del cliente (por ejemplo: para advertir al usuario que actualice la aplicación). Si desea establecer la fecha de vencimiento en una versión concreta, simplemente establezca un entero formateado en cadena a ENV['LAST_EXPIRED_VERSION'] . Todas las versiones iguales o debajo de la especificada enviarán un mensaje de error de actualización cuando se solicite. El sistema para establecer una advertencia en algunas versiones es el mismo, usando ENV['LAST_WARNED_VERSION'] para establecer la versión más alta que desea advertir. Más información sobre eso (esta publicación)
La aplicación se traduce al inglés (idioma predeterminado) y español (solo como ejemplo de traducción). Hay un módulo simple que toma la configuración local de request.env['HTTP_ACCEPT_LANGUAGE'] (que se puede configurar a través del encabezado Accept-Languange ) y lo establece en el sistema para devolver automáticamente la traducción apropiada. Más información sobre eso (esta publicación)
Para probar que todas las traducciones necesarias se configuran para un idioma específico, descompone la siguiente línea al archivo spec_helper.rb , coloque allí el idioma de destino y ejecute rspec :
I18n.default_locale = :es
Para agregar algo de control sobre los clientes de API, existe un sistema de verificación de clave API secreto que se puede activar para asegurarse de que sea un cliente válido que crea al usuario. Para activar este servicio, simplemente establezca un valor en ENV['SECRET_API_KEY'] . La clave de API secreta debe enviarse en headers['Authorization'] cuando llame a crear un nuevo método de usuario.
Este proyecto se ha desarrollado utilizando el proceso TDD y todo el código se prueba utilizando RSPEC, siguiendo las pautas de las mejores prácticas definidas en BetterSpecs.org. Es importante mantenerlo así. El código climático verifica que las pruebas cubren todos los casos de código. Travis-Ci es un sistema de integración continua que ejecuta las pruebas cada vez que se realiza un empuje. Si desea utilizar estos servicios, debe habilitarlos en sus sitios web. Si no lo hace, simplemente elimine el archivo .travis.yml .
Para evitar la carga de modificar manualmente el código para preparar los archivos para iniciar un nuevo proyecto, se han implementado algunos scripts. Puede encontrarlos dentro de bin/ carpeta (se destruyen después de su uso).
Han sido analizados por Shellcheck.
Para evitar problemas de implementación, la base de datos de Postgres se ha configurado desde el principio como el sistema de base de datos para las pruebas y el desarrollo. El hecho de que Heroku lo use como su sistema DB predeterminado también se ha considerado.
El proyecto utiliza Rails 5.1.4 (módulo API) y Ruby 2.3.0 y tiene la intención de mantenerse actualizado utilizando el servicio Gemnasium. Debe activar este servicio para su repositorio si desea usarlo.
Para aumentar la elegancia y la legibilidad del código, esta guía de estilo Ruby se ha utilizado como referencia. Rubocop Gem es un analizador de código estático Ruby basado en esa guía de estilo. Solo corre:
gem install rubocop
rubocop
Recuerde que el archivo .rubocop.yml define la configuración (elimínela si no se usa).
Las respuestas se formatean utilizando la gema activemodelserializadores. Los serializadores son responsables de formatear la salida JSON, y son una buena manera de desacoplar esta capa de modelos y controladores. Además, están versionados como controladores (por ejemplo: Api::V1::Serializer ) porque interfieren directamente con la salida de cada versión de API. Esto nos ayudará a mantener contratos de versión antiguos.
Aquí está su aplicación móvil del cliente contraparte que consume datos de esta API -> Android -Base
No soy un desarrollador experimentado de Rails, ¡así que todas las sugerencias y contribuciones son más que bienvenidas!
rspec
rubocop
Desafortunadamente, todavía no hay contribuyentes.
http://jordifierro.com