Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mariocc29/pokemon_api
Exemplary Ruby on Rail RestAPI aimed at assessing code quality with meticulous attention to detail.
https://github.com/mariocc29/pokemon_api
backend jbuilder jwt rails rspec rswag
Last synced: about 1 month ago
JSON representation
Exemplary Ruby on Rail RestAPI aimed at assessing code quality with meticulous attention to detail.
- Host: GitHub
- URL: https://github.com/mariocc29/pokemon_api
- Owner: mariocc29
- Created: 2024-04-01T10:15:43.000Z (10 months ago)
- Default Branch: master
- Last Pushed: 2024-04-04T21:26:41.000Z (10 months ago)
- Last Synced: 2024-11-07T03:57:14.019Z (3 months ago)
- Topics: backend, jbuilder, jwt, rails, rspec, rswag
- Language: Ruby
- Homepage:
- Size: 74.2 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Pokemon API
**Petal Solutions Inc. Test Ruby backend**### Overview
The Pokemon API is a RESTful service that allows evaluating the quality of the code.
The purpose of this application is to connect an APIRestful and get a list of pokemons.
## Requirements
* The project is developed as a REST API.
### Constraints
1. To initialize the project, use the following command:
```bash
rails new pokemon_api --api -d postgresql -T
```## Technologies
The following technologies are used in this project:
||Version|Command for checking
|-|-:|-|
|ruby|3.2.3|ruby --version|
|rails|7.1.3.2|rails --version|## Deployment
To deploy the application, follow these steps:
1. Install dependencies:
```bash
bundle install
```2. Start the server:
```bash
bin/rails serve
```## API Reference
To access the API documentation, perform the following steps:
1. Run the command:
```bash
rake rswag:specs:swaggerize
```2. Once the documentation is retrieved, go to (Pokemon API v1 Docs)[localhost:3000/api/docs]
## Running Tests
Execute the following command to run the tests:
```bash
bundle exec rspec spec/
```## Solution Approach
The solution for building the Pokemons API involves the following steps:
1. **Entity Serialization:** To ensure clean and structured responses from our API, we use JBuilder for entity serialization. This allows us to define the structure of our API responses in a clear and organized manner.
2. **Documentation Generation:** We integrate Rswag to automatically generate Swagger-compliant documentation for our API. This ensures that our API endpoints are well-documented and easy to explore. Taking advantage of the gem, it allows us to create tests at the same time as we are creating the documentation.
3. **Testing Strategy:** We employ RSpec and related gems for behavior-driven development (BDD) and testing. RSpec Rails provides a robust framework for testing Rails applications, while Rack Test allows us to test Rack applications with a simple API. Additionally, we use RSpec JSON Expectations for validating JSON responses in our tests.
4. **Code Quality:** To maintain code quality and adherence to best practices, we utilize RuboCop, a linter for Ruby code. RuboCop helps us enforce consistent coding styles and identify potential issues in our codebase.
## Installed Gems
The following gems are installed for the project:
- `byebug`: Debugging tool for Ruby.
- `dotenv-rails`: Loads environment variables from a .env file into ENV when the Rails app initializes.
- `factory_bot_rails`: Provides support for defining and using factories in RSpec tests
- `faker`: Generates fake data for testing purposes
- `rspec-json_expectations`: Integrate 'rspec/json_expectations' gem for additional JSON-related expectations in RSpec.
- `rspec-rails`: Behavior-driven development for Ruby on Rails applications
- `rswag-api`: Adds Swagger API documentation to Rails APIs using RSpec.
- `rswag-specs`: Provides tools to document APIs with RSpec-like syntax and generate Swagger JSON files.
- `rswag-ui`: Provides a UI for interacting with and testing Rails APIs documented with Swagger.
- `rubocop`: Linter for Ruby code.