reverts - stats with delayed jobs
This commit is contained in:
@@ -13,7 +13,6 @@ class DebatesController < ApplicationController
|
|||||||
@debates = @debates.page(params[:page]).for_render.send("sort_by_#{@order}")
|
@debates = @debates.page(params[:page]).for_render.send("sort_by_#{@order}")
|
||||||
@tag_cloud = Debate.tag_counts.order(taggings_count: :desc, name: :asc).limit(20)
|
@tag_cloud = Debate.tag_counts.order(taggings_count: :desc, name: :asc).limit(20)
|
||||||
set_debate_votes(@debates)
|
set_debate_votes(@debates)
|
||||||
ahoy.track_visit
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
@@ -24,7 +23,6 @@ class DebatesController < ApplicationController
|
|||||||
|
|
||||||
@all_visible_comments = @root_comments + @comments
|
@all_visible_comments = @root_comments + @comments
|
||||||
set_comment_flags(@all_visible_comments)
|
set_comment_flags(@all_visible_comments)
|
||||||
ahoy.track_visit
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def new
|
def new
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ class StatsController < ApplicationController
|
|||||||
|
|
||||||
def show
|
def show
|
||||||
@event_types = Ahoy::Event.select(:name).uniq.pluck(:name)
|
@event_types = Ahoy::Event.select(:name).uniq.pluck(:name)
|
||||||
@debates_created_count = Ahoy::Event.where(name: 'debate_created').count
|
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
class StatsJob < ActiveJob::Base
|
|
||||||
queue_as :default
|
|
||||||
|
|
||||||
def perform(*args)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@@ -34,6 +34,9 @@ class Debate < ActiveRecord::Base
|
|||||||
scope :sort_by_most_commented, -> { order(comments_count: :desc) }
|
scope :sort_by_most_commented, -> { order(comments_count: :desc) }
|
||||||
scope :sort_by_random, -> { order("RANDOM()") }
|
scope :sort_by_random, -> { order("RANDOM()") }
|
||||||
|
|
||||||
|
# Ahoy setup
|
||||||
|
visitable # Ahoy will automatically assign visit_id on create
|
||||||
|
|
||||||
def likes
|
def likes
|
||||||
cached_votes_up
|
cached_votes_up
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<h2>Stats</h2>
|
<h2>Stats</h2>
|
||||||
|
|
||||||
<div class="small-12 medium-6 column">
|
<div class="small-12 medium-6 column">
|
||||||
<h3>Visits (<%= Visit.count %>) </h3>
|
<h3>Visits</h3>
|
||||||
<%= visits_chart_tag id: "visits" %>
|
<%= visits_chart_tag id: "visits" %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
<div class="small-12">
|
<div class="small-12">
|
||||||
<% @event_types.each do |event_type| %>
|
<% @event_types.each do |event_type| %>
|
||||||
<h3><%= event_type.titleize %> (<%= @debates_created_count %>)</h3>
|
<h3><%= event_type.titleize %></h3>
|
||||||
<%= events_chart_tag event_type %>
|
<%= events_chart_tag event_type %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,11 +1,9 @@
|
|||||||
class Ahoy::Store < Ahoy::Stores::ActiveRecordStore
|
class Ahoy::Store < Ahoy::Stores::ActiveRecordStore
|
||||||
|
|
||||||
def track_visit(options)
|
|
||||||
StatsJob.perform_later(super, name: "visit")
|
|
||||||
end
|
|
||||||
|
|
||||||
# Track user IP
|
# Track user IP
|
||||||
def track_event(name, properties, options)
|
def track_event(name, properties, options)
|
||||||
StatsJob.perform_later(super { |event| event.ip = request.ip }, name: "event")
|
super do |event|
|
||||||
|
event.ip = request.ip
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -11,30 +11,6 @@ describe DebatesController do
|
|||||||
SimpleCaptcha.always_pass = @original_captcha_pass_value
|
SimpleCaptcha.always_pass = @original_captcha_pass_value
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'GET show' do
|
|
||||||
it 'should create an ahoy visit' do
|
|
||||||
debate = create(:debate)
|
|
||||||
sign_in create(:user)
|
|
||||||
|
|
||||||
get :show, id: debate.id
|
|
||||||
|
|
||||||
expect(Visit.count).to eq 1
|
|
||||||
expect(Visit.first.landing_page).to eq debate_url(debate)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
describe 'GET index' do
|
|
||||||
it 'should create an ahoy visit' do
|
|
||||||
debate = create(:debate)
|
|
||||||
sign_in create(:user)
|
|
||||||
|
|
||||||
get :index
|
|
||||||
|
|
||||||
expect(Visit.count).to eq 1
|
|
||||||
expect(Visit.first.landing_page).to eq debates_url
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
describe 'POST create' do
|
describe 'POST create' do
|
||||||
it 'should create an ahoy event' do
|
it 'should create an ahoy event' do
|
||||||
|
|
||||||
|
|||||||
@@ -1,45 +0,0 @@
|
|||||||
require 'rails_helper'
|
|
||||||
|
|
||||||
feature 'ActiveJob' do
|
|
||||||
include ActiveJob::TestHelper
|
|
||||||
|
|
||||||
let(:admin) { create(:administrator) }
|
|
||||||
|
|
||||||
scenario 'use queue to track visits' do
|
|
||||||
debate = create(:debate)
|
|
||||||
|
|
||||||
visit debate_path(debate)
|
|
||||||
|
|
||||||
expect(enqueued_jobs.size).to eq(1)
|
|
||||||
perform_enqueued_jobs { StatsJob.perform_now(enqueued_jobs.first) }
|
|
||||||
|
|
||||||
login_as(admin.user)
|
|
||||||
visit stats_path
|
|
||||||
|
|
||||||
expect(page).to have_content 'Visits (1)'
|
|
||||||
end
|
|
||||||
|
|
||||||
scenario "use queue to track new debates" do
|
|
||||||
user = create(:user)
|
|
||||||
|
|
||||||
login_as(user)
|
|
||||||
visit new_debate_path
|
|
||||||
|
|
||||||
create_a_debate
|
|
||||||
|
|
||||||
expect(enqueued_jobs.size).to eq(2)
|
|
||||||
|
|
||||||
expect(enqueued_jobs.first[:args][1]["name"]).to eq("event")
|
|
||||||
expect(enqueued_jobs.last[:args][1]["name"]).to eq("visit")
|
|
||||||
|
|
||||||
perform_enqueued_jobs do
|
|
||||||
enqueued_jobs.each { |job| StatsJob.perform_now(job) }
|
|
||||||
end
|
|
||||||
|
|
||||||
login_as(admin.user)
|
|
||||||
visit stats_path
|
|
||||||
|
|
||||||
expect(page).to have_content 'Debate Created (1)'
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
@@ -34,17 +34,6 @@ module CommonActions
|
|||||||
click_button 'Send me reset password instructions'
|
click_button 'Send me reset password instructions'
|
||||||
end
|
end
|
||||||
|
|
||||||
def create_a_debate
|
|
||||||
fill_in 'debate_title', with: 'Acabar con los desahucios'
|
|
||||||
fill_in 'debate_description', with: 'Esto es un tema muy importante porque...'
|
|
||||||
fill_in 'debate_captcha', with: correct_captcha_text
|
|
||||||
check 'debate_terms_of_service'
|
|
||||||
|
|
||||||
click_button 'Start a debate'
|
|
||||||
|
|
||||||
expect(page).to have_content 'Debate was successfully created.'
|
|
||||||
end
|
|
||||||
|
|
||||||
def comment_on(debate)
|
def comment_on(debate)
|
||||||
user = create(:user)
|
user = create(:user)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user