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

2.8 KiB

Ruby CLI(Command Line Interface) 툴 예제

Ruby로 간단한 CLI(Command Line Interface) 툴을 만들어보자. 이 예제에서는 사용자가 입력한 도시의 현재 날씨를 출력하는 CLI 프로그램을 작성한다.


1. 사전 준비

이 프로젝트에서는 httparty 라이브러리를 사용하여 API 요청을 보낼 것이다. 먼저 라이브러리를 설치하자.

gem install httparty

그리고 무료 날씨 APIOpenWeatherMap에서 API 키를 발급받아야 한다.


2. CLI 툴 코드

weather_cli.rb 파일을 생성하고 다음 코드를 작성한다.

#!/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. 실행 방법

터미널에서 실행 권한을 부여하고 실행하면 된다.

chmod +x weather_cli.rb
./weather_cli.rb Seoul

출력 예시:

🌤️  Seoul의 현재 기온: 15°C (clear sky)

5. 확장 가능성

이 CLI 툴은 간단하지만 다음과 같은 기능을 추가하여 확장할 수 있다.

다른 API 연동 (예: 뉴스, 주가, 환율 정보)
파일 입력/출력 지원 (예: 여러 도시의 날씨를 한 번에 조회)
사용자 옵션 추가 (--unit metric 같은 옵션 지원)

이제 Ruby로 CLI 프로그램을 쉽게 만들 수 있다!