web-dev-qa-db-ja.com

Rubyスクリプトでmainメソッドを定義する必要がありますか?

Pythonでは、モジュールにメイン関数がないhaveが、次のイディオムを使用するのが一般的な方法です。

def my_main_function():
    ... # some code

if __name__=="__main__":  # program's entry point
    my_main_function()

私はRubyがmainメソッドを持っていることを持っていないことを知っていますが、いくつかあります私が従うべきベストプラクティスの種類?メソッドにmainなどの名前を付けますか?

主なメソッドに関するウィキペディアのページ は本当に私を助けません。


余談ですが、Pythonでは次のイディオムも見ました。

def my_main_function(args=[]):
    ... # some code

if __name__=="__main__":  # program's entry point
    import sys
    sys.exit(my_main_function(sys.argv))
47
MiniQuark

私は通常使用します

if __FILE__ == $0
  x = SweetClass.new(ARGV)
  x.run # or go, or whatever
end

はい、できます。それはあなたが何をしているかに依存します。

76
Allyn

常に$PROGRAM_NAME$0を使用するよりも読みやすくなっています。そのような "Perlのような"グローバルを目にする半分の時間、私はそれらを調べに行かなければなりません。


if __FILE__ == $PROGRAM_NAME
  # Put "main" code here
end
49
Benjamin Oakes

ライブラリコードはlib /に、実行可能ファイルはライブラリコードが必要な場合はbin /に配置する必要があります。これには、RubyGemsのパッケージ方法と互換性があるという追加の利点があります。

一般的なパターンは、lib/application.rb(またはできればドメインに適した名前)とbin/applicationです。

require 'application'
Application.run(ARGV)
9
Rein Henrichs

私の個人的な経験則は:瞬間

if __FILE__ == $0
    <some code>
end

5行より長くなるので、main関数に抽出します。これは、PythonとRubyコードの両方に当てはまります。このコードがないと、構造が悪いように見えます。

3