Ich habe das einmal gemacht und ich versuche es auf einem neuen Computer und ich kann nicht sehen, was ich falsch mache.
Ich habe ein Ruby-Skript in meinem Benutzerordner namens "forecast.rb". Ich habe es auf ausführbar gesetzt (a + x). Es schreibt eine Zeile in eine andere Datei mit dem Namen .weather.txt.
Ich möchte "forecast.rb" alle 5 Minuten ausführen.
Ich habe eine Plist-Datei mit dem Namen com.jwhite.forecast_tmux.plist. Diese Datei sieht so aus:
<?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>
Diese Datei befindet sich in ~ / Library / LaunchAgents. Und nachdem ich es dorthin verschoben habe, habe ich Launchctl load -w ~ / Library / Launchagents / com.jwhite.forecast_tmux.plist ausgeführt.
Wenn ich "forecast.rb" (./forecast.rb) ausführe, funktioniert es einwandfrei. Mein launchd wird jedoch nicht ausgeführt.
Was vermisse ich?
BEARBEITEN:
Ich habe mit der Verwendung von LaunchControl begonnen und den Fehler erhalten.
/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>'
Aber wenn ich das vom Terminal aus starte, läuft alles gut. Also kann launchctl in Ruby Gems nicht lesen?
#!/Users/jwhite/.rvm/rubies/ruby-2.2.1/bin/ruby
Antworten:
Ich hatte das gleiche Problem, als ich versuchte, ein Skript in einem Intervall mit LaunchControl auszuführen (großartige App, probieren Sie es aus). Kopiert und fügt direkt aus der Quelle ein , die mir geholfen hat:
In meinem Fall habe ich einfach das richtige GEM_HOME und PATH in LaunchControl eingerichtet.
quelle