# Ruby

> Proxyman の Automatic Setup で Ruby スクリプトとサーバーの HTTP/HTTPS 通信をキャプチャします。http、net/http、net/https、httparty、faraday に対応しています。

## 1. 新しい自動設定（v4.7.0 以降）✅ {#1-new-automatic-solution-v470-or-later-}

Proxyman v4.7.0 以降では、ワンクリックで Ruby の HTTP/HTTPS 通信をキャプチャできます。

* ワンクリックで設定できます。HTTP Proxy の設定や、自己署名証明書の手動での信頼設定は必要ありません。
* 多くの Ruby ライブラリに対応しています：http、net/http、net/https、httparty、faraday

### 使い方： {#how-to-use}

1. Proxyman を開き、**Setup** メニュー → **Automatic Setup** を選択します
2. **Open New Terminal** をクリックします
3. 必要に応じて、AppleScript の権限確認を許可します
4. 新しいターミナルウィンドウが開きます。そこで Ruby のバックエンドサーバーを起動するか、スクリプトを実行してください。Proxyman がすべての通信を自動的にキャプチャします。
5. 完了 ✅

![Open New Terminal ボタンがあり、net/http などの Ruby ライブラリをキャプチャする Proxyman Automatic Setup のウィンドウ](https://proxyman.com/docs/assets/proxyman-automatic-setup-window.jpg)

_Ruby からの通信をキャプチャ_

## 2. 旧方式（非推奨）{#2-old-solution-not-recommended}

### 1. Ruby に HTTP Proxy を設定する {#1-set-http-proxy-to-ruby}

`http_proxy` 環境変数が設定されている場合、Net::HTTP は自動的にそのプロキシを使用します。 

そのため、次のように記述できます：

```bash
ENV['http_proxy'] = 'http://127.0.0.1:9090' # your http://address:port here
```

この場合、Net::HTTP はデフォルトですべてのリクエストにこのプロキシを使用します。

参考：[https://stackoverflow.com/questions/15792999/how-to-set-a-proxy-in-rubys-net-http](https://stackoverflow.com/questions/15792999/how-to-set-a-proxy-in-rubys-net-http)

### 2. Ruby に Proxyman 証明書をインストールする {#2-install-proxyman-certificate-on-ruby}

初期状態では、macOS の **Ruby** は Proxyman の自己署名証明書を信頼しない場合があります。そのため、HTTPS 通信をインターセプトすると SSL エラーが発生することがあります。

`SSL_CERT_FILE` 環境変数を使って、Ruby に Proxyman 証明書を使用するよう指定できます。

```bash
$ env SSL_CERT_FILE=~/.proxyman/proxyman-ca.pem ruby my_script.rb
```

> **備考:** 新しいバージョンの Proxyman では、証明書は `~/Library/Application Support/com.proxyman.NSProxy/app-data/proxyman-ca.pem` に保存されます。お使いの Mac に `~/.proxyman/proxyman-ca.pem` が存在しない場合は、代わりにこのパスを使用するか、Certificate メニュー → Export → Root Certificate as PEM から証明書をエクスポートしてください。

## 詳細情報 {#learn-more}

* [Ruby（net::http や http gem）のスクリプトから HTTP/HTTPS リクエストをキャプチャする](https://proxyman.com/posts/2023-05-09-Capture-HTTP-HTTPS-Request-Response-From-Ruby-Net-HTTP-library)
* [Proxyman で Ruby の HTTP/HTTPS 通信をキャプチャする](https://proxyman.com/ruby)（Proxyman 公式サイト）
