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:
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` ?
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.
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