注意:如果您想到更好的標題/問題,請隨時提出建議。我不確定如何用一個簡短的句子表達這個問題。從Ruby代碼執行shell命令
我創建了一個命令行Mastermind遊戲。要玩遊戲,請在命令行輸入play.rb
。
play.rb
是啓動遊戲的Ruby腳本。在腳本中,遊戲被髮送一個界面,稱爲CommandLineInterface
。
如果你想使用GUI玩(我使用Ruby的GUI稱爲Limelight系列),你cd
到limelight
目錄,然後鍵入limelight open production
和GUI打開。
有一個mastermind_game
目錄包含lib
,一個spec
和limelight
目錄。 limelight
目錄包含production
目錄。
現在我正在做一些改變。您可以在命令行上將參數傳遞給腳本。您可以輸入play.rb "command line game"
或play.rb "limelight game"
。
ARGV
是在命令行傳遞的參數數組。
if ARGV.include?("command line game")
interface = CommandLineInterface.new
elsif ARGV.include?("limelight game")
interface = LimelightInterface.new
end
如果我想發揮我的命令行的比賽,我進入play.rb "command line game"
,它工作正常。
我希望能夠在命令行鍵入play.rb "limelight game"
並打開GUI。在ARGV
中,將找到參數"limelight game"
,因此interface
將設置爲LimelightInterface.new
。在我的LimelightInterface
類中,我想要初始化方法來打開GUI。它應該具有與在命令行鍵入limelight open production
相同的功能。
我不確定這是可能的或者如何去做,所以任何幫助將不勝感激!謝謝!
編輯:我試圖通過包括此行我的腳本來執行命令rvm use jruby
:
system("rvm use jruby")
我回來:「RVM不是一個函數,選擇紅寶石與「RVM使用...' 不管用。」
選擇一種Ruby的系統命令不應該是必需的;您可以使用[.rvmrc](http://bre.overnothing.com/workflow/rvmrc/)文件來選擇jruby。您可以將您要調用的內容存儲在子目錄中,並在那裏創建一個'.rvmrc'文件。 –
好的,我創建了一個.rvmrc文件來指定我想要使用jruby。所以我所要做的就是將'system(「cd limelight」)'添加到我的腳本中,對嗎?只需將'cd'放入目錄,.rvmrc文件將運行jruby。我試圖做到這一點,但似乎沒有成功進入該目錄。 – rzv
不,一個'.rvmrc'文件決定*在調用'ruby ...時運行哪個* Ruby,它不會啓動Ruby。您需要將cd放入目錄,然後啓動您的腳本。 –