Impossibile eseguire l'operazione launchd

3

L'ho fatto una volta e sto provando a farlo su un nuovo computer e non riesco a vedere cosa sto facendo male.

Ho uno script rubino nella mia cartella utente denominato forecast.rb. L'ho impostato su eseguibile (a + x). Scrive una riga su un altro file chiamato .weather.txt.

Voglio eseguire forecast.rb ogni 5 minuti.

Ho un file plist chiamato com.jwhite.forecast_tmux.plist. Il file sembra:

<?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>

Questo file si trova in ~ / Library / LaunchAgents. E dopo averlo spostato lì ho lanciato Launchctl load -w ~ / Library / Launchagents / com.jwhite.forecast_tmux.plist.

Se eseguo forecast.rb (./forecast.rb) funziona correttamente. Ma il mio launchd non è in esecuzione.

Cosa mi manca?

EDIT:

Ho iniziato a utilizzare LaunchControl e ho ricevuto l'errore.

/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>'

Ma quando eseguo questo dal terminale, tutto viene eseguito correttamente. Quindi launchctl non può leggere in Ruby Gems?

    
posta James White 05.07.2015 - 17:46
fonte

1 risposta

1

Ho avuto lo stesso problema, cercando di eseguire uno script su un intervallo utilizzando LaunchControl (ottima app, dai un'occhiata). Copia e incolla direttamente da la fonte che mi ha aiutato:

For GUI programs the default shell environment scripts are ignored, and therefore RVM managed ruby versions.

The workaround is to define them via launchctl. Those values are gone though after a reboot, so I put them in .bash_profile since I open a shell anyhow all the time, see below.

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

All more permanent solutions (e.g. launchd.conf) don't work anymore in 10.10. Hope that helps anyone who ran into a similar issue.

Nel mio caso ho appena impostato GEM_HOME e PATH corretti in LaunchControl.

    
risposta data 25.10.2015 - 19:00
fonte

Leggi altre domande sui tag