"materialize": 找不到

3

我看到了以下错误信息,它只在使用whenever gem的cron作业中出现。否则应用程序是正常工作的。预定的任务未能运行。但我可以手动运行它并且它能正常工作。

/usr/local/bundle/gems/bundler-2.2.27/lib/bundler/definition.rb:496:in `materialize': Could not find rails-5.2.6, rake-12.3.3, puma-4.3.8, mysql2-0.5.3, sass-rails-5.1.0, uglifier-4.2.0, coffee-rails-4.2.2, jquery-rails-4.4.0, jbuilder-2.11.2, sdoc-0.4.2, bootsnap-1.8.1, blacklight_oai_provider-6.1.1, whenever-1.0.0, active-fedora-13.2.4, active-triples-1.1.1, blacklight-6.24.0, hydra-head-12.0.1, ldp-1.0.3, nokogiri-1.12.4-x86_64-linux, solrizer-4.1.0, rsolr-2.3.0, devise-4.8.0, devise-guests-0.7.0, rdf-3.1.13, byebug-11.1.3, rspec-rails-5.0.2, jettywrapper-2.0.5, listen-3.7.0, fcrepo_wrapper-0.9.0, solr_wrapper-2.2.0, factory_bot_rails-6.2.0, web-console-2.3.0, spring-3.0.0, actioncable-5.2.6, actionmailer-5.2.6, actionpack-5.2.6, actionview-5.2.6, activejob-5.2.6, activemodel-5.2.6, activerecord-5.2.6, activestorage-5.2.6, activesupport-5.2.6, railties-5.2.6, sprockets-rails-3.2.2, nio4r-2.5.8, sass-3.7.4, sprockets-3.7.2, tilt-2.0.10, execjs-2.8.1, coffee-script-2.4.1, rails-dom-testing-2.0.3, thor-1.1.0, json-1.8.6, rdoc-4.3.0, msgpack-1.4.2, oai-1.1.0, chronic-0.10.2, deprecation-1.1.0, faraday-0.17.4, faraday-encoding-0.0.5, ruby-progressbar-1.11.0, rdf-vocab-3.1.14, bootstrap-sass-3.4.1, globalid-0.5.2, kaminari-1.2.1, twitter-typeahead-rails-0.11.1.pre.corejavascript, hydra-access-controls-12.0.1, hydra-core-12.0.1, http_logger-0.6.0, json-ld-3.1.9, rdf-isomorphic-3.1.1, rdf-turtle-3.1.3, slop-4.9.1, racc-1.5.2, xml-simple-1.1.9, builder-3.2.4, bcrypt-3.1.16, orm_adapter-0.5.0, responders-3.0.1, warden-1.2.9, hamster-3.0.0, link_header-0.0.8, rspec-core-3.10.1, rspec-expectations-3.10.1, rspec-mocks-3.10.2, rspec-support-3.10.2, childprocess-4.1.0, i18n-1.8.10, rubyzip-1.3.0, rb-fsevent-0.11.0, rb-inotify-0.10.1, retriable-3.1.2, factory_bot-6.2.0, binding_of_caller-1.0.0, websocket-driver-0.7.5, mail-2.7.1, rack-2.2.3, rack-test-1.1.0, rails-html-sanitizer-1.4.2, erubi-1.10.0, arel-9.0.0, marcel-1.0.1, concurrent-ruby-1.1.9, minitest-5.14.4, tzinfo-1.2.9, method_source-1.0.0, sass-listen-4.0.0, coffee-script-source-1.12.2, faraday_middleware-0.14.0, multipart-post-2.1.1, autoprefixer-rails-10.3.3.0, sassc-2.4.0, kaminari-actionview-1.2.1, kaminari-activerecord-1.2.1, kaminari-core-1.2.1, blacklight-access_controls-6.0.0, cancancan-1.17.0, htmlentities-4.3.4, json-canonicalization-0.2.1, multi_json-1.15.0, ebnf-2.2.1, rexml-3.2.5, diff-lcs-1.4.4, ffi-1.15.4, debug_inspector-1.1.0, websocket-extensions-0.1.5, mini_mime-1.1.1, loofah-2.12.0, thread_safe-0.3.6, amazing_print-1.3.0, sxp-1.1.0, unicode-types-1.7.0, crass-1.0.6 in any of the sources (Bundler::GemNotFound)
from /usr/local/bundle/gems/bundler-2.2.27/lib/bundler/definition.rb:234:in `specs_for'
from /usr/local/bundle/gems/bundler-2.2.27/lib/bundler/runtime.rb:18:in `setup'
from /usr/local/bundle/gems/bundler-2.2.27/lib/bundler.rb:149:in `setup'
from /usr/local/bundle/gems/bundler-2.2.27/lib/bundler/setup.rb:20:in `block in <top (required)>'
from /usr/local/bundle/gems/bundler-2.2.27/lib/bundler/ui/shell.rb:136:in `with_level'
from /usr/local/bundle/gems/bundler-2.2.27/lib/bundler/ui/shell.rb:88:in `silence'
from /usr/local/bundle/gems/bundler-2.2.27/lib/bundler/setup.rb:20: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-3.0.0/lib/spring/commands.rb:33:in `<module:Spring>'
from /usr/local/bundle/gems/spring-3.0.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-3.0.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-3.0.0/lib/spring/client/server.rb:9:in `call'
from /usr/local/bundle/gems/spring-3.0.0/lib/spring/client/command.rb:7:in `call'
from /usr/local/bundle/gems/spring-3.0.0/lib/spring/client.rb:30:in `run'
from /usr/local/bundle/gems/spring-3.0.0/bin/spring:49:in `<main>'

更新:每当使用文件 /config/schedule.rb 中的相关部分设置 crontab

every 1.hour do command 'cd /home/hydra && bin/rails r import/cron_import.rb folklife' end

我们正在Docker容器中运行,这是Dockerfile的内容。
FROM ruby:2.6.8

# Install our dependencies and rails
RUN \
    gem install bundler \
    && gem install rails \
    && mkdir -p /home/hydra

# update and install dependencies
RUN apt-get update && apt-get -y install cron

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

WORKDIR /home/hydra
ADD ./hydra /home/hydra
RUN bundle install

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
bundle exec whenever
whenever --update-crontab

# remove PID and start the server
file="/home/hydra/tmp/pids/server.pid"
if [ -f $file ] ; then
    rm $file
fi

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

crontab -l的输出(相关部分)

# Begin Whenever generated tasks for: 
/home/hydra/config/schedule.rb at: 2021-09-21 18:38:41 +0000
PATH=\
GEM_HOME=/usr/local/bundle
BUNDLE_APP_CONFIG=/usr/local/bundle
RUBY_MAJOR=2.6
RUBYGEMS_VERSION=""
BUNDLE_BIN=""
BUNDLE_PATH=""
RUBY_VERSION=2.6.8
BUNDLER_VERSION=2.2.27

{section omitted}

* * * * * /bin/bash -l -c 'cd /home/hydra && bin/rails r import/cron_import.rb folklife >> /home/hydra/log/cron.log 2>> /home/hydra/log/cron_error.log'

# End Whenever generated tasks for: /home/hydra/config/schedule.rb at: 2021-08-20 20:22:02 +0000

Gemfile
source 'https://rubygems.org'

# Rails Dependencies
# =====================================================
gem 'rails', '~> 5.2.6'
gem 'bundler'
gem 'rake', '~> 12.3'
gem 'puma', '~> 4.3'
gem 'mysql2', '>= 0.4.4', '< 0.6.0'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.2'
gem 'jquery-rails'
gem 'jbuilder', '~> 2.5'
gem 'sdoc', '~> 0.4.0', group: :doc

gem 'bootsnap', '>= 1.1.0', require: false

# OAI-PMH 
# =====================================================
gem 'blacklight_oai_provider'

# Automatic Import
# =====================================================
gem 'whenever', require: false

# Hydra Dependencies
# =====================================================
gem 'active-fedora'
gem 'active-triples'
gem 'blacklight'

gem 'hydra-head'
gem 'ldp'
gem 'nokogiri'
gem 'solrizer'

gem 'rsolr'
gem 'devise'
gem 'devise-guests', '~> 0.5'

gem 'rdf', '<= 3.1.13'

# Capistrano
# =====================================================
# gem 'capistrano-rails'

# DEVELOPMENT AND TESTS ONLY
# =====================================================
group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a   debugger console
  gem 'byebug'
  gem 'rspec-rails'
  gem 'jettywrapper'
  gem 'listen'
  gem 'fcrepo_wrapper', '~> 0.4'
  gem 'solr_wrapper', '~> 2.0'
end

group :test do
  gem 'factory_bot_rails'
end

group :development do
  gem 'web-console', '~> 2.0'
  gem 'spring'
end

请分享:1)您使用哪个命令来安装crontab?例如 whenever --update-crontab 2)运行该命令的用户是谁,以及3)对于该用户,crontab -l 的相关输出是什么? - Jared Beck
@TracyMcCormic,请分享该项目的GemFile - Chandan
已更新为当前的Gemfile。 - Tracy McCormick
1个回答

1
问题与环境变量有关,无法找到宝石的正确路径。我找到了解决方案并更新了schedule.rb文件。
ENV.each { |k, v| env(k, v) }

# set logs and environment
set :output, {:standard => "#{path}/log/cron.log", :error => "#{path}/log/cron_error.log"}
set :environment, ENV['RAILS_ENV']

every 1.minutes do
  command "cd #{path} && bin/rails r import/cron_import.rb folklife"
end 

此解决方案的信息来自 https://dev59.com/R2025IYBdhLWcg3wtofX。请返回翻译后的文本。 - Tracy McCormick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接