On Sun, Oct 18, 2009 at 01:10, Mohit Sindhwani <[email protected]> wrote:
>
> Hi, I'm sorry if this is slightly OT, but I'm trying to find a way to do
> the following.  I have a bunch of processes that generate regular update
> files.  Each file may be between 100KB - 4MB in size.
>
> On the other side, I have people who want to pick up the most recent
> version of this file.  So, I need to give them a fixed URL to the file.
> When they make a request, they would like to get only the most recent
> file.  Initially, I thought that something like FTP would work, but I
> run into the problem that if a request comes in when the file is being
> updated, the client may not get a valid file.
>
> The other extreme is to have an upload controller and a download
> controller and then store the file in a database, so that it can be
> served up through the database.  The database serializes it so that I
> don't have to worry.  But, since the files can be large, it seems a bit
> of a waste to use this approach.
>
> Is there a better way?  Anything that you would recommend?
>
> Thanks,
> Mohit.
>

A common approach used for something like this is to have a "current"
symlink, and update it, whenever you have a newer file.

Eg:
$ touch some-file-v1
$ ln -s some-file-v1 current-version
$ touch some-file-v2
$ ln -sf some-file-v2 current-version

If you give people the URL to "current-version", and only update the
symlink after you've created the new version, then they won't be
downloading a file before it's completely written out to disk.

We use the "store the files in the DB" approach for a few of our
projects at $work, and that works pretty well for us.  It's not really
a waste, especially if you plan on having multiple "physical"
webservers.

-Jacob

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to