2016-08-19 5 views
1

Операционная система: Ubuntu установлен на докере и обычном ubuntu, установленном на моем личном ноутбуке.команда rake не работает от работы cron, но работает иначе

Я бегу этот хрон:

*/5 * * * * /bin/bash -l -c "cd /home/deploy/railsapp && rake spec >> cron.log 2>&1" 

Я пробовал с расслоением ехес грабли спецификации, без/бен/Баш, с всякий раз, когда драгоценный камень, с/USR/местные/бен/рейка спецификации, но все еще ничего не происходит, кроме этих ошибок.

ошибки в файле журнала на выполнении задания хрон:

/bin/bash: bundle: command not found 


/bin/bash: rake: command not found 


rake aborted! 
Bundler::GemNotFound: Could not find rake-11.2.2 in any of the sources 
/home/deploy/railsapp/config/boot.rb:3:in `<top (required)>' 
/home/deploy/railsapp/config/application.rb:1:in `<top (required)>' 
/home/deploy/railsapp/Rakefile:4:in `<top (required)>' 
LoadError: cannot load such file -- bundler/setup 
/home/deploy/railsapp/config/boot.rb:3:in `<top (required)>' 
/home/deploy/railsapp/config/application.rb:1:in `<top (required)>' 
/home/deploy/railsapp/Rakefile:4:in `<top (required)>' 
(See full trace by running task with --trace) 


    bundler: failed to load command: rake (/usr/local/bin/rake) 
     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' 

rake spec При управлении вручную из командной строки его работает нормально, но с хрон он дает эту ошибку. Любые идеи?

+1

Вы используете cron с тем же пользователем? Похож на то, что пользователь cron работает на doe, у которого нет доступа к необходимым драгоценным камням. – neongrau

+0

Привет, спасибо за ответ, его работает как root, в ОС нет пользователя. У него есть только пользователь root, работающий как контейнер внутри докера – user1735921

+0

Возможно, докеры являются причиной проблемы? Попробуйте добавить тег 'docker' для вопроса и написать об этом в текстовом вопросе. – gambala

ответ

2

Я уверен, что проблема вызвана неправильной установкой среды. В основном cron работает с минимальной средой, поэтому он не знает о настройках, например, от файла .bashrc (где у вас есть rvm или rbenv инициализация и настройки PATH).

Источник файл среды с помощью . так переписать cron запись на что-то вроде:

*/5 * * * * /bin/bash -l -c ". /etc/environment && cd /home/deploy/railsapp && rake spec >> cron.log 2>&1" 

Обратите внимание, что /etc/environment это всего лишь пример. Вместо этого вы можете использовать исходные файлы, например .bashrc.

+0

У меня нет путей rbenv или rvm в .bashrc. Я проверил alll .bashrc – user1735921

+0

Но вы используете rbenv или rvm, правильно? Если да, вы должны иметь связанный код где-нибудь в файлах среды. Без него это не сработает. – smefju

+0

нашел его в /home/myuser/.bashrc ... его rbenv. Но по-прежнему такая же ошибка: Bundler :: GemNotFound: не удалось найти rake-11.2.2 в любом из источников, у меня есть два грабля, один из которых - 10.something, а один - 11.2.2, оба находятся в одном каталоге, называемом gems. – user1735921

0

Использование whenever gem - это адаптер для cron, с поддержкой рейк-задач и других рубиновых/рельсовых вещей.

+0

Уже использовал его, получив ту же ошибку. – user1735921

 Смежные вопросы

  • Нет связанных вопросов^_^