skip to Main Content

I have a Rails import job that run as a cron job setup through the whenever gem. It was running correctly until I recently updated the app. Now we are seeing the following Error in the logs when the cron job tries to run. If I run the task manually it runs the import correctly.

/usr/local/lib/ruby/2.6.0/bundler/spec_set.rb:91:in `block in materialize': Could not find rake-13.0.1 in any of the sources (Bundler::GemNotFound)
    from /usr/local/lib/ruby/2.6.0/bundler/spec_set.rb:85:in `map!'
    from /usr/local/lib/ruby/2.6.0/bundler/spec_set.rb:85:in `materialize'
    from /usr/local/lib/ruby/2.6.0/bundler/definition.rb:170:in `specs'
    from /usr/local/lib/ruby/2.6.0/bundler/definition.rb:237:in `specs_for'
    from /usr/local/lib/ruby/2.6.0/bundler/definition.rb:226:in `requested_specs'
    from /usr/local/lib/ruby/2.6.0/bundler/runtime.rb:108:in `block in definition_method'
    from /usr/local/lib/ruby/2.6.0/bundler/runtime.rb:20:in `setup'
    from /usr/local/lib/ruby/2.6.0/bundler.rb:107:in `setup'
    from /usr/local/lib/ruby/2.6.0/bundler/setup.rb:20:in `<top (required)>'
    from /usr/local/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:130:in `require'
    from /usr/local/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:130:in `rescue in require'
    from /usr/local/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:34:in `require'
    from /usr/local/bundle/gems/spring-2.1.0/lib/spring/commands.rb:33:in `<module:Spring>'
    from /usr/local/bundle/gems/spring-2.1.0/lib/spring/commands.rb:4:in `<top (required)>'
    from /usr/local/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    from /usr/local/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    from /usr/local/bundle/gems/spring-2.1.0/lib/spring/server.rb:9:in `<top (required)>'
    from /usr/local/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    from /usr/local/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    from /usr/local/bundle/gems/spring-2.1.0/lib/spring/client/server.rb:9:in `call'
    from /usr/local/bundle/gems/spring-2.1.0/lib/spring/client/command.rb:7:in `call'
    from /usr/local/bundle/gems/spring-2.1.0/lib/spring/client.rb:30:in `run'
    from /usr/local/bundle/gems/spring-2.1.0/bin/spring:49:in `<main>'
/usr/local/lib/ruby/2.6.0/rubygems/dependency.rb:313:in `to_specs': Could not find 'bundler' () required by `$BUNDLER_VERSION`. (Gem::MissingSpecVersionError)
To update to the latest version installed on your system, run `bundle update --bundler`.
To install the missing version, run `gem install bundler:`
Checked in 'GEM_PATH=/home/sotldirectory', execute `gem env` for more information
    from /usr/local/lib/ruby/2.6.0/rubygems/dependency.rb:323:in `to_spec'
    from /usr/local/lib/ruby/2.6.0/rubygems/core_ext/kernel_gem.rb:65:in `gem'
    from /usr/local/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:42:in `require'
    from /usr/local/bundle/gems/spring-2.1.0/lib/spring/commands.rb:33:in `<module:Spring>'
    from /usr/local/bundle/gems/spring-2.1.0/lib/spring/commands.rb:4:in `<top (required)>'
    from /usr/local/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    from /usr/local/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    from /usr/local/bundle/gems/spring-2.1.0/lib/spring/server.rb:9:in `<top (required)>'
    from /usr/local/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    from /usr/local/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    from /usr/local/bundle/gems/spring-2.1.0/lib/spring/client/server.rb:9:in `call'
    from /usr/local/bundle/gems/spring-2.1.0/lib/spring/client/command.rb:7:in `call'
    from /usr/local/bundle/gems/spring-2.1.0/lib/spring/client.rb:30:in `run'
    from /usr/local/bundle/gems/spring-2.1.0/bin/spring:49:in `<main>'

I am seeing two rake versions inside the docker container

*** LOCAL GEMS ***

rake (13.0.1, 12.3.2)

The output from running bundle env

## Environment

Bundler       1.17.2
  Platforms   ruby, x86_64-linux
Ruby          2.6.5p114 (2019-10-01 revision 67812) [x86_64-linux]
  Full Path   /usr/local/bin/ruby
  Config Dir  /usr/local/etc
RubyGems      3.0.3
  Gem Home    /usr/local/bundle
  Gem Path    /root/.gem/ruby/2.6.0:/usr/local/lib/ruby/gems/2.6.0:/usr/local/bundle
  User Path   /root/.gem/ruby/2.6.0
  Bin Dir     /usr/local/bundle/bin
Tools         
  Git         2.20.1
  RVM         not installed
  rbenv       not installed
  chruby      not installed

Bundler Build Metadata

Built At          2018-12-19
Git SHA           3fc4de72b
Released Version  false

Bundler settings

retry
  Set for your local app (/usr/local/bundle/config): 3
jobs
  Set for your local app (/usr/local/bundle/config): 4
app_config
  Set via BUNDLE_APP_CONFIG: "/usr/local/bundle"
silence_root_warning
  Set via BUNDLE_SILENCE_ROOT_WARNING: true

### Gemfile

ruby
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '2.6.5'

# Rails Specific 
# =====================================================================================

# Rails, MySQL, Puma
gem 'rails', '~> 5.2.0'
gem 'mysql2', '>= 0.4.4', '< 0.6.0'
gem 'puma', '~> 4.3'

# Rails Dependencies
gem 'sassc-rails'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.2'
gem 'turbolinks', '~> 5'
gem 'jbuilder', '~> 2.5'

# loads rails apps faster 
gem 'bootsnap', '>= 1.1.0', require: false

# Application Specific 
# =====================================================================================

# validators
gem 'validate_url'

# security
gem 'sanitize'

# interface items
gem 'carrierwave', '~> 1.2', '>= 1.2.3'
gem 'mini_magick'
gem 'multi-select-rails'

# cas client
gem 'rack-cas', '~> 0.16.0'

# managing cron jobs
gem 'whenever', require: false

# frontend
gem 'normalize-scss'
gem 'font-awesome-sass'
gem "non-stupid-digest-assets" # generates assets without fingerprint for 404 and 500 errors. 

# searching / indexing for speeds / pagination for elegance
# gem 'kaminari'
gem 'elasticsearch-model'
gem 'elasticsearch-rails'

# Test Suite
# =====================================================================================
group :test do
  gem 'rspec-rails'
  gem 'shoulda'
  gem 'shoulda-matchers'
  gem 'database_cleaner'
  gem 'simplecov', '~> 0.10', '< 0.18'
  gem 'simplecov-console'
  gem 'capybara', '>= 2.15', '< 4.0'
  gem 'selenium-webdriver', '~> 3.14'
  gem 'elasticsearch-extensions'
  gem 'executables'
  gem 'rspec_junit_formatter'
end

# Development / Test Items (Primarily debugging)
# =====================================================================================
group :development, :test do
  gem 'faker'
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] # from rails new
  gem 'pry'
  gem 'pry-rails'
  gem 'factory_bot_rails'
  gem 'webmock'
end

group :development do
  gem 'web-console', '>= 3.3.0'
  gem 'listen', '>= 3.0.5', '< 3.2'
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
  # performance helper
  gem 'bullet' # helps to eliminate N+1 Queries 
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

### Gemfile.lock

GEM
  remote: https://rubygems.org/
  specs:
    actioncable (5.2.4.1)
      actionpack (= 5.2.4.1)
      nio4r (~> 2.0)
      websocket-driver (>= 0.6.1)
    actionmailer (5.2.4.1)
      actionpack (= 5.2.4.1)
      actionview (= 5.2.4.1)
      activejob (= 5.2.4.1)
      mail (~> 2.5, >= 2.5.4)
      rails-dom-testing (~> 2.0)
    actionpack (5.2.4.1)
      actionview (= 5.2.4.1)
      activesupport (= 5.2.4.1)
      rack (~> 2.0, >= 2.0.8)
      rack-test (>= 0.6.3)
      rails-dom-testing (~> 2.0)
      rails-html-sanitizer (~> 1.0, >= 1.0.2)
    actionview (5.2.4.1)
      activesupport (= 5.2.4.1)
      builder (~> 3.1)
      erubi (~> 1.4)
      rails-dom-testing (~> 2.0)
      rails-html-sanitizer (~> 1.0, >= 1.0.3)
    activejob (5.2.4.1)
      activesupport (= 5.2.4.1)
      globalid (>= 0.3.6)
    activemodel (5.2.4.1)
      activesupport (= 5.2.4.1)
    activerecord (5.2.4.1)
      activemodel (= 5.2.4.1)
      activesupport (= 5.2.4.1)
      arel (>= 9.0)
    activestorage (5.2.4.1)
      actionpack (= 5.2.4.1)
      activerecord (= 5.2.4.1)
      marcel (~> 0.3.1)
    activesupport (5.2.4.1)
      concurrent-ruby (~> 1.0, >= 1.0.2)
      i18n (>= 0.7, < 2)
      minitest (~> 5.1)
      tzinfo (~> 1.1)
    addressable (2.7.0)
      public_suffix (>= 2.0.2, < 5.0)
    ansi (1.5.0)
    arel (9.0.0)
    bindex (0.8.1)
    bootsnap (1.4.6)
      msgpack (~> 1.0)
    builder (3.2.4)
    bullet (6.1.0)
      activesupport (>= 3.0.0)
      uniform_notifier (~> 1.11)
    byebug (11.1.1)
    capybara (3.31.0)
      addressable
      mini_mime (>= 0.1.3)
      nokogiri (~> 1.8)
      rack (>= 1.6.0)
      rack-test (>= 0.6.3)
      regexp_parser (~> 1.5)
      xpath (~> 3.2)
    carrierwave (1.3.1)
      activemodel (>= 4.0.0)
      activesupport (>= 4.0.0)
      mime-types (>= 1.16)
    childprocess (3.0.0)
    chronic (0.10.2)
    coderay (1.1.2)
    coffee-rails (4.2.2)
      coffee-script (>= 2.2.0)
      railties (>= 4.0.0)
    coffee-script (2.4.1)
      coffee-script-source
      execjs
    coffee-script-source (1.12.2)
    concurrent-ruby (1.1.6)
    crack (0.4.3)
      safe_yaml (~> 1.0.0)
    crass (1.0.6)
    database_cleaner (1.8.3)
    diff-lcs (1.3)
    docile (1.3.2)
    elasticsearch (7.5.0)
      elasticsearch-api (= 7.5.0)
      elasticsearch-transport (= 7.5.0)
    elasticsearch-api (7.5.0)
      multi_json
    elasticsearch-extensions (0.0.31)
      ansi
      elasticsearch
    elasticsearch-model (7.0.0)
      activesupport (> 3)
      elasticsearch (> 1)
      hashie
    elasticsearch-rails (7.0.0)
    elasticsearch-transport (7.5.0)
      faraday (>= 0.14, < 1)
      multi_json
    erubi (1.9.0)
    execjs (2.7.0)
    executables (0.1.0)
    factory_bot (5.1.1)
      activesupport (>= 4.2.0)
    factory_bot_rails (5.1.1)
      factory_bot (~> 5.1.0)
      railties (>= 4.2.0)
    faker (2.10.2)
      i18n (>= 1.6, < 2)
    faraday (0.17.3)
      multipart-post (>= 1.2, < 3)
    ffi (1.12.2)
    font-awesome-sass (5.12.0)
      sassc (>= 1.11)
    globalid (0.4.2)
      activesupport (>= 4.2.0)
    hashdiff (1.0.1)
    hashie (4.1.0)
    i18n (1.8.2)
      concurrent-ruby (~> 1.0)
    jbuilder (2.10.0)
      activesupport (>= 5.0.0)
    json (2.3.0)
    listen (3.1.5)
      rb-fsevent (~> 0.9, >= 0.9.4)
      rb-inotify (~> 0.9, >= 0.9.7)
      ruby_dep (~> 1.2)
    loofah (2.4.0)
      crass (~> 1.0.2)
      nokogiri (>= 1.5.9)
    mail (2.7.1)
      mini_mime (>= 0.1.1)
    marcel (0.3.3)
      mimemagic (~> 0.3.2)
    method_source (0.9.2)
    mime-types (3.3.1)
      mime-types-data (~> 3.2015)
    mime-types-data (3.2019.1009)
    mimemagic (0.3.4)
    mini_magick (4.10.1)
    mini_mime (1.0.2)
    mini_portile2 (2.4.0)
    minitest (5.14.0)
    msgpack (1.3.3)
    multi-select-rails (0.9.12)
      railties (>= 3.0)
    multi_json (1.14.1)
    multipart-post (2.1.1)
    mysql2 (0.5.3)
    nio4r (2.5.2)
    nokogiri (1.10.9)
      mini_portile2 (~> 2.4.0)
    nokogumbo (2.0.2)
      nokogiri (~> 1.8, >= 1.8.4)
    non-stupid-digest-assets (1.0.9)
      sprockets (>= 2.0)
    normalize-scss (7.0.1)
      sass (~> 3.3)
    pry (0.12.2)
      coderay (~> 1.1.0)
      method_source (~> 0.9.0)
    pry-rails (0.3.9)
      pry (>= 0.10.4)
    public_suffix (4.0.3)
    puma (4.3.3)
      nio4r (~> 2.0)
    rack (2.2.2)
    rack-cas (0.16.1)
      addressable (~> 2.3)
      nokogiri (~> 1.5)
      rack (>= 1.3)
    rack-test (1.1.0)
      rack (>= 1.0, < 3)
    rails (5.2.4.1)
      actioncable (= 5.2.4.1)
      actionmailer (= 5.2.4.1)
      actionpack (= 5.2.4.1)
      actionview (= 5.2.4.1)
      activejob (= 5.2.4.1)
      activemodel (= 5.2.4.1)
      activerecord (= 5.2.4.1)
      activestorage (= 5.2.4.1)
      activesupport (= 5.2.4.1)
      bundler (>= 1.3.0)
      railties (= 5.2.4.1)
      sprockets-rails (>= 2.0.0)
    rails-dom-testing (2.0.3)
      activesupport (>= 4.2.0)
      nokogiri (>= 1.6)
    rails-html-sanitizer (1.3.0)
      loofah (~> 2.3)
    railties (5.2.4.1)
      actionpack (= 5.2.4.1)
      activesupport (= 5.2.4.1)
      method_source
      rake (>= 0.8.7)
      thor (>= 0.19.0, < 2.0)
    rake (13.0.1)
    rb-fsevent (0.10.3)
    rb-inotify (0.10.1)
      ffi (~> 1.0)
    regexp_parser (1.7.0)
    rspec-core (3.9.1)
      rspec-support (~> 3.9.1)
    rspec-expectations (3.9.0)
      diff-lcs (>= 1.2.0, < 2.0)
      rspec-support (~> 3.9.0)
    rspec-mocks (3.9.1)
      diff-lcs (>= 1.2.0, < 2.0)
      rspec-support (~> 3.9.0)
    rspec-rails (3.9.0)
      actionpack (>= 3.0)
      activesupport (>= 3.0)
      railties (>= 3.0)
      rspec-core (~> 3.9.0)
      rspec-expectations (~> 3.9.0)
      rspec-mocks (~> 3.9.0)
      rspec-support (~> 3.9.0)
    rspec-support (3.9.2)
    rspec_junit_formatter (0.4.1)
      rspec-core (>= 2, < 4, != 2.12.0)
    ruby_dep (1.5.0)
    rubyzip (2.2.0)
    safe_yaml (1.0.5)
    sanitize (5.1.0)
      crass (~> 1.0.2)
      nokogiri (>= 1.8.0)
      nokogumbo (~> 2.0)
    sass (3.7.4)
      sass-listen (~> 4.0.0)
    sass-listen (4.0.0)
      rb-fsevent (~> 0.9, >= 0.9.4)
      rb-inotify (~> 0.9, >= 0.9.7)
    sassc (2.2.1)
      ffi (~> 1.9)
    sassc-rails (2.1.2)
      railties (>= 4.0.0)
      sassc (>= 2.0)
      sprockets (> 3.0)
      sprockets-rails
      tilt
    selenium-webdriver (3.142.7)
      childprocess (>= 0.5, < 4.0)
      rubyzip (>= 1.2.2)
    shoulda (2.11.3)
    shoulda-matchers (4.3.0)
      activesupport (>= 4.2.0)
    simplecov (0.17.1)
      docile (~> 1.1)
      json (>= 1.8, < 3)
      simplecov-html (~> 0.10.0)
    simplecov-console (0.7.2)
      ansi
      simplecov
      terminal-table
    simplecov-html (0.10.2)
    spring (2.1.0)
    spring-watcher-listen (2.0.1)
      listen (>= 2.7, < 4.0)
      spring (>= 1.2, < 3.0)
    sprockets (4.0.0)
      concurrent-ruby (~> 1.0)
      rack (> 1, < 3)
    sprockets-rails (3.2.1)
      actionpack (>= 4.0)
      activesupport (>= 4.0)
      sprockets (>= 3.0.0)
    terminal-table (1.8.0)
      unicode-display_width (~> 1.1, >= 1.1.1)
    thor (1.0.1)
    thread_safe (0.3.6)
    tilt (2.0.10)
    turbolinks (5.2.1)
      turbolinks-source (~> 5.2)
    turbolinks-source (5.2.0)
    tzinfo (1.2.6)
      thread_safe (~> 0.1)
    uglifier (4.2.0)
      execjs (>= 0.3.0, < 3)
    unicode-display_width (1.6.1)
    uniform_notifier (1.13.0)
    validate_url (1.0.8)
      activemodel (>= 3.0.0)
      public_suffix
    web-console (3.7.0)
      actionview (>= 5.0)
      activemodel (>= 5.0)
      bindex (>= 0.4.0)
      railties (>= 5.0)
    webmock (3.8.2)
      addressable (>= 2.3.6)
      crack (>= 0.3.2)
      hashdiff (>= 0.4.0, < 2.0.0)
    websocket-driver (0.7.1)
      websocket-extensions (>= 0.1.0)
    websocket-extensions (0.1.4)
    whenever (1.0.0)
      chronic (>= 0.6.3)
    xpath (3.2.0)
      nokogiri (~> 1.8)

PLATFORMS
  ruby

DEPENDENCIES
  bootsnap (>= 1.1.0)
  bullet
  byebug
  capybara (>= 2.15, < 4.0)
  carrierwave (~> 1.2, >= 1.2.3)
  coffee-rails (~> 4.2)
  database_cleaner
  elasticsearch-extensions
  elasticsearch-model
  elasticsearch-rails
  executables
  factory_bot_rails
  faker
  font-awesome-sass
  jbuilder (~> 2.5)
  listen (>= 3.0.5, < 3.2)
  mini_magick
  multi-select-rails
  mysql2 (>= 0.4.4, < 0.6.0)
  non-stupid-digest-assets
  normalize-scss
  pry
  pry-rails
  puma (~> 4.3)
  rack-cas (~> 0.16.0)
  rails (~> 5.2.0)
  rspec-rails
  rspec_junit_formatter
  sanitize
  sassc-rails
  selenium-webdriver (~> 3.14)
  shoulda
  shoulda-matchers
  simplecov (~> 0.10, < 0.18)
  simplecov-console
  spring
  spring-watcher-listen (~> 2.0.0)
  turbolinks (~> 5)
  tzinfo-data
  uglifier (>= 1.3.0)
  validate_url
  web-console (>= 3.3.0)
  webmock
  whenever

RUBY VERSION
   ruby 2.6.5p114

BUNDLED WITH
   1.17.2

Docker File

FROM ruby:2.6

# Install capybara-webkit deps
RUN apt-get update 
    && apt-get install -y xvfb git cron qt5-default libqt5webkit5-dev 
                          gstreamer1.0-plugins-base gstreamer1.0-tools gstreamer1.0-x 
                          imagemagick

# Use JEMALLOC instead
RUN apt-get install -y libjemalloc2 libjemalloc-dev
ENV LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so

# Node.js
RUN curl -sL https://deb.nodesource.com/setup_13.x | bash - 
    && apt-get install -y nodejs

# yarn
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
    && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list 
    && apt-get update 
    && apt-get install -y yarn

# Install our dependencies and rails
RUN mkdir -p /home/sotldirectory

WORKDIR /home/sotldirectory
ADD . /home/sotldirectory
RUN bundle install --jobs=4 --retry=3

# Copy openssl config to correct folder
RUN cp -R openssl.cnf /etc/ssl 

ADD ./startup.sh /usr/bin/
RUN chmod -v +x /usr/bin/startup.sh
ENTRYPOINT ["/usr/bin/startup.sh"]

startup.sh

#!/bin/bash

# set terminal 
export TERM=vt100

# start cron and update whenever 
service cron start
whenever --update-crontab

# remove PID and start the server
file="./tmp/pids/server.pid"
[ -f $file ] && rm $file

bin/rails s -p 3000 -b '0.0.0.0'

schedule.rb – relavant section

# change to the base directory of the application
# run the file with the rails runner task 
every 1.minutes do
  command 'cd /home/sotldirectory && bin/rails r import/cron_import.rb'
end

4

Answers


  1. Chosen as BEST ANSWER

    Changed the dockerfile from FROM ruby:2.6 to FROM ruby:2.6.0. Using ruby:2.6 appears to be pulling 2.6.5. I deleted the gemfile.lock and and a bundle install to reset the gemfile.lock. Currently it is showing one version of bundler 1.17.2 and everything is working normally again. For anyone else that sees this I believe their is issues with bundler 2 and rubygems.

    Similar issue seen here https://github.com/rubygems/bundler/issues/6882


  2. Change

    command 'cd /home/sotldirectory && bin/rails r import/cron_import.rb'

    to

    command 'cd /home/sotldirectory && bundle exec rails r import/cron_import.rb'

    Also, which rake version is listed in your Gemfile.lock?

    Login or Signup to reply.
  3. I solved a similar issue invoking ./bin/bundle exec before rails, ruby or rake, I think bundler is lost in different ruby versions gems

    Login or Signup to reply.
  4. Restart your system and it should work

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search