Ya lo hice una vez y estoy intentando hacerlo en un ordenador nuevo y no veo qué estoy haciendo mal.
Tengo un ruby script en mi carpeta de usuario llamado forecast.rb. Lo he puesto 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 parece a:
<?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) se ejecuta bien. Pero mi launchd no se ejecuta.
¿Qué me falta?
EDITAR:
He empezado a usar LaunchControl y me sale 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 la terminal todo se ejecuta bien. ¿Entonces launchctl no puede leer en Ruby Gems?
0 votos
¿Cuál es la primera línea del rb script?
0 votos
La etiqueta debe coincidir con el nombre del archivo sin el .plist.
0 votos
@fd0 En realidad sí. Ha sido un mal copy/paste de cuando hice esto anteriormente. He editado la descripción para mostrar lo que realmente estoy haciendo.
0 votos
@Mark la primera línea es
#!/Users/jwhite/.rvm/rubies/ruby-2.2.1/bin/ruby
0 votos
¿Su nombre de usuario es jhwhite o jwhite? Revisa lo que has presentado.
0 votos
@fd0 Sí, estoy haciendo esto muy confuso. He copiado y pegado lo esencial de donde lo hice anteriormente en lugar de lo que he hecho esta vez. Ahora todo está actualizado como corresponde.
0 votos
Qué variables de entorno ha configurado y dónde las ha configurado
0 votos
No estoy seguro, pero en mi opinión no se le dice a launchd cuándo debe comenzar el trabajo. Dices que lo haga cada 5 minutos pero no
RunAtLoad
olaunchctl start ...
¿Quizás comprobarlo?0 votos
Comprueba la última sección: Cargar vs. Empezar