Enable caching for some rabl views
This commit is contained in:
		| @@ -205,7 +205,7 @@ GEM | ||||
|     pry-rails (0.3.4) | ||||
|       pry (>= 0.9.10) | ||||
|     puma (3.6.0) | ||||
|     rabl (0.13.0) | ||||
|     rabl (0.13.1) | ||||
|       activesupport (>= 2.3.14) | ||||
|     rack (2.0.1) | ||||
|     rack-attack (5.0.1) | ||||
|   | ||||
| @@ -2,7 +2,7 @@ class Favourite < ApplicationRecord | ||||
|   include Streamable | ||||
|  | ||||
|   belongs_to :account, inverse_of: :favourites | ||||
|   belongs_to :status,  inverse_of: :favourites | ||||
|   belongs_to :status,  inverse_of: :favourites, touch: true | ||||
|  | ||||
|   validates :status_id, uniqueness: { scope: :account_id } | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ class Status < ApplicationRecord | ||||
|   belongs_to :account, -> { with_counters }, inverse_of: :statuses | ||||
|  | ||||
|   belongs_to :thread, foreign_key: 'in_reply_to_id', class_name: 'Status', inverse_of: :replies | ||||
|   belongs_to :reblog, foreign_key: 'reblog_of_id', class_name: 'Status', inverse_of: :reblogs | ||||
|   belongs_to :reblog, foreign_key: 'reblog_of_id', class_name: 'Status', inverse_of: :reblogs, touch: true | ||||
|  | ||||
|   has_many :favourites, inverse_of: :status, dependent: :destroy | ||||
|   has_many :reblogs, foreign_key: 'reblog_of_id', class_name: 'Status', inverse_of: :reblog, dependent: :destroy | ||||
|   | ||||
| @@ -8,6 +8,6 @@ | ||||
|   - if @followers.empty? | ||||
|     = render partial: 'nothing_here' | ||||
|   - else | ||||
|     = render partial: 'grid_card', collection: @followers, as: :account | ||||
|     = render partial: 'grid_card', collection: @followers, as: :account, cached: true | ||||
|  | ||||
| = will_paginate @followers, pagination_options | ||||
|   | ||||
| @@ -9,6 +9,6 @@ | ||||
|   - if @following.empty? | ||||
|     = render partial: 'nothing_here' | ||||
|   - else | ||||
|     = render partial: 'grid_card', collection: @following, as: :account | ||||
|     = render partial: 'grid_card', collection: @following, as: :account, cached: true | ||||
|  | ||||
| = will_paginate @following, pagination_options | ||||
|   | ||||
| @@ -12,6 +12,6 @@ | ||||
|     = render partial: 'nothing_here' | ||||
| - else | ||||
|   .activity-stream | ||||
|     = render partial: 'stream_entries/status', collection: @statuses, as: :status | ||||
|     = render partial: 'stream_entries/status', collection: @statuses, as: :status, cached: true | ||||
|  | ||||
| = will_paginate @statuses, pagination_options | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| object @account | ||||
| cache @account | ||||
|  | ||||
| attributes :id, :username, :acct, :display_name, :note | ||||
|  | ||||
|   | ||||
							
								
								
									
										4
									
								
								app/views/api/v1/statuses/_media.rabl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								app/views/api/v1/statuses/_media.rabl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| attributes :id, :remote_url, :type | ||||
|  | ||||
| node(:url)         { |media| full_asset_url(media.file.url) } | ||||
| node(:preview_url) { |media| full_asset_url(media.file.url(:small)) } | ||||
							
								
								
									
										3
									
								
								app/views/api/v1/statuses/_mention.rabl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								app/views/api/v1/statuses/_mention.rabl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| node(:url)  { |mention| TagManager.instance.url_for(mention.account) } | ||||
| node(:acct) { |mention| mention.account.acct } | ||||
| node(:id)   { |mention| mention.account_id } | ||||
							
								
								
									
										21
									
								
								app/views/api/v1/statuses/_show.rabl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								app/views/api/v1/statuses/_show.rabl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| attributes :id, :created_at, :in_reply_to_id | ||||
|  | ||||
| node(:uri)              { |status| TagManager.instance.uri_for(status) } | ||||
| node(:content)          { |status| Formatter.instance.format(status) } | ||||
| node(:url)              { |status| TagManager.instance.url_for(status) } | ||||
| node(:reblogs_count)    { |status| status.reblogs_count } | ||||
| node(:favourites_count) { |status| status.favourites_count } | ||||
| node(:favourited, if: proc { !current_account.nil? }) { |status| defined?(@favourites_map) ? !!@favourites_map[status.id] : current_account.favourited?(status) } | ||||
| node(:reblogged,  if: proc { !current_account.nil? }) { |status| defined?(@reblogs_map)    ? !!@reblogs_map[status.id]    : current_account.reblogged?(status) } | ||||
|  | ||||
| child :account do | ||||
|   extends 'api/v1/accounts/show' | ||||
| end | ||||
|  | ||||
| child :media_attachments, object_root: false do | ||||
|   extends 'api/v1/statuses/_media' | ||||
| end | ||||
|  | ||||
| child :mentions, object_root: false do | ||||
|   extends 'api/v1/statuses/_mention' | ||||
| end | ||||
| @@ -1,31 +1,8 @@ | ||||
| object @status | ||||
| attributes :id, :created_at, :in_reply_to_id | ||||
| cache @status | ||||
|  | ||||
| node(:uri)              { |status| TagManager.instance.uri_for(status) } | ||||
| node(:content)          { |status| Formatter.instance.format(status) } | ||||
| node(:url)              { |status| TagManager.instance.url_for(status) } | ||||
| node(:reblogs_count)    { |status| status.reblogs_count } | ||||
| node(:favourites_count) { |status| status.favourites_count } | ||||
| node(:favourited, if: proc { !current_account.nil? }) { |status| defined?(@favourites_map) ? !!@favourites_map[status.id] : current_account.favourited?(status) } | ||||
| node(:reblogged,  if: proc { !current_account.nil? }) { |status| defined?(@reblogs_map)    ? !!@reblogs_map[status.id]    : current_account.reblogged?(status) } | ||||
| extends 'api/v1/statuses/_show' | ||||
|  | ||||
| child :reblog => :reblog do | ||||
|   extends('api/v1/statuses/show') | ||||
| end | ||||
|  | ||||
| child :account do | ||||
|   extends('api/v1/accounts/show') | ||||
| end | ||||
|  | ||||
| child :media_attachments, object_root: false do | ||||
|   attributes :id, :remote_url, :type | ||||
|  | ||||
|   node(:url)         { |media| full_asset_url(media.file.url) } | ||||
|   node(:preview_url) { |media| full_asset_url(media.file.url(:small)) } | ||||
| end | ||||
|  | ||||
| child :mentions, object_root: false do | ||||
|   node(:url)  { |mention| TagManager.instance.url_for(mention.account) } | ||||
|   node(:acct) { |mention| mention.account.acct } | ||||
|   node(:id)   { |mention| mention.account_id } | ||||
|   extends 'api/v1/statuses/_show' | ||||
| end | ||||
|   | ||||
		Reference in New Issue
	
	Block a user