Forum: Ruby on Rails Creating a file and saving in public directory

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
640f3ccd1c6308ccdf46950d0d4ae140?d=identicon&s=25 Ryan Mckenzie (mckenzie)
on 2008-11-13 22:26
Hello,

I'm fairly new to Ruby on Rails.

I have a model called Report and I'm trying to create a text file that
is saved in a /public/report directory.

I've had a look at the ruby api but I can't seem to get this working.

The current code I have is:

#report.rb
class Report < ActiveRecord::Base

  after_save :write_file


  def write_file
    if @file_data
      File.makedirs("#{RAILS_ROOT}/report")
      File.open("#{RAILS_ROOT}/report/waiting.adc", "w") { |file|
file.write("hello world") }
    end
  end
end

#report_controller.rb

def new
    @report = File.new
end

def create
      if @report.save
        flash[:notice]='report'
      else
        render :action=>'new'
      end
end


Thank you for your time.
D69d23d8e811e8ab2a8593380d6ede63?d=identicon&s=25 Jeff Emminger (jemminger)
on 2008-11-13 23:14
(Received via mailing list)
try

      File.makedirs("#{RAILS_ROOT}/public/report")
      File.open("#{RAILS_ROOT}/public/report/waiting.adc", "w") { |
file|
file.write("hello world") }
    end


On Nov 13, 4:26 pm, Ryan Mckenzie <rails-mailing-l...@andreas-s.net>
640f3ccd1c6308ccdf46950d0d4ae140?d=identicon&s=25 Ryan Mckenzie (mckenzie)
on 2008-11-14 00:06
Hi Jeff,

I've changed the code to what you have suggested only it has not worked.
I can't seem to find anywhere on Google from searching a solution to
this.

Is there a better way of writing files to a directory?

Thank you for your help.
Af2ce6689213fdb78913a9662b18da6b?d=identicon&s=25 Rick (Guest)
on 2008-11-14 09:30
(Received via mailing list)
With Ruby V1.87p72 on MacOS X 10.5

 662 > cat junk/newbe
cat: junk/newbe: No such file or directory

 663 > irb
irb(main):001:0> Dir.mkdir("junk")
=> 0
irb(main):002:0> Dir.chdir("junk")
=> 0
irb(main):003:0> f = File.new("newbe", "w+")
=> #<File:newbe>
irb(main):004:0> f.write("hello world\n")
=> 12
irb(main):005:0> f.close
=> nil
irb(main):006:0> quit

 664 > cat junk/newbe
hello world


Rick

On Nov 13, 11:26 am, Ryan Mckenzie <rails-mailing-l...@andreas-s.net>
This topic is locked and can not be replied to.