2016-04-13 7 views
0

からRubyのメソッドを実行します。このクラスを実行するには、私はファイル<em>test_class.rb</em>にRubyで以下のクラスを持って、コマンドライン

class TestClass 

    def test_verify_one 
     # DO SOME 
    end 

    def test_verify_two 
     # DO SOME 
    end 

end 

Iは、端末、環境、言語に2つのパラメータを送信します。

だから... ...私が使用して端末から呼び出すこと:

ruby test_class.rb ENVIRONMENT LANGUAGE 

これは、両方の方法を実行します。

私は1つしか実行しません。

私は次のことを試してみました:

ruby -r "test_class.rb" -e "TestClass.test_verify_one" ENVIRONMENT LANGUAGE 

が、それは動作しません。

私を助けることができますか? test_class.rbと同じフォルダ内に

+1

は「def self.name_of_method」です問題??? –

+2

"これは両方のメソッドを実行します" - 表示したコードでは、そうではありません。ここでは何も実行されません。 –

+0

@SergioTulentsev、あなたは正しい...それは私が新しいアプローチを試みるために追加したものです。私はコードを更新しました。 –

答えて

2

、次のコマンド構文でrubyのコマンドを実行します。

ruby -I . -r "test_class" -e "TestClass.test_verify_one" arg1 arg2 

は、このコマンドを破壊我々が得る:私たちが使用できるように

-I .が$ LOAD_PATHにカレントディレクトリを含めますrequire

-r $ LOAD_PATH内にtest_classというファイルが必要です。これは、上記のロードパスにカレントディレクトリを含めたので可能です(.rb拡張子はここではオプションです)。

-e次のコードを評価します。私たちはそのメソッド内ARGVを呼び出す場合

今、私たちは別々の行にarg1arg2を取得する必要があります:

#... 
def self.test_verify_one 
    puts ARGV 
end 
#... 
+0

ありがとう: '-e:1:'

で ':未定義のメソッド 'test_verify_one' TestClassを用:クラス(NoMethodErrorを)' –

+0

はなかったです元の質問ではクラスメソッドを使用しますか?あなたの場合は '-e TestClass.new.test_verify_one'となります。ここでクラスやインスタンスメソッドを使用しても問題はありません –

+0

@Anthony、 私は ルビー-Iで試しました。 -r "test_class" -e "TestClass.new.test_verify_one" arg1 arg2' 'ruby -I。 "-r" test_class "-e" TestClass.new(test_verify_one) "arg1 arg2' しかし、私は: ' C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/test-unit- '' new 'にある-e:1から: -e:1から: -e:1からの、引数の間違った数(0の場合は1)(ArgumentErrorの場合):3.0.8/lib/test/unit/testcase.rb:400: :

の中で ' –

0

あなたがしたい場合は、あなたが定義する必要があり、あなたがそれを渡している変数を取るためにあなたの最初の方法2つの変数を取るためにあなたの第一の方法、そのよう:

class TestClass 

    def test_verify_one (var1, var2) 
      # DO SOME 
     end 

     def test_verify_two 
      # DO SOME 
     end 

end 

あなたは、あなたがそれをしたい条件の下で実行...またはちょうどそれをコメントアウトだけにそれを引き起こす2番目に条件を配置する必要がありますifあなたは現時点でそれを必要としません。たとえば、変数が渡されなかった場合にのみテスト2を起動させたい場合、コードは次のようになります。

class TestClass 

    def test_verify_one (var1, var2) 
     # DO SOME 
    end 

    def test_verify_two (var1, var2) 
     if (var1 and var2) defined? nil 
     # DO SOME 
    end 

end 
関連する問題