def show
return render "projects/empty" unless @project.repo_exists?
limit = (params[:limit] || 20).to_i
- @activities = @project.updates(limit)
+ @activities = @project.cached_updates(limit)
end
#
last_activity.try(:created_at)
end
+ # Get project updates from cache
+ # or calculate.
+ def cached_updates(limit, expire = 2.minutes)
+ activities_key = "project_#{id}_activities"
+ cached_activities = Rails.cache.read(activities_key)
+ if cached_activities
+ activities = cached_activities
+ else
+ activities = updates(limit)
+ Rails.cache.write(activities_key, activities, :expires_in => 60.seconds)
+ end
+
+ activities
+ end
+
+ # Get 20 events for project like
+ # commits, issues or notes
def updates(n = 3)
[
fresh_commits(n),
# config.logger = SyslogLogger.new
# Use a different cache store in production
- # config.cache_store = :mem_cache_store
+ config.cache_store = :memory_store
# Enable serving of images, stylesheets, and JavaScripts from an asset server
# config.action_controller.asset_host = "http://assets.example.com"