#ruby-on-rails #ruby #delayed-job #irb
#ruby-on-rails #ruby #отложенное задание #irb
Вопрос:
Я использую delayed_jobs для запуска классов Ruby, как Ruby может определить имя (команду) процесса, который его запускает?
есть мысли?
Ответ №1:
Вы можете определить имя файла с помощью $0
. Вы даже можете задать имя процесса, используя его, как в $0 = 'foo'
сообщении в блоге Дейва Томаса. Если вы хотите получить аргументы командной строки, вам нужно посмотреть на ARGV
.
Комментарии:
1. Кстати,
$0
переменная имеет псевдоним$PROGRAM_NAME
2. Неплохо. Это намного менее запутанное имя.
Ответ №2:
$0
Содержит имя выполняемого скрипта. (Может быть назначаемым, поэтому может пойти не так)
Комментарии:
1.
--replace-progname
переключатель ruby-prof манипулирует $ 0 именно для этой цели, поэтому$0 == __FILE__
волшебное заклинание в запускаемом скрипте все еще работает.
Ответ №3:
Если вы используете систему Unix, вы можете выполнить скрипт из ruby, чтобы определить процесс следующим образом:
`ps aux | grep ruby`
а затем использовать $? чтобы получить процесс
Комментарии:
1. Это покажет каждый процесс ruby в системе, а не только рассматриваемый скрипт.