Fix Sidekiq pooling issues. Remove API docs from homepage, replace with
a basic home timeline
This commit is contained in:
		@@ -124,99 +124,99 @@
 | 
			
		||||
    background: #d9e1e8;
 | 
			
		||||
    border-radius: 0 4px 4px 0;
 | 
			
		||||
 | 
			
		||||
    .dashboard__content__content {
 | 
			
		||||
      padding: 20px;
 | 
			
		||||
      color: #282c37;
 | 
			
		||||
      line-height: 18px;
 | 
			
		||||
 | 
			
		||||
      h3 {
 | 
			
		||||
        font-size: 14px;
 | 
			
		||||
        font-weight: 500;
 | 
			
		||||
        margin-bottom: 15px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      p {
 | 
			
		||||
        margin-bottom: 15px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      samp {
 | 
			
		||||
        font-family: 'Roboto Mono', monospace;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      ul {
 | 
			
		||||
        list-style: circle;
 | 
			
		||||
        padding-left: 15px;
 | 
			
		||||
        margin-bottom: 15px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .table {
 | 
			
		||||
        width: 100%;
 | 
			
		||||
 | 
			
		||||
        th {
 | 
			
		||||
          font-weight: 500;
 | 
			
		||||
          text-align: left;
 | 
			
		||||
          border-bottom: 1px solid lighten(#282c37, 55%);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        th, td {
 | 
			
		||||
          padding: 5px 0;
 | 
			
		||||
          line-height: 18px;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      a {
 | 
			
		||||
        color: #2b90d9;
 | 
			
		||||
        text-decoration: underline;
 | 
			
		||||
 | 
			
		||||
        &:hover {
 | 
			
		||||
          text-decoration: none;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .btn {
 | 
			
		||||
        display: inline-block;
 | 
			
		||||
        border: 0;
 | 
			
		||||
        background: #2b90d9;
 | 
			
		||||
        border-radius: 16px;
 | 
			
		||||
        padding: 6px 16px;
 | 
			
		||||
        font-size: 12px;
 | 
			
		||||
        font-weight: 500;
 | 
			
		||||
        color: #fff;
 | 
			
		||||
        cursor: pointer;
 | 
			
		||||
        font-family: 'Roboto', sans-serif;
 | 
			
		||||
        text-decoration: none;
 | 
			
		||||
 | 
			
		||||
        &:hover {
 | 
			
		||||
          background: lighten(#2b90d9, 5%);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        &.btn-iconized {
 | 
			
		||||
          font-size: 16px;
 | 
			
		||||
          font-weight: 400;
 | 
			
		||||
          width: 24px;
 | 
			
		||||
          text-align: center;
 | 
			
		||||
          padding: 10px 7px;
 | 
			
		||||
          border-radius: 100px;
 | 
			
		||||
          box-shadow: 0 0 15px rgba(0, 0, 0, 0.2);
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      hr {
 | 
			
		||||
        clear: both;
 | 
			
		||||
        border: 0;
 | 
			
		||||
        padding: 0;
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        height: 0;
 | 
			
		||||
        margin: 30px 0;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .dashboard__top-bar {
 | 
			
		||||
      border-radius: 0 4px 0 0;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.dashboard__content__content {
 | 
			
		||||
  padding: 20px;
 | 
			
		||||
  color: #282c37;
 | 
			
		||||
  line-height: 18px;
 | 
			
		||||
 | 
			
		||||
  h3 {
 | 
			
		||||
    font-size: 14px;
 | 
			
		||||
    font-weight: 500;
 | 
			
		||||
    margin-bottom: 15px;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  p {
 | 
			
		||||
    margin-bottom: 15px;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  samp {
 | 
			
		||||
    font-family: 'Roboto Mono', monospace;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  ul {
 | 
			
		||||
    list-style: circle;
 | 
			
		||||
    padding-left: 15px;
 | 
			
		||||
    margin-bottom: 15px;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .table {
 | 
			
		||||
    width: 100%;
 | 
			
		||||
 | 
			
		||||
    th {
 | 
			
		||||
      font-weight: 500;
 | 
			
		||||
      text-align: left;
 | 
			
		||||
      border-bottom: 1px solid lighten(#282c37, 55%);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    th, td {
 | 
			
		||||
      padding: 5px 0;
 | 
			
		||||
      line-height: 18px;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  a {
 | 
			
		||||
    color: #2b90d9;
 | 
			
		||||
    text-decoration: underline;
 | 
			
		||||
 | 
			
		||||
    &:hover {
 | 
			
		||||
      text-decoration: none;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .btn {
 | 
			
		||||
    display: inline-block;
 | 
			
		||||
    border: 0;
 | 
			
		||||
    background: #2b90d9;
 | 
			
		||||
    border-radius: 16px;
 | 
			
		||||
    padding: 6px 16px;
 | 
			
		||||
    font-size: 12px;
 | 
			
		||||
    font-weight: 500;
 | 
			
		||||
    color: #fff;
 | 
			
		||||
    cursor: pointer;
 | 
			
		||||
    font-family: 'Roboto', sans-serif;
 | 
			
		||||
    text-decoration: none;
 | 
			
		||||
 | 
			
		||||
    &:hover {
 | 
			
		||||
      background: lighten(#2b90d9, 5%);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    &.btn-iconized {
 | 
			
		||||
      font-size: 16px;
 | 
			
		||||
      font-weight: 400;
 | 
			
		||||
      width: 24px;
 | 
			
		||||
      text-align: center;
 | 
			
		||||
      padding: 10px 7px;
 | 
			
		||||
      border-radius: 100px;
 | 
			
		||||
      box-shadow: 0 0 15px rgba(0, 0, 0, 0.2);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  hr {
 | 
			
		||||
    clear: both;
 | 
			
		||||
    border: 0;
 | 
			
		||||
    padding: 0;
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    height: 0;
 | 
			
		||||
    margin: 30px 0;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.simple_form {
 | 
			
		||||
  .form-actions {
 | 
			
		||||
    padding-top: 20px;
 | 
			
		||||
 
 | 
			
		||||
@@ -4,5 +4,6 @@ class HomeController < ApplicationController
 | 
			
		||||
  before_action :authenticate_user!
 | 
			
		||||
 | 
			
		||||
  def index
 | 
			
		||||
    @timeline = Feed.new(:home, current_user.account).get(10, params[:max_id])
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
@@ -4,111 +4,7 @@
 | 
			
		||||
  .form-actions
 | 
			
		||||
    = f.button :submit, 'Post update'
 | 
			
		||||
 | 
			
		||||
%hr/
 | 
			
		||||
 | 
			
		||||
%h3 OAuth2
 | 
			
		||||
%p All API methods require a valid access token.
 | 
			
		||||
 | 
			
		||||
%h3 Statuses
 | 
			
		||||
%ul.api-descriptions
 | 
			
		||||
  %li
 | 
			
		||||
    .address
 | 
			
		||||
      %samp.method GET
 | 
			
		||||
      %samp /api/statuses/home
 | 
			
		||||
    .description
 | 
			
		||||
      Returns user's home timeline
 | 
			
		||||
  %li
 | 
			
		||||
    .address
 | 
			
		||||
      %samp.method GET
 | 
			
		||||
      %samp /api/statuses/mentions
 | 
			
		||||
    .description
 | 
			
		||||
      Returns user's mentions timeline
 | 
			
		||||
  %li
 | 
			
		||||
    .address
 | 
			
		||||
      %samp.method POST
 | 
			
		||||
      %samp /api/statuses
 | 
			
		||||
    .options
 | 
			
		||||
      Options:
 | 
			
		||||
      = succeed ',' do
 | 
			
		||||
        %samp status
 | 
			
		||||
      %samp in_reply_to_id
 | 
			
		||||
    .description
 | 
			
		||||
      Creates a new status, optionally as a response to another, from user's account. Returns the new status.
 | 
			
		||||
  %li
 | 
			
		||||
    .address
 | 
			
		||||
      %samp.method GET
 | 
			
		||||
      %samp /api/statuses/:id
 | 
			
		||||
    .description
 | 
			
		||||
      Returns a single status
 | 
			
		||||
  %li
 | 
			
		||||
    .address
 | 
			
		||||
      %samp.method POST
 | 
			
		||||
      %samp /api/statuses/:id/reblog
 | 
			
		||||
    .description
 | 
			
		||||
      Reblogs a status from user's account. Returns the target status.
 | 
			
		||||
  %li
 | 
			
		||||
    .address
 | 
			
		||||
      %samp.method POST
 | 
			
		||||
      %samp /api/statuses/:id/favourite
 | 
			
		||||
    .description
 | 
			
		||||
      Favourites a status from user's account. Returns the target status.
 | 
			
		||||
 | 
			
		||||
%h3 Accounts
 | 
			
		||||
%ul.api-descriptions
 | 
			
		||||
  %li
 | 
			
		||||
    .address
 | 
			
		||||
      %samp.method GET
 | 
			
		||||
      %samp /api/accounts/:id
 | 
			
		||||
    .description
 | 
			
		||||
      Returns a single account
 | 
			
		||||
  %li
 | 
			
		||||
    .address
 | 
			
		||||
      %samp.method GET
 | 
			
		||||
      %samp /api/accounts/:id/statuses
 | 
			
		||||
    .description
 | 
			
		||||
      Returns an account's statuses
 | 
			
		||||
  %li
 | 
			
		||||
    .address
 | 
			
		||||
      %samp.method GET
 | 
			
		||||
      %samp /api/accounts/:id/followers
 | 
			
		||||
    .description
 | 
			
		||||
      Returns accounts following an account
 | 
			
		||||
  %li
 | 
			
		||||
    .address
 | 
			
		||||
      %samp.method GET
 | 
			
		||||
      %samp /api/accounts/:id/following
 | 
			
		||||
    .description
 | 
			
		||||
      Returns the accounts the target account follows
 | 
			
		||||
  %li
 | 
			
		||||
    .address
 | 
			
		||||
      %samp.method POST
 | 
			
		||||
      %samp /api/accounts/:id/follow
 | 
			
		||||
    .description
 | 
			
		||||
      Follows target account from the user's account. Returns the target account.
 | 
			
		||||
  %li
 | 
			
		||||
    .address
 | 
			
		||||
      %samp.method POST
 | 
			
		||||
      %samp /api/accounts/:id/unfollow
 | 
			
		||||
    .description
 | 
			
		||||
      Unfollows target account from the user's account. Returns the target account.
 | 
			
		||||
  %li
 | 
			
		||||
    .address
 | 
			
		||||
      %samp.method GET
 | 
			
		||||
      %samp /api/accounts/lookup
 | 
			
		||||
    .options
 | 
			
		||||
      Options:
 | 
			
		||||
      %samp usernames
 | 
			
		||||
    .description
 | 
			
		||||
      Returns accounts for a comma-separated list of usernames
 | 
			
		||||
 | 
			
		||||
%h3 Follows
 | 
			
		||||
%ul.api-descriptions
 | 
			
		||||
  %li
 | 
			
		||||
    .address
 | 
			
		||||
      %samp.method POST
 | 
			
		||||
      %samp /api/follows
 | 
			
		||||
    .options
 | 
			
		||||
      Options:
 | 
			
		||||
      %samp uri
 | 
			
		||||
    .description
 | 
			
		||||
      Follows a user, regardless of where they are, from user's account. URI assumed to be of username@domain form. Returns the target account.
 | 
			
		||||
- content_for :raw_content do
 | 
			
		||||
  .activity-stream.activity-stream-embedded
 | 
			
		||||
    - @timeline.each do |status|
 | 
			
		||||
      = render partial: 'stream_entries/status', locals: { status: status }
 | 
			
		||||
 
 | 
			
		||||
@@ -21,13 +21,18 @@
 | 
			
		||||
          = link_to settings_path do
 | 
			
		||||
            = fa_icon 'user'
 | 
			
		||||
            Edit profile
 | 
			
		||||
 | 
			
		||||
    .dashboard__content
 | 
			
		||||
      .dashboard__top-bar
 | 
			
		||||
        = content_for?(:page_title) ? yield(:page_title) : 'Mastodon'
 | 
			
		||||
        %ul
 | 
			
		||||
          %li= link_to fa_icon('gear'), edit_registration_path(current_user), title: 'Change password'
 | 
			
		||||
          %li= link_to fa_icon('sign-out'), destroy_user_session_path, method: :delete, title: 'Sign out'
 | 
			
		||||
 | 
			
		||||
      .dashboard__content__content= yield
 | 
			
		||||
 | 
			
		||||
      = yield(:raw_content)
 | 
			
		||||
 | 
			
		||||
  .footer
 | 
			
		||||
    .domain= Rails.configuration.x.local_domain
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
default: &default
 | 
			
		||||
  adapter: postgresql
 | 
			
		||||
  pool: 10
 | 
			
		||||
  pool: 15
 | 
			
		||||
  timeout: 5000
 | 
			
		||||
  encoding: unicode
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,11 +1,10 @@
 | 
			
		||||
redis_conn = proc {
 | 
			
		||||
  $redis.dup
 | 
			
		||||
}
 | 
			
		||||
host = ENV['REDIS_HOST'] || 'localhost'
 | 
			
		||||
port = ENV['REDIS_PORT'] || 6379
 | 
			
		||||
 | 
			
		||||
Sidekiq.configure_server do |config|
 | 
			
		||||
  config.redis = ConnectionPool.new(size: 5, &redis_conn)
 | 
			
		||||
  config.redis = { host: host, port: port }
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
Sidekiq.configure_client do |config|
 | 
			
		||||
  config.redis = ConnectionPool.new(size: 5, &redis_conn)
 | 
			
		||||
  config.redis = { host: host, port: port }
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user