gem이란 무엇인가 그② 초보자→중급자에게의 STEP14/25

9024 단어 루비Rails

gem이란 무엇인가 그②



소개



지난번 의 기사로 gem의 간단한 이미지가 솟았습니다. 간단한 gem 사용법도 배웠습니다.
그럼 이번에는 스스로 간단한 젬을 만들어 봅시다.

환경



(지금까지 개발 환경을 쓰지 않았어요...미안해요)Ruby 2.3.1bundler 1.14.6

우선 병아리를 만든다



적당히 디렉토리를 만들어 거기에 만들어 보겠습니다. bundler 를 사용하면 병아리를 명령 하나로 만들어 줍니다. gem의 이름은 여기 를 참고해 주세요. 이번은 적당하게 testgem 로 합니다.

도중에 test에서는 어느 gem 를 사용할지, MIT는 필요할까, code of conduct는 필요할까 묻기 때문에 대답합시다.
test는 rspec를 사용하고 나머지 두 가지는 필요하다고 대답했습니다. MIT와 code of conduct은 오픈 소스 라이센스와 행동 강령입니다. 만든 gem을 공개한다면 필요할까 생각합니다.

작성된 것은 아래와 같습니다.
$ ls -a
.                  .git               .rspec             CODE_OF_CONDUCT.md 
LICENSE.txt        Rakefile           lib                testgem.gemspec
..                 .gitignore         .travis.yml        Gemfile  
README.md          bin                spec
git init 도 자동으로 해주는 것 같네요. LICENSE.txt , CODE_OF_CONDUCT.md 는 방금전 답변한 것. README.md 스펙도 작성됩니다. 이전에 설명한 Gemfile도 있습니다. gem을 작성하는 경우, gem 의존성은 gemspec 라고 하는 파일에 기재해야 한다고 합니다. 그래서 이 단계에서 Gemfile 에는 gemspec 를 읽어들이도록 써 있습니다.lib 안에는 testgem.rbtestgem/version.rb 가 들어 있습니다.
testgem.rb 는 gem 코드를 정의하는 주요 파일입니다.

코드를 작성하기 전에 테스트를 작성합시다.



이전 테스트에 어떤 gem 사용? 에 대해 rspec 라고 대답했기 때문에 gemspec 에 개발 환경에서 rspec 를 사용하도록 기술되어 있습니다.
  spec.add_development_dependency "rspec", "~> 3.0"

그럼 설치합시다. 라고 생각하면, 화났다.
$ bundle install
You have one or more invalid gemspecs that need to be fixed.
The gemspec at /Users/hicom.games/works/asobiba/gemtest/testgem/testgem.gemspec is not valid. Please fix this gemspec.
The validation error was '"FIXME" or "TODO" is not a description'
gemspec 의 필수 기입 항목이 쓰여져서부터 써 준다는 것.
test이므로 적당히 묻었습니다. 아래 부분입니다.
Gem::Specification.new do |spec|
  spec.name          = "testgem"
  spec.version       = Testgem::VERSION
  spec.authors       = ["kamo"]
  spec.email         = ["[email protected]"]

  spec.summary       = %q{this gem is test. by kamo}
  spec.description   = %q{this gem is test. by kamo}
  spec.homepage      = ""
  spec.license       = "MIT"

#~~~~~~~~~~~~~~~略~~~~~~~~~~~~~~~~~~~~~~
end

이제 설치할 수 있습니다. $ bundle install 합니다.

설치가 완료되면 테스트를 작성합니다. 이번 testgem에서는 괜찮은 Hello! 가 출력되는 샘플 gem을 만들면 좋기 때문에, 테스트도 간단합니다.

testgem_spec.rb
describe Testgem::Greeting do
  it "hello" do
    expect(Testgem::Greeting.greet).to eql("Hello!")
  end
end

코드는 기본적으로 lib/testgem/하부에 놓고 그것을 testgem.rb로 읽는 형태로 합시다.

lib/testgem/greeting.rb
module Testgem
  class Greeting
    def self.greet
      "hello"
    end
  end
end

간단한 안녕하세요 코드입니다. 이후에는 testgem.rb 로 읽어들여, 그 testgem.rbspec/testgem_spec.rb 로 읽어들이도록 합니다.

testgem.rb
require 'testgem/greeting'

spec/testgem_spec.rb
require 'testgem'

이제 프로그램을 실행할 수 있습니다. 즉시 테스트해 봅시다.
$ bundle exec rspec spec

Testgem
  hello

Finished in 0.00368 seconds (files took 0.0998 seconds to load)
1 example, 0 failures

문제 없네요.

빌드하고 공개해보기



이번에 공개할 생각이 없었기 때문에 testgem이란 이름을 붙인 탓에, 이미 있는 gem과 이름이 쓰여 릴리스 할 수 없었습니다.
이하, 일단 릴리스의 순서입니다.
먼저 만든 gem은 github의 리포지토리에 올려주세요.
그런 다음 RrubyGems.org 에서 계정을 만들고 htps : / / 루 바이 게 ms. 오 rg / p 로후 ぇ / 에아 t 에서 API 키를 가져옵니다.
아래 명령을 두드려 로그인합니다.curl -u お名前 https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials; chmod 0600 ~/.gem/credentials젬을 빌드
$ rake build
gemの名前 0.1.1 built to pkg/testgem-0.1.1.gem.

출시합니다.
$ rake release

이것으로 완료. gem install gemの名前 로 설치할 수 있습니다.

요약



언젠가 자작의 gem 만들고 싶네요. 최선을 다하겠습니다.

참고로 했어



【Ruby】 gem을 만드는 방법부터 공개까지
htps : // 코 m / 9 사코 6 / ms / 72994b8b1c00 a f4 61

guides.rubygems.org
htps : // 굳이 s. 하는 굵은 ms. 오 rg / 마케 - r- w wen-m /

Developing a RubyGem using Bundler
htps : // / d dr. 이오 / v1.

gemspec과 Gemfile의 역할을 명확하게 유지하십시오.
ht tp // //사네마 t. 기주 b. 이오 / 아 r ゔ ぇ s / ㅁ g 쓰 룬. 코 mt ran s ぁ ち ん s 33 /

Ruby의 네임스페이스와 렉시컬 스코프에 대해 간략하게 설명하겠습니다.
htps : // 이 m / D 도마 / ms / 에c889d0c3b4b94c67120

gem에 게시했습니다.
htps : // 코 m / Shiukaido / MS / 53571 에 507 에 2 아베 592

좋은 웹페이지 즐겨찾기