how to get instance variables in another action in rails 3

In my controller show method i have two instance variables which have
large amount of data and take much time to fetch from remote system.
shown below
def show
    @graph = Koala::Facebook::GraphAPI.new(session[:fbuser]
["credentials"]["token"])
    @friends = @graph.get_connections("me", "friends")
    @friends =@friends.to_a

end

in the same controller I have another action which requires same data.
shown below

def list

    @graph ||= Koala::Facebook::GraphAPI.new(session[:fbuser]
["credentials"]["token"])
    @friends ||= @graph.get_connections("me", "friends")
    @friends|| =@friends.to_a

  end

which are loading every time even i used || (or) in fetching.
Any help regarding to re usage of instance variables of one action in
another action of same controller.

Thank You

Yes Because u d onot know filter
Please read before after around filter u will get

I know filter concept, but how we can apply that concept hear to work
with instance variables? give me one example please .

I think the only way would be to cache the data locally in some way,
either save it in a file or in the database and then retrieve it in
the next action.

If you are using the data to generate the same partial display then
you may be able to use the built in caching mechanism in rails. See
the Rails Guide on caching. In fact it may be worth looking at that
anyway.

Colin

Yes if i use catching in my application view the size limit exceeding . even I tried with passing these values throw params[:var] argument also failing Too large http request error.
I also tried with Class variables to store data like @@graph and @@friends but no use those variables not at all storing data. any other way please.

In my controller show method i have two instance variables which have
large amount of data and take much time to fetch from remote system.
shown below
def show
@graph = Koala::Facebook::GraphAPI.new(session[:fbuser]
["credentials"]["token"])
@friends = @graph.get_connections("me", "friends")
@friends =@friends.to_a

end

in the same controller I have another action which requires same data.
shown below

def list

@graph ||= Koala::Facebook::GraphAPI.new(session[:fbuser]
["credentials"]["token"])
@friends ||= @graph.get_connections("me", "friends")
@friends|| =@friends.to_a

end

which are loading every time even i used || (or) in fetching.
Any help regarding to re usage of instance variables of one action in
another action of same controller.

I think the only way would be to cache the data locally in some way,
either save it in a file or in the database and then retrieve it in
the next action.

If you are using the data to generate the same partial display then
you may be able to use the built in caching mechanism in rails. See
the Rails Guide on caching. In fact it may be worth looking at that
anyway.

Colin

Yes if i use catching in my application view the size limit exceeding

What do you mean catching? If you mean the rails caching then there
is no size limit.

. even
I tried with passing these values throw params[:var] argument also failing
Too large http request error.
I also tried with Class variables to store data like @@graph and @@friends
but no use those variables not at all storing data. any other way please.

Yes, the ways I suggested, in a file, database, possibly using the
rails caching to help. Have you read the guide?

Colin

> Yes if i use catching in my application view the size limit exceeding

What do you mean catching? If you mean the rails caching then there
is no size limit.

Depends on the store - for example memcache won't store anything
larger than 1Mb
It might be preferable to store the objects that are slow to fetch
rather than the view itself, for example

@friends = Rails.cache.fetch("friends_for_#{session[:fbuser]
["credentials"]["token"]}") do
  graph = Koala::Facebook::GraphAPI.new(session[:fbuser]
["credentials"]["token"])
  graph.get_connections("me", "friends").to_a
end

Fred

> Yes if i use catching in my application view the size limit exceeding

What do you mean catching? If you mean the rails caching then there
is no size limit.

Depends on the store - for example memcache won't store anything
larger than 1Mb

I stand corrected, thanks Fred. I have only used file caching. Once
again it is shown that a little knowledge is a dangerous thing.

It might be preferable to store the objects that are slow to fetch
rather than the view itself, for example

@friends = Rails.cache.fetch("friends_for_#{session[:fbuser]
["credentials"]["token"]}") do
graph = Koala::Facebook::GraphAPI.new(session[:fbuser]
["credentials"]["token"])
graph.get_connections("me", "friends").to_a
end

That looks a good way to go.

Colin