Gem 구조
파일과 gemspec을 알아봅니다
Gem 구조은(는) CoddyKit의 무료 Ruby Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Ruby Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Ruby Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
젬이란 무엇인가요
젬은 설치하고 버전을 관리하며 RubyGems를 통해 공유할 수 있도록 패키징된 루비 라이브러리 또는 애플리케이션입니다. 사용하는 루비 도구는 거의 모두 젬입니다.
- 젬에는 코드, 메타데이터, 의존성이 함께 들어 있습니다.
- 메타데이터는 젬 사양 파일에 저장됩니다.
bundler나gem같은 도구가 젬을 관리합니다.
골격 생성
가장 빠르게 시작하는 방법은 bundle gem mygem을 실행하는 것입니다. 이 명령은 표준 디렉터리 구조, 젬 사양 파일, 테스트 폴더, README, 라이선스를 위한 파일을 자동으로 만듭니다. 그런 다음 코드를 채우면 됩니다.
표준 구조
mygem이라는 이름의 일반적인 젬은 다음과 같은 구조입니다:
lib/mygem.rb진입 파일입니다.lib/mygem/추가 소스 파일이 들어 있습니다.lib/mygem/version.rb버전 상수가 들어 있습니다.mygem.gemspec메타데이터가 들어 있습니다.test/또는spec/테스트가 들어 있습니다.README.md와 라이선스 파일입니다.
진입 파일
lib/mygem.rb는 누군가 require 'mygem'을 실행할 때 로드됩니다. 일반적으로 버전 파일과 라이브러리의 나머지 부분을 가져오고 최상위 모듈을 정의합니다.
module Mygem
def self.greet(name)
"Hello, " + name
end
end
puts Mygem.greet("world")버전 파일
버전을 별도의 파일에 보관하면 젬 사양 파일과 코드가 모두 해당 버전을 읽을 수 있습니다. 젬의 모듈 안에 VERSION 상수를 두는 것이 관례입니다.
module Mygem
VERSION = "0.1.0"
end
puts "Current version: " + Mygem::VERSION젬 사양 파일이란 무엇인가요
젬 사양 파일은 젬의 이름, 버전, 작성자, 요약, 파일, 의존성을 설명하는 루비 파일입니다. RubyGems는 이 파일을 읽어 패키지를 만들고 게시합니다.
일반적인 루비 코드이므로 값을 계산할 수 있지만, 단순하고 선언적인 형태로 유지하십시오.
최소 젬 사양 파일
핵심 필드는 이름, 버전, 작성자, 요약, 파일입니다. 다음은 mygem.gemspec에 넣을 수 있는 일반 루비 코드의 기본 형태입니다.
require "ostruct"
spec = OpenStruct.new
spec.name = "mygem"
spec.version = "0.1.0"
spec.authors = ["Your Name"]
spec.summary = "A tiny example gem"
puts spec.name + " " + spec.version파일 나열
젬 사양 파일에는 젬에 포함할 파일을 선언해야 합니다. 많은 젬 사양 파일은 누락되는 파일이 없도록 Git에 추적되는 파일을 요청합니다:
spec.files = Dir['lib/**/*.rb'] + ['README.md']
나열된 파일만 패키지에 포함되므로 파일 하나라도 빠뜨리면 설치가 제대로 되지 않습니다.
의존성 선언
젬 사양 파일에는 두 종류의 의존성을 넣습니다:
add_dependency는 사용자가 설치해야 하는 실행 시 의존성에 사용합니다.add_development_dependency는 테스트 프레임워크처럼 개발 중에만 사용하는 도구에 사용합니다.
호환성을 유지하려면 '~> 1.2'와 같은 버전 제약 조건을 사용하십시오.
필요한 루비 버전
spec.required_ruby_version을 설정하면 너무 오래된 루비를 사용하는 사용자에게 혼란스러운 충돌 대신 명확한 오류를 보여 줄 수 있습니다. 완성도 높은 젬을 만들려면 homepage, license, metadata도 입력하십시오.
required = ">= 3.0.0"
current = RUBY_VERSION
puts "Requires Ruby " + required
puts "Running Ruby " + current젬 빌드
젬 사양 파일이 준비되면 gem build mygem.gemspec이 .gem 파일을 생성합니다. 게시하기 전에 gem install ./mygem-0.1.0.gem으로 로컬에 설치하여 테스트할 수 있습니다.
빠른 확인
젬 구조에 대한 이해도를 확인해 보십시오.
복습: 젬 구조
젬이 어떻게 구성되는지 배웠습니다:
bundle gem이 구조를 자동으로 만듭니다.lib/mygem.rb가 진입점입니다.- 버전은 별도의 파일에 저장됩니다.
- 젬 사양 파일에 메타데이터, 파일, 의존성이 들어 있습니다.
gem build가 젬을 패키징합니다.
다음으로 젬 내부의 실제 코드를 구성해 보겠습니다.
자주 묻는 질문
“Gem 구조” 강의는 무료인가요?
네 — “Gem 구조” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Ruby Academy 강의 전체를 잠금 해제할 수 있습니다. Ruby Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“Gem 구조”에서 뭘 배우나요?
파일과 gemspec을 알아봅니다 브라우저에서 직접 실행하는 실습 코드로 Ruby Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Ruby Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Ruby Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“Gem 구조” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Ruby Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Ruby Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.