Skip to content

Commit

Permalink
V 0.7.4 Beta
Browse files Browse the repository at this point in the history
Delayed_jobs
Lundo kiel unua tago
  • Loading branch information
shayani committed Nov 10, 2018
1 parent 0849e04 commit 0e41cf4
Show file tree
Hide file tree
Showing 14 changed files with 96 additions and 3 deletions.
3 changes: 3 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,9 @@ gem 'jbuilder', '~> 2.5'
# Reduces boot times through caching; required in config/boot.rb
gem 'bootsnap', '>= 1.1.0', require: false

gem 'daemons'
gem 'delayed_job_active_record'

gem 'hirb'
gem 'postmark-rails'
gem 'redcarpet'
Expand Down
8 changes: 8 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,13 @@ GEM
coffee-script-source (1.12.2)
concurrent-ruby (1.0.5)
crass (1.0.4)
daemons (1.2.6)
debug_inspector (0.0.3)
delayed_job (4.1.5)
activesupport (>= 3.0, < 5.3)
delayed_job_active_record (4.1.3)
activerecord (>= 3.0, < 5.3)
delayed_job (>= 3.0, < 5)
devise (4.5.0)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
Expand Down Expand Up @@ -334,6 +340,8 @@ DEPENDENCIES
carrierwave (~> 1.0)
chromedriver-helper
coffee-rails (~> 4.2)
daemons
delayed_job_active_record
devise (~> 4.2)
font-awesome-sass (~> 5)
fullcalendar-rails
Expand Down
1 change: 1 addition & 0 deletions app/assets/javascripts/full_calendar.js.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ eventCalendar = ->
eventColor: 'green'
height: 'auto'
fixedWeekCount: false
firstDay: 1
displayEventTime: false
header:
left: 'today'
Expand Down
2 changes: 2 additions & 0 deletions app/controllers/events_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ def create
@event.user_id = current_user.id

if @event.save
EventMailer.send_event_to_admin(@event.id).deliver_later
redirect_to event_path(@event.code), flash: { notice: 'Evento sukcese kreita.' }
else
render :new
Expand All @@ -37,6 +38,7 @@ def create

def update
if @event.update(event_params)
EventMailer.send_event_to_admin(@event.id, update: true).deliver_later
redirect_to event_path(@event.code), notice: 'Evento sukcese ĝisdatigita'
else
render :edit
Expand Down
10 changes: 9 additions & 1 deletion app/mailers/event_mailer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,14 @@ def send_updates_to_followers(event)
bcc: addresses,
subject: "Evento \"#{@event.title}\" ŝanĝita",
reply_to: @event.user.email,
format: :text)
content_type: :text)
end

def send_event_to_admin(event_id, update: false)
@event = Event.find(event_id)
event_action = update ? 'Ĝistadigita' : 'Nova'
mail(to: 'kontakto@eventaservo.org',
subject: "#{event_action} evento: #{@event.title}",
content_type: :text)
end
end
2 changes: 1 addition & 1 deletion app/modules/constants.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module Constants
VERSIO = '0.7.3 Beta'
VERSIO = '0.7.4 Beta'
FILE_EXTENSIONS = ['gif', 'png', 'jpg', 'jpeg', 'pdf', 'doc', 'docx', 'odt', 'ppt', 'pptx', 'xls', 'xlsx']
end
14 changes: 14 additions & 0 deletions app/views/event_mailer/send_event_to_admin.text.haml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
= @event.title
\------------------
#{@event.city} (#{@event.country.name})
=format_date(@event.date_start)
- if @event.date_end > @event.date_start
ĝis #{format_date(@event.date_end)}
\
= @event.description
\
= @event.content
\
Kretinto: #{@event.user.name}
\
= event_url @event.code
5 changes: 5 additions & 0 deletions bin/delayed_job
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/usr/bin/env ruby

require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment'))
require 'delayed/command'
Delayed::Command.new(ARGV).daemonize
2 changes: 2 additions & 0 deletions config/application.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,7 @@ class Application < Rails::Application

config.i18n.default_locale = :epo
config.exceptions_app = self.routes

config.active_job.queue_adapter = :delayed_job
end
end
7 changes: 7 additions & 0 deletions config/initializers/delayed_job.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Delayed::Worker.destroy_failed_jobs = false
Delayed::Worker.sleep_delay = 60
Delayed::Worker.max_attempts = 3
Delayed::Worker.max_run_time = 5.minutes
Delayed::Worker.delay_jobs = !Rails.env.test?
Delayed::Worker.raise_signal_exceptions = :term
Delayed::Worker.logger = Logger.new(File.join(Rails.root, 'log', 'delayed_job.log'))
1 change: 1 addition & 0 deletions config/initializers/sentry.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
Raven.configure do |config|
config.dsn = 'https://6b22c73cdd694a8b90f6b1d84ffa51df:59303926f70f40c6a5c66e549e08bca3@sentry.io/1309834'
config.release = Constants::VERSIO
config.environments = %w[staging production]
end
22 changes: 22 additions & 0 deletions db/migrate/20181110085602_create_delayed_jobs.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
class CreateDelayedJobs < ActiveRecord::Migration[5.2]
def self.up
create_table :delayed_jobs, force: true do |table|
table.integer :priority, default: 0, null: false # Allows some jobs to jump to the front of the queue
table.integer :attempts, default: 0, null: false # Provides for retries, but still fail eventually.
table.text :handler, null: false # YAML-encoded string of the object that will do work
table.text :last_error # reason for last failure (See Note below)
table.datetime :run_at # When to run. Could be Time.zone.now for immediately, or sometime in the future.
table.datetime :locked_at # Set when a client is working on this object
table.datetime :failed_at # Set when all retries have failed (actually, by default, the record is deleted instead)
table.string :locked_by # Who is working on this object (if locked)
table.string :queue # The name of the queue this job is in
table.timestamps null: true
end

add_index :delayed_jobs, [:priority, :run_at], name: "delayed_jobs_priority"
end

def self.down
drop_table :delayed_jobs
end
end
17 changes: 16 additions & 1 deletion db/schema.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.

ActiveRecord::Schema.define(version: 2018_11_06_142453) do
ActiveRecord::Schema.define(version: 2018_11_10_085602) do

# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
Expand All @@ -37,6 +37,21 @@
t.index ["name"], name: "index_countries_on_name"
end

create_table "delayed_jobs", force: :cascade do |t|
t.integer "priority", default: 0, null: false
t.integer "attempts", default: 0, null: false
t.text "handler", null: false
t.text "last_error"
t.datetime "run_at"
t.datetime "locked_at"
t.datetime "failed_at"
t.string "locked_by"
t.string "queue"
t.datetime "created_at"
t.datetime "updated_at"
t.index ["priority", "run_at"], name: "delayed_jobs_priority"
end

create_table "events", force: :cascade do |t|
t.string "title", null: false
t.string "description", limit: 400
Expand Down
5 changes: 5 additions & 0 deletions test/mailers/previews/event_mailer_preview.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,9 @@ def send_updates_to_followers

EventMailer.send_updates_to_followers(event)
end

def send_event_to_admin
event = Event.last
EventMailer.send_event_to_admin(event)
end
end

0 comments on commit 0e41cf4

Please sign in to comment.