No se puede ejecutar la tarea launchd

3

He hecho esto una vez e intento hacerlo en una computadora nueva y no puedo ver lo que estoy haciendo mal.

Tengo una secuencia de comandos ruby en mi carpeta de usuario llamada forecast.rb. Lo he configurado como ejecutable (a + x). Escribe una línea en otro archivo llamado .weather.txt.

Quiero ejecutar forecast.rb cada 5 minutos.

Tengo un archivo plist llamado com.jwhite.forecast_tmux.plist. Ese archivo se ve como:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.jwhite.forecast_tmux</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/jwhite/forecast.rb</string>
    </array>
    <key>StartInterval</key>
    <integer>300</integer>
</dict>
</plist>

Este archivo se encuentra en ~ / Library / LaunchAgents. Y después de moverlo allí, ejecuté Launchctl load -w ~ / Library / Launchagents / com.jwhite.forecast_tmux.plist.

Si ejecuto forecast.rb (./forecast.rb) funciona bien. Pero mi launchd no se está ejecutando.

¿Qué me estoy perdiendo?

EDITAR:

Comencé a usar LaunchControl y obtuve el error.

/Users/jwhite/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in 'require': cannot load such file -- geocoder (LoadError)
from /Users/jwhite/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in 'require'
from /Users/jwhite/forecast.rb:3:in '<main>'

Pero cuando ejecuto esto desde el terminal, todo se ejecuta bien. ¿Entonces launchctl no puede leer en Ruby Gems?

    
pregunta James White 05.07.2015 - 17:46

1 respuesta

1

Tuve el mismo problema al intentar ejecutar un script en un intervalo usando LaunchControl (excelente aplicación, échale un vistazo). Copiaré y pegaré directamente desde la fuente que me ayudó:

  

Para los programas GUI, los scripts del entorno de shell predeterminado se ignoran, y por lo tanto   RVM gestionó versiones de ruby.

     

La solución es definirlos a través de launchctl. Esos valores se han ido   aunque después de un reinicio, los puse en .bash_profile ya que de todos modos siempre abro una shell, vea más abajo.

     

launchctl setenv GEM_HOME ~ / .rvm / gems / ruby-2.2.1   launchctl setenv GEM_PATH ~ / .rvm / gems / ruby-2.2.1: /Users/markus/.rvm/gems/ruby-2.2.1@global

     

Todas las soluciones más permanentes (por ejemplo, launchd.conf) ya no funcionan en 10.10.   Espero que ayude a cualquiera que se haya topado con un problema similar.

En mi caso, simplemente configuré el GEM_HOME y PATH correctos en LaunchControl.

    
respondido por el Jay 25.10.2015 - 19:00

Lea otras preguntas en las etiquetas