On Fri, Mar 18, 2011 at 7:06 AM, Shangz B. <shangbaby / gmail.com> wrote: > Hello and warm wishes to everyone who reads my post :) > > I am a newbie to Ruby (That Rhymes!). I am attempting to complete the > "10 Minutes to YOur First Ruby Application" tutorial and I am stuck > about the syntax of the example they are using. I get this error > message: > > You must pass in the path to the file to launch. > > ¨Âóáçåìáõîãèåò®òôáòçåôßæéìå¢ > > The above message is what the last piece of Ruby code in this > application told it to return - - I got that part, but .... > > I'm getting frustrated with the code because of the > 'placeholders'-- if that what they are -- and my confusion as if I leave > them as is or plug-in the name of the *.rb (launcher.rb) & the file_type > (rb) etc. etc. etc. (Yule Brenner ref) in place of them: > > What is app_map? Is app the keyword or is app_map the keyword or do I > stick notepad (my text editor) or ruby in its place. Same goes for > reference to 'select_app,' or 'file_type,' 'file_name,' 'app_map...' > What do I do with those? > > The attached file is the 'after' following my attempt at filling in what > I > assume file_name' means. ¨Âèå ãïäå âåìïéó ôè§â´§ > > Any help would be great. I am enthusiastic about learning it, but need a > more thorough explanation of the code snippets they provide in this > tutorial. I am used to reading TSQL and MSSQL. > > Thanks in advance, you've been lovely :) > > > ############################################################ > #!/usr/local/bin/ruby > > # Example application to demonstrate some basic Ruby features > # This code loads a given file into an associated application > > ¨Âìáóó Ìáõîãèåò > ¨Âîä > > launcher = Launcher.new > > def initialize( app_map ) > ¨Âáððßíá ¨Âððßíáð > ¨Âîä > > # Execute the given file using the associate app > ¨Âåæ òõî¨ æéìåßîáí> ¨Âððìéãáôéïî óåìåãôßáððæéìåßîáí> ¨Âùóôåí¨ ¢£ûáððìéãáôéïî£ûæéìåßîáíåý> ¨Âîä > > Given a file, look up the matching application > ¨Âåæ óåìåãôßáððæéìåßîáíå© > ¨Âôùðå æéìåßôùðå¨ æéìåßîáíå© > ¨ÂáððßíáðÛ æôùð> ¨Âîä > > Return the part of the file name string after the last '.' > ¨Âåæ æéìåßôùðå¨ æéìåßîáí> ¨Âéìå®åøôîáíå¨ æéìåßîáí©®çóõâ¯ÞÜ®¯¬ §§ ©®äï÷îãáóå > ¨Âîä > > def help > ¨Âòéîô > ¨Âïõ íõóô ðáóó éî ôèðáôè ôï ôèæéìå ôï ìáõîãè> > ¨Âóáçå£ûß߯ÉÌÅßßôáòçåôßæéì> " > end > > if ARGV.empty? > ¨Âåì> ¨Âøé> else > ¨Âððßíáð> 'html' => 'firefox', > 'rb' => 'gvim', > 'jpg' => 'gimp' > ¨Â > > ¨Â Ìáõîãèåò®îå÷áððßíá> ¨ÂáòçåÁÒÇÖ®êïéî¨ > ¨Â®òõîôáòçåô > end > > > ##################################################### > > Attachments: > http://www.ruby-forum.com/attachment/6039/RubyForum.txt I see some strange things: First of all: initialize, run, select_launcher and file_type definitions should be inside class Launcher ... end, because they should be instance methods of class Launcher. You can remove the launcher = Launcher.new, since you are not using it. After that, I think the application should work, if you call it like: ruby launcher.rb test.html it should launch firefox with test.html as a parameter. Also, the parameter name launcher in the methods run and select_launcher is confusing, since you are not passing the launcher, but the target. So, this is how it would look like (I change other minor things): #!/usr/bin/env ruby class Launcher def initialize(launcher_map) @app_map = launcher_map end # Execute the given file using the associate app def run(file) application = select_launcher(file) system ("#{application} #{file}") end # Given a file, look up the matching application def select_launcher(file) ftype = file_type(file) @app_map [ftype] end # Return the part of the file name string after the last '.' def file_type(file) File.extname(file)[1..-1].downcase end end def help puts "You must pass in the path to the file to launch." puts puts "Usage: #{__FILE__} target_file" end if ARGV.empty? help exit end app_map= {'html' => 'firefox', 'rb' => 'notepad', 'jpg' => 'gimp'} l = Launcher.new( app_map) target = ARGV.join( ' ' ) l.run( target ) Jesus.