Forum: Ruby on Rails memcache in prod vs dev

Posted by badnaam (Guest)
on 2010-09-01 19:28
(Received via mailing list)
I am using memcache for caching in my rails app and currently I have a
dev and a production environment.

I would like to run the dev environment without caching so that I can
debug more easily but I wanna enable the caching in production
obviously. I am using github and capistrano for deployment.

Without doing a check at every statement where I can potentially dig
into the cache, is there any way of handling this more gracefully or
globally?

if env == 'dev' @post = Post.all else //get @post from cache en
Posted by Marnen Laibow-Koser (marnen)
on 2010-09-02 17:29
badnaam wrote:
> I am using memcache for caching in my rails app and currently I have a
> dev and a production environment.
> 
> I would like to run the dev environment without caching so that I can
> debug more easily but I wanna enable the caching in production
> obviously. I am using github and capistrano for deployment.
> 
> Without doing a check at every statement where I can potentially dig
> into the cache, is there any way of handling this more gracefully or
> globally?
> 
> if env == 'dev' @post = Post.all else //get @post from cache en

Rails turns caching off by default in the development environment, if I 
remember correctly.  If not, you can certainly turn it off yourself in 
config/environments/development.rb .

Best,
--
Marnen Laibow-Koser
http://www.marnen.org
marnen@marnen.org
Posted by Tony Primerano (primerano)
on 2010-09-02 18:19
(Received via mailing list)
Assuming you are using standard page/fragement/action caching you can
just set

config.action_controller.perform_caching = false

in your development environment file.  If you are making direct calls
to Rails.cache you can use a cache store stub in development.

I just did this today for my test environment

Details in my post earlier today

http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/b8603c94ac08940a
Posted by badnaam (Guest)
on 2010-09-06 16:39
(Received via mailing list)
I understand how to turn caching on or off. Well let me explain.

let's say if I am using memcache and I have a post listing page that
uses the following method. Now If I want to not use caching in
development I will have to write this method without the CACHE.fetch?
So basically, I am doing a if/else in every method do check if it's
dev or prod and then either get the collection/fragment from the CACHE
or not. This seems ugly, wondering if there is a better way.

def get_all_post
    CACHE.fetch("all_posts") {Post.all}
end
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.