jekyll 4.x에서 jekyll-extract-element 0.0.7, nokogiri 버전 오류 해결 방법입니다

ToC on/off

개요

Jekyll로 정적인 웹사이트를 만들면서 Ruby 3.xJekyll 4.x 버전으로 업그레이드 할 때 테마(템플릿)에 따라 일부 호환되지 않는 gem에서 오류가 발생해 고생하는 경우가 많습니다. 그 중에서 오늘은 nokogiri gem을 사용하는 jekyll-extract-element 0.0.7 버전 문제를 해결하고 0.0.8 버전을 사용하는 방법을 정리해 보겠습니다.

환경

  • 테마: Base Theme by CloudCannon
  • Ruby: 3.0.3 p157 (2021-11-24 revision 3fb7d2cadc) [x64-mingw32]
  • jekyll: 4.2.2
  • 편집기: Visual Studio Code

Base 테마 소개

CloudCannon에서 제작한 Base 테마는 Tutorial이나 고객센터, 기술문서 등에 사용하면 좋은 테마입니다.

jekyll Base Theme by CloudCannon 스크린샷

오류 상황

jekyll-extract-element는 HTML에서 특정 Element를 추출해주는 gem으로 Base 테마에서는 기본적으로 0.0.7 버전을 사용합니다.
이 상태에서 Ruby 3.0, Jekyll 4.2.2를 사용하고 bundle exec jekyll serve 명령어를 실행하면 다음과 같은 오류가 발생합니다.

Gemfile 설정

group :jekyll_plugins do
	gem 'jekyll-extract-element', '0.0.7'
end
jekyll 4.x에서 jekyll-extract-element 0.0.7, nokogiri 버전 오류 해결 방법

오류 메시지

bundle exec jekyll serve 명령어를 실행해보면 jekyll-extract-element gem은 jekyll 3.x 버전에서만 실행된다는 메시지를 확인할 수 있습니다.

PS E:\jekyll\base-jekyll-template-main\base-jekyll-template-main> bundle exec jekyll serve
Bundler could not find compatible versions for gem "jekyll":
  In Gemfile:
    jekyll (~> 4.2.1)

    jekyll-extract-element (~> 0.0.7) was resolved to 0.0.7, which depends on
      jekyll (~> 3.3)
jekyll 4.x에서 jekyll-extract-element 0.0.7, nokogiri 버전 오류 해결 방법

RubyGem 최신 버전

RubyGem 공식 사이트 (https://rubygems.org/gems/jekyll-extract-element/)에서 jekyll-extract-element 버전을 확인해보면 0.0.7이 최신 버전이라는 것을 확인할 수 있습니다. 그렇다면 해결 방법이 없는 것일까 고민하다 여기저기 검색을 해보았습니다.

jekyll 4.x에서 jekyll-extract-element 0.0.7, nokogiri 버전 오류 해결 방법

jekyll-extract-element ver 0.0.8

google에서 검색을 하다 Base 테마를 만든 CloudCannon에서 0.0.8 버전을 GitHub에 공개한 것을 발견했습니다.

jekyll 4.x에서 jekyll-extract-element 0.0.7, nokogiri 버전 오류 해결 방법

다운로드

jekyll-extract-element 0.0.8 버전을 다운로드 받고 압축을 풀어보면 다음과 같이 핵심 파일인 jekyll-extract-element.gemspec을 확인할 수 있습니다.

jekyll 4.x에서 jekyll-extract-element 0.0.7, nokogiri 버전 오류 해결 방법

gem build 하기

gem 파일 소스 즉, gamspec 파일을 이용해서 gem 파일을 만드는 명령어는 다음과 같습니다.
그런데 결과를 보면 build에는 성공하지만 dependency 관련해서 추천하는 버전이 아니라는 메시지가 나타납니다.

gem build jekyll-extract-element.gemspec
jekyll 4.x에서 jekyll-extract-element 0.0.7, nokogiri 버전 오류 해결 방법

gem 소스 수정

물론 이상태로 설치해서 사용해도 문제는 없지만 혹시 모르는 오류 메시지를 없애기 위해 gem 파일 소스를 일부 수정해보겠습니다.
jekyll-extract-element.gemspec 파일을 열어서 소스 중에서 오류 메시지가 나타났던 jekyll, nokogiri, rake 이 세가지의 버전을 현재 사용 중인 버전으로 수정합니다.

Gem::Specification.new do |s|
  s.add_dependency "jekyll", "~> 4.2.1"
  s.add_dependency "nokogiri", "~> 1.13.3"

  s.add_development_dependency "rake", "~> 13.0.6"
end
jekyll 4.x에서 jekyll-extract-element 0.0.7, nokogiri 버전 오류 해결 방법

gem 최종 build

수정을 마쳤으면 다시 build를 해봅니다. 이제는 오류 없이 빌드가 완료되고 jekyll-extract-element-0.0.8.gem 파일이 생성된 것을 확인할 수 있습니다.

gem build jekyll-extract-element.gemspec
jekyll 4.x에서 jekyll-extract-element 0.0.7, nokogiri 버전 오류 해결 방법

gem 설치

이제 gem을 설치합니다. 문제 없이 잘 설치됩니다.

gem install jekyll-extract-element-0.0.8.gem
jekyll 4.x에서 jekyll-extract-element 0.0.7, nokogiri 버전 오류 해결 방법

최종 확인

이제 Base 테마 폴더로 이동해서 Gemfile을 수정하고 bundle exec jekyll serve 명령어로 사이트를 띄웁니다.
문제 없이 잘 실행되는 것을 확인할 수 있습니다.

group :jekyll_plugins do
	gem 'jekyll-extract-element', '0.0.8'
end
jekyll 4.x에서 jekyll-extract-element 0.0.7, nokogiri 버전 오류 해결 방법

로컬 gem 파일 위치 수동 지정

혹시 gem 파일 설치가 잘 안되거나 할 경우 build된 gem 파일을 위치를 아래와 같이 Gemfile에서 수동으로 지정할 수 있습니다.

group :jekyll_plugins do  
  gem 'jekyll-extract-element', '0.0.8', path: "E:/jekyll/jekyll-extract-element-master/jekyll-extract-element-master"
end

참고 URL

  1. Base Theme by CloudCannon
  2. RubyGem 공식 사이트
  3. CloudCannon GitHub