Non-Hard Coded File.open(newFile)

Like a lot of people I'm new to Ruby and I'm trying to do something I
thought would be pretty simple. I want the user to give me input in the
form of a filename and then subsequently open the file. Here is what I
have so far:

class FileHandler

  def initialize()
    @fileToParse = fileToParse #I get user input in the form of gets in
                               #another class.
    if File.new(fileToParse)
      puts 'File successfully opened.'
    else
      puts 'File failed to open.'
      Kernel.exit

    end
  end
end

However, that won't work. Doing something like
File.new("C:/Users/grant/Desktop/test.txt") works just fine though. The
way I'm currently doing it throws the following error:

F:/Programming/eclipseWorkspace/CSE_655/file_handler.rb:8:in
`initialize': Invalid argument - C:/Users/grant/Desktop/test.txt
(Errno::EINVAL)

···

--
Posted via http://www.ruby-forum.com/.

Like a lot of people I'm new to Ruby and I'm trying to do something I
thought would be pretty simple. I want the user to give me input in the
form of a filename and then subsequently open the file. Here is what I
have so far:

def initialize()
@fileToParse = fileToParse #I get user input in the form of gets in
#another class.

Are you removing the newline at the end of the string from `gets` ?

F:/Programming/eclipseWorkspace/CSE_655/file_handler.rb:8:in
`initialize': Invalid argument - C:/Users/grant/Desktop/test.txt

Probably actually "C:/Users/grant/Desktop/test.txt\n" right here ^

(Errno::EINVAL)

HTH,

···

On Sat, Oct 23, 2010 at 6:35 AM, Grant Curell <grantcurell@gmail.com> wrote:
--
Hassan Schroeder ------------------------ hassan.schroeder@gmail.com
twitter: @hassan

Your code seems mostly correct, but I don't exactly understand what
fileToParse is. Is it a call to a fileToParse method (which in turn uses geets
to retrieve the file name) or a variable? In the first case, I guess the if
line should be

if File.new(@fileToParse) #note the @

Otherwise, the user will be asked to enter the file name twice.

If fileToParse is a variable, instead, where does it come from?

Also, it would be useful if you pointed out which is line 8 on your program.
If I assume the first line is

class FileHandler

then line 8 is 'else', which I doubt could give you such an error.

Stefano

···

On Saturday 23 October 2010, Grant Curell wrote:

>Like a lot of people I'm new to Ruby and I'm trying to do something I
>thought would be pretty simple. I want the user to give me input in the
>form of a filename and then subsequently open the file. Here is what I
>have so far:
>
>class FileHandler
>
> def initialize()
> @fileToParse = fileToParse #I get user input in the form of gets in
> #another class.
> if File.new(fileToParse)
> puts 'File successfully opened.'
> else
> puts 'File failed to open.'
> Kernel.exit
>
> end
> end
>end
>
>However, that won't work. Doing something like
>File.new("C:/Users/grant/Desktop/test.txt") works just fine though. The
>way I'm currently doing it throws the following error:
>
>F:/Programming/eclipseWorkspace/CSE_655/file_handler.rb:8:in
>`initialize': Invalid argument - C:/Users/grant/Desktop/test.txt
>(Errno::EINVAL)

Thank you so much Hassan, that fix seemed so obvious after you said it
lol. I just changed line 8 to if File.new(fileToParse.delete "\n") and
it worked just fine. Not sure if I should ask this here but just out of
curiosity does the debugger for 1.9.2 not work? I'm running the eclipse
plug in right now and whenever I try to debug it just vomits all over
itself. Browsed around the web and saw it mentioned a couple of times.

···

--
Posted via http://www.ruby-forum.com/.

Usually after gets you want to use strip to remove all leading
and trailing whitespace:

file_name = gets.strip

···

On Oct 23, 8:35 am, Grant Curell <grantcur...@gmail.com> wrote:

Like a lot of people I'm new to Ruby and I'm trying to do something I
thought would be pretty simple. I want the user to give me input in the
form of a filename and then subsequently open the file. Here is what I
have so far:

class FileHandler

def initialize()
@fileToParse = fileToParse #I get user input in the form of gets in

Thank you so much Hassan, that fix seemed so obvious after you said it
lol. I just changed line 8 to if File.new(fileToParse.delete "\n")

Good, but you should probably look at fileToParse.chomp for a more
platform-agnostic approach :slight_smile:

Not sure if I should ask this here but just out of
curiosity does the debugger for 1.9.2 not work? I'm running the eclipse
plug in right now

Sorry, no idea about Eclipse.

···

On Sat, Oct 23, 2010 at 8:17 AM, Grant Curell <grantcurell@gmail.com> wrote:

--
Hassan Schroeder ------------------------ hassan.schroeder@gmail.com
twitter: @hassan