-
-
Notifications
You must be signed in to change notification settings - Fork 280
Add Ruby + PostgreSQL quickstart guide #772
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,284 @@ | ||||||
| --- | ||||||
| id: samples-ruby | ||||||
| title: Sample Books API | ||||||
| sidebar_label: Ruby + Postgres | ||||||
| description: The following sample app showcases how to use the Ruby (Sinatra) framework and the Keploy Platform. | ||||||
| tags: | ||||||
| - ruby | ||||||
| - quickstart | ||||||
| - samples | ||||||
| - examples | ||||||
| - tutorial | ||||||
| - sinatra | ||||||
| - postgresql | ||||||
| - ruby-framework | ||||||
| keyword: | ||||||
| - Sinatra Framework | ||||||
| - PostgreSQL | ||||||
| - Ruby | ||||||
| - API Test generator | ||||||
| - Auto case generation | ||||||
| --- | ||||||
|
|
||||||
| import InstallReminder from '@site/src/components/InstallReminder'; | ||||||
| import SectionDivider from '@site/src/components/SectionDivider'; | ||||||
|
Comment on lines
+23
to
+24
|
||||||
|
|
||||||
| ## Introduction | ||||||
|
|
||||||
| πͺ Dive into the world of Books CRUD API and see how seamlessly Keploy integrates with [Ruby (Sinatra)](http://sinatrarb.com/) and [PostgreSQL](https://www.postgresql.org/). Buckle up, it's gonna be a fun ride! π’ | ||||||
|
|
||||||
| <InstallReminder /> | ||||||
|
|
||||||
| ## Prerequisites | ||||||
|
|
||||||
| ### For Local Setup: | ||||||
| - Ruby 3.2 or higher | ||||||
| - PostgreSQL 15 or higher | ||||||
| - Bundler (`gem install bundler`) | ||||||
|
|
||||||
| ### For Docker Setup: | ||||||
| - Docker (20.10 or higher) | ||||||
| - Docker Compose (v2.0 or higher) | ||||||
|
|
||||||
| <SectionDivider /> | ||||||
|
|
||||||
| ## Using Docker Compose π³ | ||||||
|
|
||||||
| We will be using Docker compose to run the application as well as PostgreSQL on Docker container. | ||||||
|
|
||||||
| ### Clone the Application π§ͺ | ||||||
|
|
||||||
| ```bash | ||||||
| git clone https://github.com/Nsanjayboruds/keploy-ruby-postgresql-quickstart.git && cd keploy-ruby-postgresql-quickstart | ||||||
| ``` | ||||||
|
|
||||||
| ### Build and Start Services | ||||||
|
|
||||||
| ```bash | ||||||
| docker-compose up --build | ||||||
| ``` | ||||||
|
|
||||||
| This will: | ||||||
| - Start a PostgreSQL container | ||||||
| - Build and start the Ruby application container | ||||||
| - Initialize the database with sample data | ||||||
| - Expose the API on port 8000 | ||||||
|
|
||||||
| ### Verify the Setup | ||||||
|
|
||||||
| ```bash | ||||||
| curl http://localhost:8000/health | ||||||
| ``` | ||||||
|
|
||||||
| Expected Response: | ||||||
| ```json | ||||||
| {"status":"healthy","service":"Ruby Books API"} | ||||||
| ``` | ||||||
|
|
||||||
| ### Lights, Camera, Record! π₯ | ||||||
|
|
||||||
| Capture the test-cases- | ||||||
|
|
||||||
| ```bash | ||||||
| keploy record -c "docker-compose up" --container-name "ruby-books-app" | ||||||
| ``` | ||||||
|
|
||||||
| π₯**Make some API calls**. Postman, Hoppscotch or even curl - take your pick! | ||||||
|
|
||||||
| ### Generate Testcases | ||||||
|
|
||||||
| To generate testcases we just need to **make some API calls.** | ||||||
|
|
||||||
| #### 1. Get All Books | ||||||
|
|
||||||
| ```bash | ||||||
| curl http://localhost:8000/books | ||||||
| ``` | ||||||
|
|
||||||
| #### 2. Get a Specific Book | ||||||
|
|
||||||
| ```bash | ||||||
| curl http://localhost:8000/books/1 | ||||||
| ``` | ||||||
|
|
||||||
| #### 3. Create a New Book | ||||||
|
|
||||||
| ```bash | ||||||
| curl -X POST http://localhost:8000/books \ | ||||||
| -H "Content-Type: application/json" \ | ||||||
| -d '{ | ||||||
| "title": "The Hobbit", | ||||||
| "author": "J.R.R. Tolkien", | ||||||
| "isbn": "9780547928227", | ||||||
| "published_year": 1937 | ||||||
| }' | ||||||
| ``` | ||||||
|
|
||||||
| #### 4. Update a Book | ||||||
|
|
||||||
| ```bash | ||||||
| curl -X PUT http://localhost:8000/books/1 \ | ||||||
| -H "Content-Type: application/json" \ | ||||||
| -d '{ | ||||||
| "title": "The Great Gatsby (Updated)", | ||||||
| "author": "F. Scott Fitzgerald", | ||||||
| "isbn": "9780743273565", | ||||||
| "published_year": 1925 | ||||||
| }' | ||||||
| ``` | ||||||
|
|
||||||
| #### 5. Delete a Book | ||||||
|
|
||||||
| ```bash | ||||||
| curl -X DELETE http://localhost:8000/books/1 | ||||||
| ``` | ||||||
|
|
||||||
| And once you are done, you can stop the recording and give yourself a pat on the back! With that simple spell, you've conjured up test cases with mocks! Explore the **keploy** directory and you'll discover your handiwork in the `tests` directory and `mocks.yml`. | ||||||
|
|
||||||
| Want to see if everything works as expected? | ||||||
|
|
||||||
| ### Run Tests π§ͺ | ||||||
|
|
||||||
| Time to put things to the test π§ͺ | ||||||
|
|
||||||
| ```bash | ||||||
| keploy test -c "docker-compose up" --container-name "ruby-books-app" --delay 10 | ||||||
| ``` | ||||||
|
|
||||||
| > The `--delay` flag? Oh, that's just giving your app a little breather (in seconds) before the test cases come knocking. | ||||||
|
|
||||||
| Final thoughts? Dive deeper! Try different API calls, tweak the DB response in the `mocks.yml`, or fiddle with the request or response in `test-x.yml`. Run the tests again and see the magic unfold!β¨π©βπ»π¨βπ»β¨ | ||||||
|
|
||||||
| <SectionDivider /> | ||||||
|
|
||||||
| ## Running App Locally on Linux/WSL π§ | ||||||
|
|
||||||
| We'll be running our sample application locally on Linux/WSL. There are 2 ways you can run this application: | ||||||
|
||||||
| We'll be running our sample application locally on Linux/WSL. There are 2 ways you can run this application: | |
| We'll be running our sample application locally on Linux/WSL. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The ProductTier component is missing. Almost all other quickstart guides in the codebase include this component to indicate which Keploy tiers and offerings support the quickstart. For consistency with other guides, this should be added after the imports and before the Introduction section. Based on the pattern seen in other open-source compatible quickstarts (like C#, Django, FastAPI), it should likely be:
<ProductTier tiers="Open Source, Enterprise" offerings="Self-Hosted, Dedicated" />