Ответ 1
Вы можете найти аналогичную функциональность в ruby.
__ FILE __ имя текущего исходного файла.
$0 Содержит имя выполняемого script. Может быть назначено.
источник: Ruby Quick Ref
Я только что изучил основы Ruby после того, как был очень доволен Python в течение нескольких лет (я все еще использую Python для некоторых вещей), но я хотел бы знать, есть ли там идиома или взломать эту конкретную проблема.
У меня есть Ruby script, с которым я хотел бы работать require script_name
, но я также хотел бы иметь возможность запускать ruby script_name.rb
с терминала и запускать его как командную строку script. В Python это будет сделано с помощью следующей структуры в нижней части script:
if __name__ == '__main__':
# do something here
Однако я не могу найти эквивалент в Ruby. Есть ли способ определить, выполняется ли текущий script из командной строки? Может быть, какой-то метод Kernel::
или что-то еще? В идеале, что-то вроде этого внизу script:
if from_command_line?
# do something here
end
Вы можете найти аналогичную функциональность в ruby.
__ FILE __ имя текущего исходного файла.
$0 Содержит имя выполняемого script. Может быть назначено.
источник: Ruby Quick Ref
Вы хотите использовать:
if __FILE__ == $0
# do stuff
end
__FILE__
- это имя исходного файла, а $0
- имя выполняемого script.
В то время как
if __FILE__ == $0
Foo.run
end
- общий подход, в настоящее время я использую
if File.identical?(__FILE__, $0)
Foo.run
end
потому что такие программы, как ruby-prof могут сделать $0 не равным __FILE__
, даже если вы используете --replace-progname
.