RubyGems
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
RubyGems는 루비 프로그래밍 언어를 위한 패키지 관리 시스템으로, 2003년 11월에 개발을 시작하여 2004년 3월 14일에 공개되었다. 젬(gem)이라고 불리는 패키지들을 빌드, 업로드, 다운로드, 설치하는 데 사용되며, 젬은 코드, 문서, 젬 스펙(gemspec)으로 구성된다. 과거에는 Ruby와 RubyGems 간의 호환성 문제가 있었으나, 지속적인 개발을 통해 개선되었다. RubyGems는 젬을 통해 애플리케이션 내에서 코드를 실행하므로 보안 문제가 발생할 수 있으며, 이를 해결하기 위해 젬 암호화 서명 등의 보안 대책이 마련되었다.
더 읽어볼만한 페이지
- 자유 패키지 관리 시스템 - F-Droid
F-Droid는 2010년 키어런 걸트니엑스가 설립한 안드로이드용 자유 소프트웨어 앱 저장소로, 구글 플레이 스토어에 없는 자유/오픈 소스 소프트웨어 앱을 제공하며 감시, 검열 저항, 개인 정보 보호에 중점을 둔 클라이언트 앱, 저장소 관리 도구, 웹사이트 생성기 등의 하위 프로젝트로 구성된다. - 자유 패키지 관리 시스템 - 어드밴스트 패키징 툴
어드밴스트 패키징 툴(APT)은 데비안 계열 리눅스 배포판에서 패키지를 관리하는 도구 모음으로, 패키지 설치, 삭제, 업데이트, 업그레이드 기능을 제공하며, 특히 패키지 간 의존성을 자동 관리하는 특징을 가진다. - 루비로 작성된 자유 소프트웨어 - 루비 온 레일즈
루비 온 레일즈는 데이비드 헤이네마이어 한손이 개발한 MVC 아키텍처 기반의 웹 애플리케이션 프레임워크로, "설정보다 관례"와 "반복 금지" 원칙을 핵심 철학으로 삼아 다양한 웹 서비스 개발에 사용되며 다른 프레임워크에 영향을 주었다. - 루비로 작성된 자유 소프트웨어 - Travis CI
Travis CI는 소프트웨어 프로젝트의 지속적인 통합 및 제공을 위한 서비스로, `.travis.yml` 파일로 구성되며 GitHub와 연동하여 빌드를 실행하고 테스트 결과를 제공한다. - 공식 웹사이트에 알 수 없는 변수를 사용한 문서 - 브루클린 미술관
브루클린 미술관은 1823년 브루클린 견습생 도서관으로 시작하여 현재 약 50만 점의 소장품을 보유한 뉴욕 브루클린 소재의 미술관으로, 다양한 분야의 예술 작품을 전시하며 특히 아프리카 미술과 여성주의 미술에 대한 기여가 크다. - 공식 웹사이트에 알 수 없는 변수를 사용한 문서 - 광주지방기상청
광주지방기상청은 광주광역시와 전라남도 지역의 기상 예보, 특보, 관측, 기후 정보 제공 등의 업무를 수행하는 기상청 소속 기관으로, 1949년 광주측후소로 설치되어 1992년 광주지방기상청으로 개편되었으며, 기획운영과, 예보과, 관측과, 기후서비스과와 전주기상지청, 목포기상대를 두고 있다.
| RubyGems - [IT 관련 정보]에 관한 문서 | |
|---|---|
| 일반 정보 | |
| 이름 | RubyGems |
| 종류 | 패키지 관리자 |
| 웹사이트 | RubyGems 공식 웹사이트 |
| 개발 정보 | |
| 개발 언어 | Ruby |
| 운영 체제 | 크로스 플랫폼 |
| 라이선스 | Ruby 라이선스 |
| 릴리스 정보 | |
| 최신 버전 발표일 | }} |
| 통계 | |
| 총 젬 수 | 173,000+ |
| 총 다운로드 수 | 1090억+ |
2. 역사
RubyGems는 2003년 11월에 개발이 시작되어 2004년 3월 14일, 파이데이에 공개되었다.[4] 채드 파울러, 짐 와이리치, 데이비드 앨런 블랙, 폴 브래넌, 리처드 킬머 등이 RubyConf 2004에서 개발에 참여했다.[1]
2010년에는 젬(gem)의 기본 공개 저장소가 gems.rubyforge.org에서 rubygems.org로 이전되었고, RubyGems 개발은 GitHub로 이전되었다. RubyGems는 Ruby 1.8부터 존재했지만, Ruby 1.9까지는 표준 Ruby 배포판의 일부가 아니었다.
초기에는 RubyGems와 Ruby 버전 간의 호환성 문제가 다양하게 발생했다. 이 문제를 해결하기 위해 RubyGems는 4~6주 간격의 릴리스 일정을 도입하여 개발 속도를 가속화하고, 더 많은 버전을 출시했다.[4] 2004년부터 2010년까지 38번, 2011년부터 2016년까지 117번의 릴리스가 있었다. 2013년에는 45개의 버전이 릴리스되었는데, 이는 RubyGems 역사상 한 해에 가장 많은 릴리스 수이다.[4]
2. 1. 개발 및 초기 역사
RubyGems 개발은 2003년 11월에 시작되어 2004년 3월 14일, 파이데이에 공개되었다.[4] 채드 파울러, 짐 와이리치, 데이비드 앨런 블랙, 폴 브래넌, 리처드 킬머 등이 RubyConf 2004에서 개발에 참여했다.[1]2. 2. 저장소 이전 및 GitHub 전환
2010년, 젬(gem)의 기본 공개 저장소가 gems.rubyforge.org에서 현재 사용 중인 rubygems.org로 이전되었다.[4] 같은 해, RubyGems 개발은 GitHub로 이전되었다.2. 3. 버전 호환성 문제 및 개선
초기에는 RubyGems와 Ruby 버전 간의 호환성 문제가 다양하게 발생했다. 특히 Ruby 1.9 버전과 RubyGems 1.4.x 버전은 호환되지 않아 업데이트가 불가능했다.[5] 예를 들어, Ruby 1.9는 RubyGems 1.3.7과 함께 표준 배포판으로 제공되었지만 RubyGems 1.4.x는 Ruby 1.9와 호환되지 않았다. 이는 RubyGems 1.5.0이 2011년에 출시될 때까지, 즉 Ruby 1.9의 첫 번째 안정 릴리스 이후 2년 동안 Ruby 1.9에서 RubyGems를 업데이트하는 것이 불가능했음을 의미한다.[5] 이러한 문제를 해결하기 위해 RubyGems는 4~6주 간격의 릴리스 일정을 도입하여 개발 속도를 가속화하고, 더 많은 버전을 출시하여 호환성 문제를 개선했다.[4]3. 젬의 구조
각 젬은 이름, 버전, 플랫폼(CPU 아키텍처, 운영 체제 유형 및 버전) 정보를 포함한다.[6]
3. 1. 구성 요소
각 젬은 코드, 문서, 젬 스펙(Gemspec)으로 구성된다.[6]젬의 코드 구성은 ''gem_name''이라는 젬에 대해 다음과 같은 구조를 따른다.
gem_name/
├── bin/
│ └── gem_name
├── lib/
│ └── gem_name.rb
├── test/
│ └── test_gem_name.rb
├── README
├── Rakefile
└── gem_name.gemspec
- lib 디렉토리에는 젬의 코드가 포함되어 있다.
- test (또는 spec) 디렉토리는 테스트에 사용된다.
- Rakefile은 Rake에서 테스트를 자동화하고 코드를 생성하는 데 사용된다.
- README에는 대부분의 젬에 대한 문서인 RDOC가 포함되어 있다.
- 젬 스펙(gemspec)에는 젬 작성자, 생성 시간 및 젬이 제공하는 목적에 대한 정보가 포함되어 있다.
3. 2. 디렉토리 구조 (예시)
`gem_name`이라는 젬의 일반적인 디렉토리 구조는 다음과 같다.[6]| 디렉토리/파일 | 설명 |
|---|---|
| lib/ | 젬의 코드가 위치한다. |
| test/ (또는 spec/) | 젬 테스트 코드가 위치한다. |
| Rakefile | Rake를 사용하여 테스트 자동화 및 코드 생성을 수행하는 데 사용된다. |
| README | 젬에 대한 문서 (주로 RDOC)를 포함한다. |
| gem_name.gemspec | 젬의 메타데이터(젬 작성자, 생성 시간, 젬의 목적 등)를 담고 있다. |
젬의 디렉토리 구조 예시는 다음과 같다.
gem_name/
├── bin/
│ └── gem_name
├── lib/
│ └── gem_name.rb
├── test/
│ └── test_gem_name.rb
├── README
├── Rakefile
└── gem_name.gemspec
4. `gem` 명령어
`gem` 명령어는 젬 패키지를 빌드, 업로드, 다운로드 및 설치하는 데 사용된다. RubyGems는 apt-get과 유사하게 동작한다.[1]
4. 1. 주요 명령어
`gem` 명령은 젬 패키지를 만들거나, 올리거나, 내려받거나, 설치할 때 사용된다. RubyGems의 기능은 apt-get과 비슷하다.| 명령어 | 설명 |
|---|---|
| `gem install mygem` | `mygem` 젬을 설치한다. |
| `gem uninstall mygem` | `mygem` 젬을 제거한다. |
| `gem list --local` | 설치된 젬 목록을 표시한다. |
| `gem list --remote` | 사용 가능한 젬 목록을 표시한다. |
| `gem rdoc` | 젬의 RDoc 문서를 생성한다. |
| `gem fetch mygem` | `mygem` 젬을 다운로드한다. (설치는 하지 않음) |
| `gem search mygemsearchstring --remote` | `mygemsearchstring` 문자열을 포함하는 젬을 검색한다. |
| `gem build mygem.gemspec` | `.gemspec` 파일을 기반으로 `.gem` 파일을 생성한다. |
5. 보안 문제
젬은 애플리케이션 내에서 코드를 실행하므로 악성 젬을 설치하면 다양한 보안 문제가 발생할 수 있다. 악성 젬 제작자는 사용자의 시스템이나 서버를 손상시킬 수 있다.[7]
5. 1. 보안 대책
젬은 애플리케이션 내에서 자체 코드를 실행하므로 악성 젬 설치로 인해 다양한 보안 문제가 발생할 수 있다. 악성 젬 제작자는 사용자의 시스템이나 서버를 손상시킬 수 있다.[7]이러한 보안 위협에 대응하기 위해 여러 가지 방법이 개발되었다.
- RubyGems 버전 0.8.11부터 젬의 암호화 서명을 제공한다. 젬 인증 및 젬 설치 명령이 이 목적에 사용된다.
- X.509 및 OpenPGP와 같은 새로운 서명 모델이 제안되었으며 Ruby 전문가들 사이에서 활발히 논의되고 있다.
참조
[1]
웹사이트
174 Rubygems with Eric Hodel
https://web.archive.[...]
2018-05-09
[2]
웹사이트
RubyGems Command Reference
http://guides.rubyge[...]
2016-09-18
[3]
웹사이트
Ruby 1.9.1 changelog
https://web.archive.[...]
[4]
웹사이트
Version history of RubyGems
https://github.com/r[...]
2016-09-18
[5]
웹사이트
Ruby 1.9.1 released
https://www.ruby-lan[...]
2016-09-18
[6]
웹사이트
What is a gem? - RubyGems.org
http://guides.rubyge[...]
2016-09-18
[7]
웹사이트
Security - RubyGems Guides
https://guides.rubyg[...]
2016-09-23
[8]
웹인용
174 Rubygems with Eric Hodel
https://devchat.tv/r[...]
2022-07-08
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com