Gemfile RSS Feed Generator

Integrate Gemfile RSS into your workflow

API Documentation

The Gemfile RSS API allows you to programmatically update your feeds as your dependencies change. This is particularly useful for CI/CD integrations, where you want to automatically sync your feed whenever your Gemfile.lock is updated.

All API endpoints require authentication using your feed's unique API key, which is displayed on your feed page.

Authentication

API requests must include your feed's API key in the request header:

X-Gemfile-RSS-Key: your-api-key-here

If you lost your API key just generate a new feed again and you'll get a new one.

Create Feed

POST /feeds

Create a new RSS feed by providing your Gemfile.lock content. This endpoint returns a feed token and API key that you can use for subsequent updates.

Request

curl -X POST https://gemfile-rss.com/feeds \
  -H "Content-Type: text/plain" \
  --data-binary @Gemfile.lock

Request Body

Send the raw contents of your Gemfile.lock as plain text in the request body.

Optional Query Parameters

name Feed name (if not provided, a random name like "Happy Gemfile RSS" will be generated)
version_filter Filter type: patch, minor, major, or all (default: patch)
ignore_prereleases Boolean: true or false (default: true)
ignore_old_releases Boolean: true or false (default: false)

Response (201 Created)

{
  "status": "ok",
  "token": "generated-feed-token",
  "api_key": "generated-api-key",
  "feed_url": "https://gemfile-rss.com/feeds/generated-feed-token.rss",
  "gem_count": 42
}

Important: Save the token and api_key from this response. You'll need them to update the feed later.

Error Responses

422 Unprocessable Content

{"error": "Invalid Gemfile.lock content"}

429 Too Many Requests

{"error": "Rate limit exceeded"}

Update Feed

PUT /feeds/{token}

Update your feed by syncing it with your current Gemfile.lock. This will add new gems, update locked versions, and remove gems that are no longer in your lockfile.

Request

curl -X PUT https://gemfile-rss.com/feeds/your-feed-token \
  -H "X-Gemfile-RSS-Key: your-api-key" \
  -H "Content-Type: text/plain" \
  --data-binary @Gemfile.lock

To update the feed name along with the Gemfile.lock:

curl -X PUT "https://gemfile-rss.com/feeds/your-feed-token?name=Production%20Feed" \
  -H "X-Gemfile-RSS-Key: your-api-key" \
  -H "Content-Type: text/plain" \
  --data-binary @Gemfile.lock

Request Body

Send the raw contents of your Gemfile.lock as plain text in the request body.

Optional Query Parameters

name Update the feed name (optional)

Response (200 OK)

{
  "status": "ok",
  "token": "your-feed-token",
  "name": "Your Feed Name",
  "gem_count": 42,
  "entries": {
    "created": 3,
    "updated": 5,
    "deleted": 2
  }
}

Error Responses

401 Unauthorized

{"error": "Unauthorized"}

404 Not Found

{"error": "Feed not found"}

422 Unprocessable Content

{"error": "Invalid Gemfile.lock content"}

Regenerate API Key

POST /feeds/{token}/regenerate_api_key

Generate a new API key for your feed. This will invalidate the previous API key immediately.

Request

curl -X POST https://gemfile-rss.com/feeds/your-feed-token/regenerate_api_key \
  -H "X-Gemfile-RSS-Key: your-current-api-key"

Response (200 OK)

{
  "status": "ok",
  "token": "your-feed-token",
  "api_key": "your-new-api-key"
}

Error Responses

401 Unauthorized

{"error": "Unauthorized"}

404 Not Found

{"error": "Feed not found"}

CI/CD Integration Examples

GitHub Actions: Update Only

name: Update Gemfile RSS Feed

on:
  push:
    paths:
      - 'Gemfile.lock'

jobs:
  update-feed:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Update RSS Feed
        run: |
          curl -X PUT https://gemfile-rss.com/feeds/${{ secrets.FEED_TOKEN }} \
            -H "X-Gemfile-RSS-Key: ${{ secrets.FEED_API_KEY }}" \
            -H "Content-Type: text/plain" \
            --data-binary @Gemfile.lock

Store your FEED_TOKEN and FEED_API_KEY as repository secrets.

GitLab CI

update-rss-feed:
  stage: deploy
  only:
    changes:
      - Gemfile.lock
  script:
    - |
      curl -X PUT https://gemfile-rss.com/feeds/$FEED_TOKEN \
        -H "X-Gemfile-RSS-Key: $FEED_API_KEY" \
        -H "Content-Type: text/plain" \
        --data-binary @Gemfile.lock

Store your FEED_TOKEN and FEED_API_KEY as CI/CD variables.

CircleCI

version: 2.1

jobs:
  update-rss-feed:
    docker:
      - image: cimg/base:stable
    steps:
      - checkout
      - run:
          name: Update Gemfile RSS Feed
          command: |
            curl -X PUT https://gemfile-rss.com/feeds/$FEED_TOKEN \
              -H "X-Gemfile-RSS-Key: $FEED_API_KEY" \
              -H "Content-Type: text/plain" \
              --data-binary @Gemfile.lock

workflows:
  version: 2
  update-feed-on-lockfile-change:
    jobs:
      - update-rss-feed:
          filters:
            branches:
              only: main

Store your FEED_TOKEN and FEED_API_KEY as environment variables in your project settings.

Rate Limits

Feed Generation (Web) 10 requests per hour
Feed Access (RSS) 1000 requests per hour
API Updates Please behave