Computer >> 컴퓨터 >  >> 프로그램 작성 >> Ruby

RubyGem의 내부

아이들을 모으고 할아버지에게 삶이 고단하고 보석을 설치하는 것은 두통을 유발하고 머리를 잡아당기고 이빨을 갈리는 시련이었던 옛날 방식을 이야기하게 하십시오.

제가 Ruby를 막 시작할 때 Bundler가 없었고 gem을 설치해야 했습니다. Rails에서 이것은 rake gems:install 실행을 의미했습니다. 명령이 오류 없이 통과할 때까지 백만 번, 도중에 발생하는 버그를 수정했습니다. 오늘은 보석이 무엇이고 어떻게 작동하는지 살펴본 후 구식 방식으로 보석을 만들어 보겠습니다.

보석, 무엇입니까?

RubyGems는 다른 사람들이 작성한 기능으로 자신의 코드를 확장하는 쉬운 방법입니다. 예를 들어, 자체 인증/권한 부여 코드를 작성하는 대신 Devise를 사용할 수 있으며, 업로드된 이미지의 크기를 조정하려면 CarrierWave를 사용할 수 있습니다. 이를 통해 다른 사람들과 공유할 수 있는 재사용 가능한 코드를 작성할 수 있습니다.

하지만 어떻게 작동합니까?

가장 기본적인 형태의 gem은 코드와 <name>.gemspec을 포함하는 압축된 디렉토리에 불과합니다. 파일. 이 .gemspec 파일에는 이름, 로드할 파일 및 종속성과 같은 gem에 대한 메타데이터가 포함되어 있습니다.

gem install 또는 bundle 명령은 소스에서 zip 파일을 다운로드하고 하드 드라이브에 압축을 풉니다. bundle info <gem name>을(를) 실행하여 gem이 있는 위치를 찾을 수 있습니다. 또는 bundle open <gem name>을 실행하여 gem 디렉토리를 직접 엽니다. .

애플리케이션에 gem을 로드하기 위해 Rubygems는 require Kernel의 함수 수업. 먼저 디스크에서 파일을 읽으려고 시도하고 작동하지 않으면 시스템의 각 gem에 있는 파일을 해석하려고 시도합니다. gem에서 파일을 찾으면 로드 경로에 추가하여 gem을 "활성화"합니다.

Bundler를 사용하면 setup 동안 로드 경로에 각각의 특정 gem을 추가합니다. 전화. 이것은 Rubygems가 경로를 해결하려고 하는 번거로움을 덜어줍니다. 또한 Ruby가 Gemfile(.lock)에서 선택한 것과 다른 버전의 gem을 로드하는 것을 방지합니다.

어떻게 만들 수 있나요?

자신의 gem을 만드는 가장 쉬운 방법은 Bundler를 사용하여 gem scaffold를 생성하는 것입니다. 여기에는 적절한 디렉토리 구조, 라이선스, 행동 강령 및 gem에 대한 테스트 환경이 포함됩니다.

그러나 오늘 우리는 코드와 gemspec을 포함하는 파일 두 개만으로 최소한의 gem을 만들 것입니다. 메타데이터가 포함된 파일입니다. 우리의 gem은 호출되면 사용자를 맞이합니다. 먼저 gem의 디렉토리를 생성해 보겠습니다.

mkdir howdy
cd howdy

이 디렉토리에서 lib 코드와 howdy.gemspec이 포함될 폴더 메타데이터를 포함할 파일입니다. 다음과 같아야 합니다.

tree
.
├── howdy.gemspec
└── lib
    └── howdy.rb

Howdy gem에는 다음 코드가 있습니다.

lib/howdy.rb

class Howdy
  def greet
    "howdy!"
  end
end

최소한의 howdy.gemspec file은 버전, 작성자 등에 대한 정보를 포함합니다. 또한 gem을 빌드할 때 보관할 파일을 지정합니다. 이렇게 하면 gem 사용자가 gem 코드를 실행하는 데 필요하지 않은 테스트 및 기타 파일과 같은 불필요한 파일을 다운로드하지 않아도 됩니다.

Gem::Specification.new do |spec|
  spec.name          = "howdy"
  spec.version       = "0.0.1"
  spec.authors       = ["Robert Beekman"]
  spec.email         = ["robert@example.com"]
 
  spec.summary       = %(Greets the user)
  spec.description   = %(Howdy is a gem that greets the user when called)
  spec.license       = "MIT"
 
  spec.files         = ["lib/howdy.rb"]
end

gem을 빌드하려면 gem build howdy.gemspec을 사용할 수 있습니다. 명령. howdy-0.0.1.gem을 생성합니다. 코드가 포함된 파일입니다. 다른 사람들이 gem을 사용할 수 있도록 하려면 gem publish를 사용하여 rubygems.org에 게시할 수 있습니다. 명령.

요약

다음은 매우 기본적인 gem을 만들고 게시하는 데 필요한 단계입니다. 우리가 보석의 고고학과 보석을 만드는 구식 방식을 재미있게 즐겼기를 바랍니다. 앞서 언급했듯이 이것은 교육 목적을 위한 것입니다. 오늘날의 세계에서 보석 발판을 생성하려면 번들러를 사용하는 것이 좋습니다.

안심하십시오, 젊은이들이여! 아이디어, 질문 또는 의견이 있으면 주저하지 말고 알려주십시오.