PersesTitan(페르) 기술블로그

[Ruby] 루비 Gem 배포하는 법 본문

Language/Ruby

[Ruby] 루비 Gem 배포하는 법

PersesTitan(페르) 2023. 12. 9. 14:05

1. Gem이름 정하기

아래 들어가서 만들 이름이 존재하는지 확인하시고 진행하시면 됩니다.

https://rubygems.org/

 

RubyGems.org | your community gem host

 

rubygems.org

 

2. bundler 설치

중복된 이름이 없다면 Gem을 만들 위치에서 아래 명령어를 입력하여 기본 bundler프로젝트를 만들어 줍니다.

일부 기본 설정은 원하시는 옵션을 선택하시면 됩니다.

gem install bundler
bundler gem <본인 gem 이름>

 

3. 프로젝트 세팅

위 명령어를 입력하셨다면 파일이 만들어졌을 텐데 그 중 <본인 gem 이름>.gemspec이 있을 텐데 해당 파일에서 작업해주시면 됩니다.

다음은 코드는 예제 입니다.

기본적인 것들은 자동으로 입력이 되어 있을텐데 입력되어 있지 않은 부분은 직접 입력해주시면 됩니다. 일부 옵션은 필수가 아니므로 주석처리하셔도 무방합니다.

  • 홈페이지 링크, 소스코드 링크는 해당 링크는 github에 올린뒤 해당 링크를 사용하셔도 무방합니다.
  • 라이센스 종류는 사용할 라이센트 이름을 입력해주시면 됩니다. (ex: MIT)
  • CHANGELOG 링크는 자동으로 만들어진 파일중에 CHANGELOG.md라는 파일이 있을텐데 해당 파일 링크를 업로드 하셔도 상관없습니다.
require_relative "lib/<경로>/version"

Gem::Specification.new do |spec|
  spec.name = "<본인 gem 이름>"
  spec.version = <본인 gem 모듈>::VERSION
  spec.authors = ["<소유자>"]
  spec.email = ["<이메일>"]

  spec.summary = "<설명>"
  # spec.description = "<자세한 내용>"
  spec.homepage = "<해당 gem 홈페이지>"
  spec.license = "<라이센스 종류>"
  spec.required_ruby_version = ">= 최소 버전"

  # spec.metadata["allowed_push_host"] = "<올릴 서버가 있다면 서버 url>"

  spec.metadata["homepage_uri"] = "홈페이지 링크"
  spec.metadata["source_code_uri"] = "소스코드 링크"
  spec.metadata["changelog_uri"] = "<CHANGELOG 링크>"

  spec.files = Dir.chdir(__dir__) do
    `git ls-files -z`.split("\x0").reject do |f|
      (File.expand_path(f) == __FILE__) ||
        f.start_with?(*%w[bin/ test/ spec/ features/ .git .circleci appveyor Gemfile])
    end
  end
  spec.bindir = "exe"
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
  spec.require_paths = ["lib"]
end

 

4. 코드 작성 및 버전 설정

lib파일 안에 루비코드를 작성해주시고 작성이 끝났다면 업로드를 준비하시면 됩니다.

lib파일 안에 version.rb라는 파일에 들어가보시면 VERSION이라는 변수가 존재할텐데 해당 버전값을 변경하여 적용할 버전을 설정해주시면 됩니다.

 

5.배포

배포를 하기전에 rubygems아이디가 필요합니다.

만약에 아이디가 없으시다면 아래 링크에 들어가서 아이디를 만들어줍시다.

https://rubygems.org/

 

RubyGems.org | your community gem host

 

rubygems.org

아이디를 만드셨다면 아래 명령어를 실행하여 이름-버전.gem형태의 파일을 생성해줍시다.

gem build 이름.gemspec

 

위 파일이 생성되었다면 아래 명령어를 입력하여 배포해주시면 되는데 이메일과 비밀번호를 입력하라고 뜨신다면 위에서 만든 이메일과 비밀번호를 입력해주시면 됩니다. (gem파일은 위 명령어로 만든 파일을 입력해주는 것 입니다.)

gem push 이름-버전.gem

 

마무리

maven 배포에서 고생했던거에 비해서 생각보다 쉽게 만들어져서 당황스러웠는데 나중에 이름 정하는 것도 일이 될 것 같네요...