Opening file from directory in ruby using File.open
cgi, directory, file-io, ruby
Solution
The path isn't getting expanded, but it does when you run it through the command line. I believe in unix systems, the path is expanded prior to running the call, meaning:
ruby file.rb ~/path/to/file
is actually expanded to
ruby file.rb /home/user/path/to/file
You can validate this by running the following in your terminal (or create a ruby file with `p ARGV[0]` and run that):
echo "p ARGV[0]" | ruby "" ~/path/to/file #/home/user/path/to/file
You can use File.expand_path to change `~` into `/home/user`
data_file = '~/path/to/file.txt'
file = File.open(File.expand_path(data_file), 'r')
Problem
I am relatively new to Ruby, I am trying to open a file in a way like: ``` #! /usr/bin/env ruby data_file = '~/path/to/file.txt' file = File.open(data_file, 'r') ``` however I get "No such file or directory" (the file does exist in that directory). It works if I put that path to the file as a command line argument such as: ``` #! /usr/bin/env ruby file = File.open(ARGV[0], 'r') ``` and then run from the command line like: ruby script.cgi ~/path/to/file.txt Any ideas how to get it to work the first way?