Files
ruby-examples/docs/22_CLI(Command Line Interface) 툴.md

97 lines
2.8 KiB
Markdown

## **Ruby CLI(Command Line Interface) 툴 예제**
Ruby로 간단한 **CLI(Command Line Interface) 툴**을 만들어보자. 이 예제에서는 사용자가 입력한 도시의 **현재 날씨를 출력하는 CLI 프로그램**을 작성한다.
---
### **1. 사전 준비**
이 프로젝트에서는 `httparty` 라이브러리를 사용하여 **API 요청**을 보낼 것이다. 먼저 라이브러리를 설치하자.
```sh
gem install httparty
```
그리고 **무료 날씨 API**인 [OpenWeatherMap](https://openweathermap.org/)에서 API 키를 발급받아야 한다.
---
### **2. CLI 툴 코드**
`weather_cli.rb` 파일을 생성하고 다음 코드를 작성한다.
```ruby
#!/usr/bin/env ruby
require 'httparty'
require 'json'
API_KEY = "YOUR_OPENWEATHERMAP_API_KEY" # 여기에 API 키 입력
BASE_URL = "https://api.openweathermap.org/data/2.5/weather"
def fetch_weather(city)
url = "#{BASE_URL}?q=#{city}&appid=#{API_KEY}&units=metric"
response = HTTParty.get(url)
if response.code == 200
data = JSON.parse(response.body)
temperature = data["main"]["temp"]
description = data["weather"].first["description"]
puts "🌤️ #{city}의 현재 기온: #{temperature}°C (#{description})"
else
puts "⚠️ 도시 정보를 가져오지 못했습니다. 도시 이름을 확인하세요!"
end
end
if ARGV.empty?
puts "사용법: ruby weather_cli.rb <도시명>"
else
city = ARGV.join(" ")
fetch_weather(city)
end
```
---
### **3. 코드 설명**
1. **라이브러리 로드**
- `httparty` : API 요청을 보낼 때 사용
- `json` : JSON 응답을 파싱
2. **날씨 정보 가져오기 (`fetch_weather` 메서드)**
- `HTTParty.get(url)`을 사용하여 OpenWeatherMap API에 요청을 보낸다.
- 응답이 정상(`code == 200`)이면 JSON 데이터를 파싱하고 온도 및 날씨 정보를 출력한다.
- 오류가 발생하면 메시지를 출력한다.
3. **사용자 입력 처리 (`ARGV`)**
- 사용자가 도시명을 입력하면 `ARGV.join(" ")`으로 받아서 API 요청을 보낸다.
- 입력이 없으면 사용법을 출력한다.
---
### **4. 실행 방법**
터미널에서 실행 권한을 부여하고 실행하면 된다.
```sh
chmod +x weather_cli.rb
./weather_cli.rb Seoul
```
**출력 예시:**
```sh
🌤️ Seoul의 현재 기온: 15°C (clear sky)
```
---
### **5. 확장 가능성**
이 CLI 툴은 간단하지만 다음과 같은 기능을 추가하여 확장할 수 있다.
**다른 API 연동** (예: 뉴스, 주가, 환율 정보)
**파일 입력/출력 지원** (예: 여러 도시의 날씨를 한 번에 조회)
**사용자 옵션 추가** (`--unit metric` 같은 옵션 지원)
이제 Ruby로 CLI 프로그램을 쉽게 만들 수 있다!