2010-03-15 19 views
5

Estoy ejecutando un crontab que ejecuta una tarea de rake. Estoy recibiendo el siguiente error (por mailto de crontab):Crontab + rails3 + bundler

rake aborted! 
no such file to load -- bundler 
/Users/Mendel/Sites/misnooit/Rakefile:4 
(See full trace by running task with --trace)

estoy usando RVM con:
rubí rubí 1.9.1p378
rieles: Carriles 3.0.0.beta
$ GEM_HOME : /Users/Mendel/.rvm/gems/ruby-1.9.1-p378
bundler: bundler (0.9.11)

El error es bastante explicativo pero no soy capaz de solucionarlo. . ¿Hay alguien con más conocimiento sobre este asunto? Gracias por adelantado.

+0

¿está seguro de que su usuario cargará su configuración de rvm? – shingara

+0

Creo que lo soy, pero ¿puedes mostrarme cómo lo harías? Tal vez estoy haciendo algo mal. – user288764

Respuesta

1

Solo adivinando: ¿es Ruby 1.9.1p378 su Ruby predeterminado?

Creo que es no lo que sólo puede ejecutar rvm --defaults "ruby-1.9.1-p378" Si esto no ayuda, ¿está seguro bundler se ha instalado cuando se usó 1,9 rubí?

Además, en su entorno de prueba/producción, es posible que desee ejecutar cron con otro usuario que usted. Por lo tanto, le sugiero que instale rvm como "raíz" y configure (aún como raíz) un RVM predeterminado que será el predeterminado para todos los usuarios del sistema. Y, por supuesto, puede anular esto por usuario.

1

que he tenido una buena experiencia en el uso http://github.com/javan/whenever

Utiliza un DSL Ruby a gestionar las tareas cron y se encarga de establecer toda la magia medio ambiente.

every 3.hours do 
    runner "MyModel.some_process" 
    rake "my:rake:task" 
end 
1

han tu ejecutar el comando con --trace afirmó para asegurar que no es algo obvio en el comando rastrillo, pero lo que podría hacer es la cadena de comandos crontab

rvm 1.9.1;rake do_whatever_task 

De esa manera se cargará el entorno ruby ​​todo el tiempo antes de ejecutar el rake.

6

Acabo de experimentar esto. El problema para mí fue que las instancias de rastrillo y rubí que uso se construyeron localmente y se instalaron en/usr/local/bin. Hay otras versiones en/usr/bin (debo verificar lo que instalé usando apt-get en el pasado ...).

Por lo tanto, en mi archivo crontab He establecido la ruta utilizando

PATH =/usr/local/bin:/usr/bin:/bin

(que estaba viendo como PATH =/usr/bin:/bin en los correos crontab fallidos)

y funciona.

0

Tuve un problema similar este fin de semana, encontré que mi Rake Gem se actualizó a 0.90 necesita rastrillo 0.8.7. Esto resolvió el problema por mi parte.