Post

[ETC] Blog Hit Counter

How I set blog hit counter

동기

블로그를 운영하는데 방문자 수 집계가 안 되어서 불편을 겪고 있다.

과정

Github blog hits 키워드로 검색해보니 다양한 글들이 나왔다. 대표적인 서비스로는 HITS가 있었다. 이 서비스를 이용하기로 했다.

사용 방식을 HITS 사이트에서 옵션 지정을 통해 HTML link를 만들고 이를 블로그에 넣는 것이다.

그래서 bundle exec jekyll serve 명령어로 블로그를 테스트 해보려고 했는데… 이런 오류가 떴다.

1
2
Could not find gem 'faraday-retry (~> 2.2)' in locally installed gems.
Run `bundle install` to install missing gems.

써 있는대로 bundle install명령어를 실행했더니 또 오류가 떴다.

1
2
3
Bundler::PermissionError: There was an error while trying to
write to `/usr/lib/ruby/gems/3.2.0/cache/uri-0.13.1.gem`. It is
likely that you need to grant write permissions for that path.

그래서 sudo를 앞에 붙이고 실행했다. 그랬더니 실행되긴 하지만 이딴 경고가 뜬다.

1
2
Don't run Bundler as root. Installing your bundle as root will
break this application for all non-root users on this machine.

가볍게 무시하고 아까 시도했던 명령어 bundle exec jekyll serve를 실행했더니 다른 오류가 터졌다.

1
2
3
bundler: failed to load command: jekyll (/usr/bin/jekyll)
<internal:/usr/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require': cannot load such file -- erb (LoadError)
Did you mean?  drb

이걸 그대로 검색해보니 이 깃허브 이슈를 찾았고 pacman으로 ruby-erb를 설치하면 된다는 결론을 얻었다.

설치했고 bundle exec jekyll serve명령어로 실행하니 경고가 뜨긴 하지만 잘 되었다.

further research

  • bundle이라는 명령어가 뭔지도 모르고 그냥 써왔던 것 같아서 찾아보았다.
    • RubyGems를 다룰 때 프로젝트의 디펜던시를 관리할 떄 쓰는 도구라고 한다. 파이썬의 pip같은 느낌인 것 같다.
    • install, update, exec등과 같은 명령어들이 있고 exec의 경우에는 번들의 환경에서 명령어를 실행하는 역할을 해준다.
  • ruby-erb는 또 뭔지 찾아보았다.
    • 루비 라이브러리로 텍스트 파일에 루비코드를 임베드할 때 쓴다고 한다. 여기서 궁금한 점은 루비 라이브러리이면서 왜 bundler로 설치하지 않고 시스템의 패키지 매니저로 설치하는지 의문이 생겼다.
      • pacman같은 시스템 패키지 매니저로 설치하는 이유는 시스템 전역 설치를 하기 위해서이다.
      • bundler로 설치하는 경우는 프로젝트에서만 설치하는 것이다
      • 약간 python에서 가상환경에다가 설치하는 것과 시스템 전역에 설치하는 것의 차이인 것 같다.
This post is licensed under CC BY 4.0 by the author.