Production gotcha: Rails send_file seems to corrupt files

What’s wrong with the following Rails code?

class ResourceController < ApplicationController
  DEFAULT_OPTIONS = { :disposition => 'inline' }

  def send_file1
    send_file 'flash1.swf', DEFAULT_OPTIONS
  end

  def send_file2
    send_file 'flash2.swf', DEFAULT_OPTIONS
  end
end

This code works perfectly in development mode. In production mode retrieving the two different files the second file gets corrupt / wrong…

After a long search I looked in the rails code:

  def send_file(path, options = {}) #:doc:
    raise MissingFile, "Cannot read file #{path}" unless File.file?(path) and File.readable?(path)

    options[:length]   ||= File.size(path)
    options[:filename] ||= File.basename(path) unless options[:url_based_filename]
    send_file_headers! options
    #....
  end

OOops… the send_file code modifies my class constant!
And after the first call the length and filename is placed in the class constant…
This is no problem in development mode because the classes are reloaded every time. In production mode every mongrel server has it’s own instance…

Victory: Installing JBuilder 2006 on VISTA

No I really don’t like JBuilder that much. But I really hate the workspace thing in Eclipse.

The problem:
At the company I work for, we have a lot of modules written in JBuilder. The gui designer layouts are not compatible with any other IDE. Even The newest JBuilder, which simply is Eclipse doesn’t support these gui designs…
Borland: This is a VERY BAD company policy…!!!
We will migrate the GUI to netbean.. Ha!

JBuilder 2006 doesn’t work in Vista anymore
JBuilder 2006 doesn’t activate anymore

The solution for Vista Install:

  • Before installing disable the fancy vista layout and select classic windows (else you have invisible checkboxes in the setup)
  • Run setup as Administrator! (Right mouseclick exe, “Run as Administator”
  • Install JBuilder the normal way
  • Download the latest JDK1.5 and replace the JDK1.5 in the JBuilder director
  • In the startmenu, rightmouse click on the Jbuilder start icon, choose properties and set the compatibility mode to Windows XP. Disable visual themes. And enable ” Run as admninistrator”

The solution for activating:

  • Make sure you have the registrationmail/file: reg674.txt
  • Copy this file in your user directory: C:\Users\username (in vista) or c:\Documents and Settings\username (in windows xp)
  • Set the date of your PC to the year and month you’ve downloaded the file. My working date is 25 october 2005 (I guess the activation is +/- 30 days valid)
  • Start JBuilder and activate with the given file
  • Run JBuilder and exit it again
  • restore the computer date
  • et voila.. JBuilder works !

UPDATE 2008-11-07

Working with JBuilder I found it had some redraw problems. Scrolling didn’t go wel…
I solved this by setting the following lines in the file bin\jdk.config


#vmparam -Dsun.java2d.ddoffscreen=false
vmparam -Dsun.java2d.noddraw
vmparam -Dsun.java2d.d3d=false

I found the solution for these redraw problems here.