'How to use a variable for a file path? Ruby

Is there the possibility in Ruby to use a variable / string to define a file path?

For example I would like to use the variable location as follow:

location = 'C:\Users\Private\Documents'

#### some code here ####
class Array
  def to_csv(csv_filename)
    require 'csv'
    CSV.open(csv_filename, "wb") do |csv|
      csv << first.keys # adds the attributes name on the first line
      self.each do |hash|
        csv << hash.values
      end
    end
  end
end

array = [{:color => "orange", :quantity => 3},
         {:color => "green", :quantity => 1}]

array.to_csv('location\FileName.csv')


Solution 1:[1]

You can use variable inside string, following way:

array.to_csv("#{location}\FileName.csv")

Solution 2:[2]

You can use File.join, which accepts variables as arguments.

irb(main):001:0> filename = File.basename('/home/gumby/work/ruby.rb')
=> "ruby.rb"
irb(main):002:0> path     = '/home/gumby/work'
=> "/home/gumby/work"
irb(main):003:0> File.join(path, filename)
=> "/home/gumby/work/ruby.rb"

As noted above, if you start embedding slashes in your strings things may get unmanageable in future.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Marius Karnauskas
Solution 2 4a568