4개월 만에 포트폴리오를 만지면 RSpec과 Heroku 배포에서 오류가 발생한 이야기

소개



엔지니어로 일하기 시작하고 빨리 4개월이 지났습니다.

7월에 들어가고 업무로 데이터 분석 기반의 구축에 종사하게 되어 Fluentd, Embulk, ElasticSearch 등을 공부할 필요성이 나왔기 때문에, 그들을 공부하기 위한 실험장으로서 전직 활동시에 작성했다 포트폴리오 를 이용하려고 하고, 4개월 흔들림을 건드렸습니다만, webdriver와 Heroku에서 갓트리가 빠져 버렸기 때문에 누군가의 참고가 된다고 생각해, 오랜만에 기사를 쓰기로 했습니다.

전제


  • macOS Mojave
  • 루비 2.5.0
  • Rails 5.2.2

  • 요점



    RSpec의 오류



    몇점인가 파일을 변경했으므로 테스트를 달리게 되면 피처 스펙으로 훌륭하게 전 이끼 하고 있어, 무슨 일일까라고 생각해 에러 내용을 확인한 결과, 아래와 같은 에러였습니다.
    Selenium::WebDriver::Error::SessionNotCreatedError:
    session not created: Chrome version must be between 70 and 73
    

    Chrome의 버전이 70~73 사이에 들어 있지 않다는 이야기이므로, 사용하고 있는 Chrome의 버전을 조사했는데, 75.0.3770.100이라는 것이었으므로, 이것이 원인이라고 알았습니다.



    더 살펴보면 chromedriver-helper gem은 폐지 예정이고 webdrivers gem을 사용하면 좋다고 했으므로 일단 Gemfile.lock을 삭제하고 bundle install을 실행한 후 다시 테스트를 하면 테스트가 통과하게 되었습니다. .
    (덧붙여서, 이때는 이 Gemfile.lock을 재작성하는 작업이, 후술하는 Heroku 에러에 연결되는 것 등 알 수 없었습니다.)

    Gemfile
    -   gem 'chromedriver-helper'
    +   gem 'webdrivers', '~> 3.0'
    
  • 참고 URL: session not created: Chrome version must be between

  • Heroku 배포에서 오류



    테스트가 다녔기 때문에 마지막으로 배포하고 끝이라고 생각했지만, 다시 한번 여기에서 오류가 발생했습니다.
    오류 내용은 다음과 같습니다.
    remote:        Activating bundler (2.0.2) failed:
    remote:        Could not find 'bundler' (2.0.2) required by your /tmp/build_be01b72423bcb8427f9483fee7b4337e/Gemfile.lock.
    remote:        To update to the latest version installed on your system, run `bundle update --bundler`.
    remote:        To install the missing version, run `gem install bundler:2.0.2`
    remote:        Checked in 'GEM_PATH=vendor/bundle/ruby/2.5.0', execute `gem env` for more information
    remote:
    remote:        To install the version of bundler this project requires, run `gem install bundler -v '2.0.2'`
    remote:
    remote:  !
    remote:  !     Failed to install gems via Bundler.
    remote:  !
    remote:  !     Push rejected, failed to compile Ruby app.
    remote:
    remote:  !     Push failed
    remote: Verifying deploy...
    remote:
    remote: !       Push rejected to tranquil-ravine-25204.
    

    무엇인가 Activating bundler (2.0.2) failed 라고 하는 것으로, gem install bundler 가 잘 안 된다고 하는 것입니다.

    이전에 움직였을 때의 bundler의 버전은 무엇이었을까 생각하고, 자신의 포트폴리오의 과거의 브랜치중에 있는 Gemfile.lock의 마지막 행을 보면,
    BUNDLED WITH
       2.0.1
    

    이제 Gemfile.lock을 다시 삭제하고 bundle _2.0.1_ install을 실행하여 heroku에 배포를 시도하면 해결되었습니다.

    덧붙여서, 조사해 보았더니 아무래도 bundler2.0.2는 드디어 지난달 릴리스된 것 같고, 그 근처가 영향을 주고 있는 것 같습니다.


  • 참고 URL: Heroku installs Bundler then throws error Bundler 2.0.1

  • (덤) 기타



    Faker gem도 갱신되고 있었던 것 같고, seed 데이터를 넣으려고 하면 「Faker::OnePiece 는 모르겠어」라고 분노했습니다.
    공식 문서를 보면 Faker::JapaneseMedia::OnePiece으로 할 필요가 있다는 것을 알았으므로 수정하면 해결했습니다.
  • 참고 URL: Faker::JapaneseMedia::OnePiece

  • 요약



    당연한 일입니다만, 겨우 4개월이라도 소프트웨어는 진화하고 있는 것이다라고 새롭게 느낀 체험이었습니다💡
    이 기사에서 같은 실수로 시간을 빼앗기는 사람이 줄면 다행입니다.

    좋은 웹페이지 즐겨찾기