jekyll 4.x jekyll-extract-element, nokogiri 버전 오류 해결 방법
개요
Jekyll로 정적인 웹사이트를 만들면서 Ruby 3.x와 Jekyll 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이나 고객센터, 기술문서 등에 사용하면 좋은 테마입니다.
- Base Theme by CloudCannon: https://github.com/CloudCannon/base-jekyll-template
오류 상황
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
오류 메시지
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)
RubyGem 최신 버전
RubyGem 공식 사이트 (https://rubygems.org/gems/jekyll-extract-element/)에서 jekyll-extract-element 버전을 확인해보면 0.0.7이 최신 버전이라는 것을 확인할 수 있습니다. 그렇다면 해결 방법이 없는 것일까 고민하다 여기저기 검색을 해보았습니다.
jekyll-extract-element ver 0.0.8
google에서 검색을 하다 Base 테마를 만든 CloudCannon에서 0.0.8 버전을 GitHub에 공개한 것을 발견했습니다.
- CloudCannon GitHub: https://github.com/CloudCannon/jekyll-extract-element
다운로드
jekyll-extract-element 0.0.8 버전을 다운로드 받고 압축을 풀어보면 다음과 같이 핵심 파일인 jekyll-extract-element.gemspec
을 확인할 수 있습니다.
gem build 하기
gem 파일 소스 즉, gamspec 파일을 이용해서 gem 파일을 만드는 명령어는 다음과 같습니다.
그런데 결과를 보면 build에는 성공하지만 dependency 관련해서 추천하는 버전이 아니라는 메시지가 나타납니다.
gem build jekyll-extract-element.gemspec
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
gem 최종 build
수정을 마쳤으면 다시 build를 해봅니다. 이제는 오류 없이 빌드가 완료되고 jekyll-extract-element-0.0.8.gem
파일이 생성된 것을 확인할 수 있습니다.
gem build jekyll-extract-element.gemspec
gem 설치
이제 gem을 설치합니다. 문제 없이 잘 설치됩니다.
gem install jekyll-extract-element-0.0.8.gem
최종 확인
이제 Base 테마 폴더로 이동해서 Gemfile을 수정하고 bundle exec jekyll serve 명령어로 사이트를 띄웁니다.
문제 없이 잘 실행되는 것을 확인할 수 있습니다.
group :jekyll_plugins do
gem 'jekyll-extract-element', '0.0.8'
end
실행 디렉터리 오류: 간혹 gem 설치 후에 base 테마 디렉터리로 이동한 후에 bundle exec jekyll serve 명령어를 실행해야 하는데 gem build, install 후에 저처럼 jekyll-extract-element 디렉터리에서 그대로 실행하고는 왜 안될까 고민하는 일이 없도록 꼭 디렉터리를 이동하시기 바랍니다. ^^
로컬 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
-
Base Theme by CloudCannon
-
RubyGem 공식 사이트
-
CloudCannon GitHub
문서 업데이트 내역
날짜 | 내용 |
---|---|
2022-04-09 | 문서 최초 생성 |