Problem : Instance Variable or Application Constant Expiring

Discussion in 'Ruby' started by Jhonny, Nov 17, 2011.

  1. Jhonny

    Jhonny Guest

    Problem : Instance Variable or Application Constant Expiring

    I am parsing an XML, and getting a response object which is quite
    large ,hence I cant store that in Session or cookie.
    I can not regenerate this response as its from a 3rd party Web
    service . Regeneration would spoil the flow of the application.

    I have used 3 approaches .
    @instance_variable
    @@class_variable
    $CONSTANT

    Limitations:
    Application doesn't have a
    - Database
    - Filestore system

    Can someone please let me know a solution by which I can persist a
    large string around 10000 to 25000 characters throughout the
    application, also which is user specific and not same for all users.

    To repeat: I need a way by which I can store a large data(10k -25K
    characters) throughout the application.

    Approach I followed:
    Like mentioned above I have used a $CONSTANT or @@class_variable ,
    this approach works fine with mongrel/webrick both locally or on
    server(linux). however the same piece of code fails on passenger .

    RAILS version (3.0.3 and 3.1.0)
    Ruby (1.9.2)
     
    Jhonny, Nov 17, 2011
    #1
    1. Advertisements

  2. Which is reason of the failure?
     
    Малъ Зануда, Nov 18, 2011
    #2
    1. Advertisements

  3. All these only work if at least the process is the same throughout the
    session. For the instance variable approach you need to make sure the
    same instance handles requests for one session.
    That highly depends on the application container you are using. You
    might be able to store in filesystem (e.g. marshaled) or in some
    specific session store.
    Then you should look up passenger documentation for solutions.

    Kind regards

    robert
     
    Robert Klemme, Nov 19, 2011
    #3
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.