Как класс Ruby может определить имя процесса, который его запускает?

#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 в системе, а не только рассматриваемый скрипт.