Secure Static IP for Ruby HTTPS using Curb & QuotaGuard Shield

Learn how to securely route Ruby HTTP traffic through a QuotaGuard Shield proxy using the Curb library.

Prerequisites

Ruby installed.

Instructions

Run example
QUOTAGUARDSHIELD_URL=... ruby net-http.rb

Be sure to set QUOTAGUARDSHIELD_URL to your Connection URL from the QuotaGuard Dashboard.

Test in Docker
docker build -t qg-shield-ruby-curb-example .
docker run -e QUOTAGUARDSHIELD_URL=... qg-shield-ruby-curb-example

Code Samples

Ruby.rb
# app.rb
require 'curb'

proxy_url = ENV.fetch("QUOTAGUARDSHIELD_URL") do
  abort "Please set QUOTAGUARDSHIELD_URL environment variable."
end

begin
  curl = Curl::Easy.new("https://ip.quotaguard.com")
  
  # Split out the URI parts if needed
  require 'uri'
  parsed = URI.parse(proxy_url)
  
  # If it's an HTTP-based proxy:
  curl.proxy_url      = "#{parsed.scheme}://#{parsed.host}:#{parsed.port}"
  curl.proxy_tunnel   = true  # Tells libcurl to use CONNECT for HTTPS
  curl.proxypwd       = "#{parsed.user}:#{parsed.password}" if parsed.user && parsed.password

  curl.perform
  puts "Status: #{curl.response_code}"
  puts "Body:\n#{curl.body_str}"
rescue => e
  warn "Request failed: #{e.message}"
  raise
end
Docker File
# Dockerfile
FROM ruby:latest

WORKDIR /app

# Install curb gem (it has native extensions, so build-essential is needed)
RUN apt-get update && apt-get install -y build-essential libcurl4-openssl-dev \
  && gem install curb --no-document

COPY app.rb /app/app.rb

CMD ["ruby", "app.rb"]