Note: If you think of a better title/question, feel free to suggest it. I wasn't sure how to articulate this question in one brief sentence.
I created a command line Mastermind game. To play the game, you type play.rb
at the command line.
play.rb
is a Ruby script that fires up the game. Within the script, the game is sent an interface, called CommandLineInterface
.
If you want to play using a GUI (I'm using a Ruby GUI called Limelight), you cd
into the limelight
directory and type limelight open production
and the GUI opens.
There is a mastermind_game
directory that contains a lib
, a spec
, and a limelight
directory. The limelight
directory contains a production
directory.
Now I'm making a few changes. You can pass arguments to the script at the command line. Either you enter play.rb "command line game"
or play.rb "limelight game"
.
ARGV
is an array of the arguments passed at the command line.
if ARGV.include?("command line game")
interface = CommandLineInterface.new
elsif ARGV.include?("limelight game")
interface = LimelightInterface.new
end
If I want to play my command line game, I enter play.rb "command line game"
and it works fine.
I want to be able to type play.rb "limelight game"
at the command line and have that open the GUI. In ARGV
, the argument "limelight game"
would be found so interface
would be set to LimelightInterface.new
. Within my LimelightInterface
class I want the initialize method to open the GUI. It should essentially have the same functionality as typing limelight open production
at the command line.
I'm not sure if this is possible or how to do it, so any help would be appreciated! Thanks!
EDITED: I'm trying to execute the command rvm use jruby
by including this line in my script:
system("rvm use jruby")
I get back: "RVM is not a function, selecting rubies with 'rvm use ...' will not work."