2016-08-08 59 views
3

auf der Suche nach etwas Hilfe.Immer wenn gem 'konnte nicht geladen werden Befehl: Rake'

Ich betreibe eine Schiene app (v3.2.5) mit dem whenever gem (v0.9.7) und rake (v11.2.2). Ich tue dies auch in einer Docker Behälter Bild ruby:2.3 (cron installiert wurde und bundle install wurde läuft)

Hier ist mein schedule.rb

set :environment, ENV['RAILS_ENV'] 

every '*/2 9,10,11,12,13,14,15,16 * * 1-5' do 
    rake "import_csv", output: {:error => 'log/import_csv_errors.log', :standard => 'log/import_csv.log'}' 
end 

noteRAILS_ENV bei Containereinführung development gesetzt

Hier ist mein Cron-Job, der auf dem Container nach dem Build (crontab -l) ist:

# Begin Whenever generated tasks for: /usr/src/app/config/schedule.rb 
*/2 9,10,11,12,13,14,15,16 * * 1-5 /bin/bash -l -c 'cd /usr/src/app && RAILS_ENV=development bundle exec rake import_csv --silent >> log/import_csv.log 2>> log/import_csv_errors.log' 

# End Whenever generated tasks for: /usr/src/app/config/schedule.rb 

Wenn dieser Job läuft, die Protokolle zurück:

import_csv_errors.log

Bundler::GemNotFound: Could not find rake-11.2.2 in any of the sources 
    /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/spec_set.rb:95:in `block in materialize' 
    /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/spec_set.rb:88:in `map!' 
    /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/spec_set.rb:88:in `materialize' 
    /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/definition.rb:140:in `specs' 
    /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/definition.rb:185:in `specs_for' 
    /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/definition.rb:174:in `requested_specs' 
    /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/environment.rb:19:in `requested_specs' 
    /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/runtime.rb:14:in `setup' 
    /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler.rb:95:in `setup' 
    /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/setup.rb:19:in `<top (required)>' 
    /usr/local/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require' 
    /usr/local/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require' 

import_csv.log

bundler: failed to load command: rake (/usr/local/bin/rake) 

Jetzt hier das Seltsame ist. Wenn ich den Cron-Job-Befehl kopieren:

/bin/bash -l -c 'cd /usr/src/app && RAILS_ENV=development bundle exec rake import_csv --silent >> log/import_csv.log 2>> log/import_csv_errors.log' 

und führen diese in den Behälter, es funktioniert gut, aber wenn der Job es läuft, ich thos Fehler in den Protokollen erhalten !!! Ich bin ein an verloren hier ...

Ich habe versucht, das Hinzufügen

env :PATH, ENV['PATH'] 
env :GEM_PATH, '/usr/local/bundle' 

an die Spitze der schedule.rb und ich versuchte dabei

command 'cd /usr/src/app && RAILS_ENV=development bundle exec rake import_csv --silent >> log/import_csv.log 2>> log/import_csv_errors.log' 

der Verwendung Statt rake in der Aufgabe und ich Erhalten Sie die gleichen Fehler.

Jede Hilfe wird empfohlen

+0

Mann, den ich auf dem gleichen Fehler stecke es nichts mit Docker zu tun hat, wenn Sie das tun Rake --help, es läuft gut, aber für andere Rake-Aufgaben gibt es diesen Fehler – user1735921

+0

Können Sie 'finden/-name" Edelsteine ​​"' und zeigen Sie mir die Ausgabe – user1735921

+0

Ich habe gerade mein Problem in diesem Thread beantwortet. Bitte überprüfen Sie @ user1735921 – Awatatah

Antwort

0

Ich habe meine Harke Version aktualisiert und es funktionierte für mich. Im Folgenden sind die Schritte, die ich gefolgt:

sudo bundle update rake 
sudo bundle install 

Öffnen Sie ein Rakefile und die Linie rake/rdoctask mit require 'rdoc/task' ersetzen.

-1

Ich löste mein Problem, indem ich ein anderes Bild und Gebäude verwendete, als ich es brauchte, anstatt docker hub image ruby:2.x zu verwenden.

Dockerfile (bearbeitete Gewinde passen):

FROM ubuntu:14.04 

# Installs needed to run rails on ubuntu 14.04 (must use mysql 5.6 or 5.5): 
RUN apt-get update && apt-get install -y apache2 curl git build-essential libmysqlclient-dev mysql-server-5.6 nodejs make 
RUN apt-get update && apt-get install -y ruby-dev zlib1g-dev 
RUN gem install rails --version 3.2.5 --no-ri --no-rdoc 

# Update ruby to v2.2 (optional) 
RUN apt-get install -y software-properties-common && apt-add-repository ppa:brightbox/ruby-ng 
RUN apt-get update && apt-get install -y ruby2.2 

# Install cron 
RUN apt-get install -y cron 

# Finish the build 
RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app 

# If you code is in the same directory you ran docker build then: 
COPY . /usr/src/app 
RUN bundle install 
RUN whenever --update-crontab 
CMD ["passenger start"] 
3

Ich habe denselben Fehler behoben durch Modifizieren Dockerfile mit:

RUN gem update --system 2.6.12 
RUN gem install bundler --version 1.14.6 

Und schedue.rb:

ENV.each { |k, v| env(k, v) } 
+0

Das Hinzufügen der Umgebungsvariablen zu Cronjob löst das Problem. – PascalTurbo