commit: 0f4bc567195d368de596cdeeee6bc0b6507ae95e
parent: 87576e1ab1a4c02f8847e8264e6a62abd36df793
Author: Eugen Rochko <eugen@zeonfederated.com>
Date: Thu, 8 Sep 2016 01:24:26 +0200
Improving production logs, removing n+1 on media attachments in atom,
adding attachments display to static views
Diffstat:
7 files changed, 45 insertions(+), 3 deletions(-)
diff --git a/Gemfile b/Gemfile
@@ -64,4 +64,5 @@ end
group :production do
gem 'rails_12factor'
+ gem 'lograge'
end
diff --git a/Gemfile.lock b/Gemfile.lock
@@ -158,6 +158,10 @@ GEM
letter_opener (1.4.1)
launchy (~> 2.2)
libv8 (3.16.14.15)
+ lograge (0.4.1)
+ actionpack (>= 4, < 5.1)
+ activesupport (>= 4, < 5.1)
+ railties (>= 4, < 5.1)
loofah (2.0.3)
nokogiri (>= 1.5.9)
mail (2.6.4)
@@ -377,6 +381,7 @@ DEPENDENCIES
jbuilder (~> 2.0)
jquery-rails
letter_opener
+ lograge
nokogiri
oj
onebox
diff --git a/app/assets/javascripts/components/components/media_gallery.jsx b/app/assets/javascripts/components/components/media_gallery.jsx
@@ -59,7 +59,7 @@ const MediaGallery = React.createClass({
}
}
- return <a key={attachment.get('id')} href={attachment.get('url')} style={{ boxSizing: 'border-box', position: 'relative', left: left, top: top, right: right, bottom: bottom, float: 'left', textDecoration: 'none', border: 'none', display: 'block', width: `${width}%`, height: `${height}%`, background: `url(${attachment.get('preview_url')}) no-repeat center`, backgroundSize: 'cover', cursor: 'zoom-in' }} />;
+ return <a key={attachment.get('id')} href={attachment.get('url')} target='_blank' style={{ boxSizing: 'border-box', position: 'relative', left: left, top: top, right: right, bottom: bottom, float: 'left', textDecoration: 'none', border: 'none', display: 'block', width: `${width}%`, height: `${height}%`, background: `url(${attachment.get('preview_url')}) no-repeat center`, backgroundSize: 'cover', cursor: 'zoom-in' }} />;
});
return (
diff --git a/app/assets/stylesheets/stream_entries.scss b/app/assets/stylesheets/stream_entries.scss
@@ -158,7 +158,7 @@
font-size: 14px;
padding: 0 10px;
padding-left: 8px;
- padding-bottom: 25px;
+ padding-bottom: 15px;
color: #282c37;
a {
@@ -189,4 +189,33 @@
text-decoration: underline;
}
}
+
+ .media-attachments {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: block;
+ overflow: hidden;
+ padding-left: 10px;
+
+ li {
+ display: block;
+ float: left;
+ width: 120px;
+ height: 100px;
+ border-radius: 4px;
+ margin-right: 4px;
+ margin-bottom: 25px;
+
+ a {
+ display: block;
+ width: 120px;
+ height: 100px;
+ border-radius: 4px;
+ background-position: center;
+ background-repeat: none;
+ background-size: cover;
+ }
+ }
+ }
}
diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb
@@ -11,7 +11,7 @@ class AccountsController < ApplicationController
format.atom do
@entries = @account.stream_entries.order('id desc').with_includes.paginate_by_max_id(20, params[:max_id] || nil)
- ActiveRecord::Associations::Preloader.new.preload(@entries.select { |a| a.activity_type == 'Status' }, activity: [:mentions, reblog: :account, thread: :account])
+ ActiveRecord::Associations::Preloader.new.preload(@entries.select { |a| a.activity_type == 'Status' }, activity: [:mentions, :media_attachments, reblog: :account, thread: :account])
ActiveRecord::Associations::Preloader.new.preload(@entries.select { |a| a.activity_type == 'Favourite' }, activity: [:account, :status])
ActiveRecord::Associations::Preloader.new.preload(@entries.select { |a| a.activity_type == 'Follow' }, activity: :target_account)
end
diff --git a/app/views/stream_entries/_status.html.haml b/app/views/stream_entries/_status.html.haml
@@ -38,6 +38,10 @@
.content= content_for_status(proper_status(status))
+ %ul.media-attachments
+ - status.media_attachments.each do |media|
+ %li.transparent-background= link_to '', media.file.url, style: "background-image: url(#{media.file.url(:small)})", target: '_blank'
+
- if include_threads
- status.descendants.with_includes.with_counters.each do |status|
= render partial: 'status', locals: { status: status, is_successor: true }
diff --git a/config/environments/production.rb b/config/environments/production.rb
@@ -64,6 +64,9 @@ Rails.application.configure do
# Use default logging formatter so that PID and timestamp are not suppressed.
config.log_formatter = ::Logger::Formatter.new
+ # Better log formatting
+ config.lograge.enabled = true
+
# Do not dump schema after migrations.
config.active_record.dump_schema_after_migration = false