Class variables and servers

In my local development environment I define a class variabel
@@has:flock? in a modele that is included in controllers so I can
reset this variable in each controller that has to change it
The code in the module is
module CrudActions
@@page_records=15
@@has_flock = true

def index
if @@has_flock : paginate_conditions=[‘flock_id=?
‘,current_user.flock.id]
else paginate_conditions=’’ end

…and in the controller
class DiswebUsersController < ApplicationController
include CrudActions
@@page_records=15

That works fine locally but when I deploy the application and use an
apache server it does not work anymore (@@has_flock? is false) in the
method index
Then the variable is not set in the module
Any idees of what is happening ?
I can fix it by defining a method, but I wauld like to know if that is
necessery
Any help is appreciate?

Hi Hans,

processes don’t know each other and i.g. you can’t control which
instance of
your Application responds to the next request, this means:

Apache (T=0)
|

  • < Application (Process 0)
    | @@flock = nil
    |
    |
  • Fork’d Application (Process 1)
    | @@flock = nil
    |

  • Fork’d Application (Process 2)
    @@flock = nil


Apache (T=1)
|

  • < Application (Process 0)
    | @@flock = nil
    |
    |
  • Fork’d Application (Process 1)
    | @@flock = nil
    |

  • Fork’d Application (Process 2) < - REQUEST 1 200
    @@flock = nil


Apache (T=2)
|

  • < Application (Process 0)
    | @@flock = nil
    |
    |
  • Fork’d Application (Process 1) < - REQUEST 2 500
    | @@flock = nil
    |

  • Fork’d Application (Process 2)
    @@flock = true

If you use Mongrel or Thin whereas only a single Process for your
application
exists the class variable is always the same.

Thin (T=0, Process 0)
|

  • <> Application
    @@flock = nil

Thin (T=1, Process 0)
|

  • <> Application < - REQUEST 1 200
    @@flock = nil

Thin (T=2, Process 0)
|

  • <> Application < - REQUEST 2 200
    @@flock = true

Regards
Florian

Am 14.09.2009 um 11:33 schrieb Hans: