Tidak dapat menjalankan tugas launchd

3

Saya sudah melakukan ini sekali dan saya mencoba melakukannya di komputer baru dan saya tidak dapat melihat kesalahan saya.

Saya memiliki skrip ruby ​​di folder pengguna saya bernama forecast.rb. Saya telah mengaturnya menjadi executable (a + x). Itu menulis garis keluar ke file lain bernama .weather.txt.

Saya ingin menjalankan forecast.rb setiap 5 menit.

Saya memiliki file plist bernama com.jwhite.forecast_tmux.plist. File itu terlihat seperti:

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

File ini terletak di ~ / Library / LaunchAgents. Dan setelah memindahkannya di sana saya menjalankan Launchctl load -w ~ / Library / Launchagents / com.jwhite.forecast_tmux.plist.

Jika saya menjalankan forecast.rb (./forecast.rb) berjalan dengan baik. Tapi launchd saya tidak dieksekusi.

Apa yang saya lewatkan?

EDIT:

Saya sudah mulai menggunakan LaunchControl dan mendapatkan kesalahan.

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

Tetapi ketika saya menjalankan ini dari terminal semuanya dijalankan dengan baik. Jadi launchctl tidak bisa membaca di Ruby Gems?

James White
sumber
Apa baris pertama skrip rb?
Mark
Label harus cocok dengan nama file tanpa .plist.
fd0
@ fd0 Sebenarnya tidak. Itu adalah copy / paste yang buruk dari ketika saya melakukan ini sebelumnya. Saya telah mengedit deskripsi untuk menunjukkan apa yang sebenarnya saya lakukan.
James White
@ Mark baris pertama adalah #!/Users/jwhite/.rvm/rubies/ruby-2.2.1/bin/ruby
James White
Apakah nama pengguna Anda jhwhite atau jwhite? Lihat apa yang telah Anda sajikan.
fd0

Jawaban:

1

Saya memiliki masalah yang sama, mencoba menjalankan skrip pada interval menggunakan LaunchControl (aplikasi hebat, periksa). Akan menyalin dan menempel langsung dari sumber itu membantu saya:

Untuk program GUI, skrip lingkungan shell default diabaikan, dan karenanya   RVM mengelola versi ruby.

Solusinya adalah dengan mendefinisikannya melalui launchctl. Nilai-nilai itu hilang   meskipun setelah reboot, jadi saya meletakkannya di .bash_profile karena saya membuka shell bagaimanapun juga, lihat di bawah.

launchctl setenv GEM_HOME ~ / .rvm / gems / ruby-2.2.1   launchctl setenv GEM_PATH ~ / .rvm / permata / ruby-2.2.1: / Pengguna /markus /

Semua solusi permanen lainnya (mis. Launchd.conf) tidak berfungsi lagi di 10.10.   Semoga itu bisa membantu siapa saja yang mengalami masalah serupa.

Dalam kasus saya, saya hanya mengatur GEM_HOME dan PATH yang benar di LaunchControl.

Jay
sumber