From 8a950761d3303a8433748a8c41fe77660912a069 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Thu, 3 Sep 2015 22:47:54 +0200 Subject: [PATCH] configures delayed_jobs --- Gemfile | 2 ++ Gemfile.lock | 8 ++++++ bin/delayed_job | 5 ++++ config/application.rb | 1 + config/initializers/delayed_job_config.rb | 9 +++++++ .../20150903200440_create_delayed_jobs.rb | 22 ++++++++++++++++ db/schema.rb | 26 +++++++++++++++---- 7 files changed, 68 insertions(+), 5 deletions(-) create mode 100755 bin/delayed_job create mode 100644 config/initializers/delayed_job_config.rb create mode 100644 db/migrate/20150903200440_create_delayed_jobs.rb diff --git a/Gemfile b/Gemfile index a986bf6e2..753719cf6 100644 --- a/Gemfile +++ b/Gemfile @@ -43,6 +43,8 @@ gem 'paranoia' gem 'savon' gem 'dalli' gem 'rollbar', '~> 2.2.1' +gem 'delayed_job_active_record' +gem 'daemons' gem 'ahoy_matey', '~> 1.2.1' gem 'groupdate' # group temporary data diff --git a/Gemfile.lock b/Gemfile.lock index 26b825c0d..88fc3f092 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -107,9 +107,15 @@ GEM simplecov (~> 0.10.0) term-ansicolor (~> 1.3) thor (~> 0.19.1) + daemons (1.2.3) dalli (2.7.4) database_cleaner (1.5.0) debug_inspector (0.0.2) + delayed_job (4.0.6) + activesupport (>= 3.0, < 5.0) + delayed_job_active_record (4.0.3) + activerecord (>= 3.0, < 5.0) + delayed_job (>= 3.0, < 4.1) devise (3.5.2) bcrypt (~> 3.0) orm_adapter (~> 0.1) @@ -402,8 +408,10 @@ DEPENDENCIES ckeditor coffee-rails (~> 4.1.0) coveralls + daemons dalli database_cleaner + delayed_job_active_record devise email_spec factory_girl_rails diff --git a/bin/delayed_job b/bin/delayed_job new file mode 100755 index 000000000..edf195985 --- /dev/null +++ b/bin/delayed_job @@ -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 diff --git a/config/application.rb b/config/application.rb index 8cd17632d..76466329e 100644 --- a/config/application.rb +++ b/config/application.rb @@ -33,5 +33,6 @@ module Participacion # Add lib to the autoload path config.autoload_paths << Rails.root.join('lib') config.time_zone = 'Madrid' + config.active_job.queue_adapter = :delayed_job end end diff --git a/config/initializers/delayed_job_config.rb b/config/initializers/delayed_job_config.rb new file mode 100644 index 000000000..e52a95189 --- /dev/null +++ b/config/initializers/delayed_job_config.rb @@ -0,0 +1,9 @@ +Delayed::Worker.destroy_failed_jobs = false +Delayed::Worker.sleep_delay = 2 +Delayed::Worker.max_attempts = 3 +Delayed::Worker.max_run_time = 30.seconds +Delayed::Worker.read_ahead = 10 +Delayed::Worker.default_queue_name = 'default' +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')) \ No newline at end of file diff --git a/db/migrate/20150903200440_create_delayed_jobs.rb b/db/migrate/20150903200440_create_delayed_jobs.rb new file mode 100644 index 000000000..27fdcf6cc --- /dev/null +++ b/db/migrate/20150903200440_create_delayed_jobs.rb @@ -0,0 +1,22 @@ +class CreateDelayedJobs < ActiveRecord::Migration + 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 diff --git a/db/schema.rb b/db/schema.rb index d561bcccd..688f20838 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20150903155146) do +ActiveRecord::Schema.define(version: 20150903200440) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -90,8 +90,8 @@ ActiveRecord::Schema.define(version: 20150903155146) do t.integer "author_id" t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.datetime "hidden_at" t.string "visit_id" + t.datetime "hidden_at" t.integer "flags_count", default: 0 t.datetime "ignored_flag_at" t.integer "cached_votes_total", default: 0 @@ -109,6 +109,22 @@ ActiveRecord::Schema.define(version: 20150903155146) do add_index "debates", ["cached_votes_up"], name: "index_debates_on_cached_votes_up", using: :btree add_index "debates", ["hidden_at"], name: "index_debates_on_hidden_at", using: :btree + 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" + end + + add_index "delayed_jobs", ["priority", "run_at"], name: "delayed_jobs_priority", using: :btree + create_table "flags", force: :cascade do |t| t.integer "user_id" t.string "flaggable_type" @@ -200,13 +216,12 @@ ActiveRecord::Schema.define(version: 20150903155146) do t.string "unconfirmed_email" t.boolean "email_on_debate_comment", default: false t.boolean "email_on_comment_reply", default: false + t.string "phone_number", limit: 30 t.string "official_position" t.integer "official_level", default: 0 t.datetime "hidden_at" - t.string "phone_number", limit: 30 - t.string "username" - t.datetime "confirmed_hide_at" t.string "sms_confirmation_code" + t.string "username" t.string "document_number" t.string "document_type" t.datetime "residence_verified_at" @@ -218,6 +233,7 @@ ActiveRecord::Schema.define(version: 20150903155146) do t.string "unconfirmed_phone" t.string "confirmed_phone" t.datetime "letter_requested_at" + t.datetime "confirmed_hide_at" t.string "letter_verification_code" end