totoro 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/docker-compose.yml +1 -0
- data/lib/generators/totoro/init_generator.rb +1 -0
- data/lib/generators/totoro/templates/create_totoro_failed_messages.rb +11 -0
- data/lib/totoro.rb +3 -0
- data/lib/totoro/base_queue.rb +9 -0
- data/lib/totoro/message_resender.rb +21 -0
- data/lib/totoro/railtie.rb +15 -0
- data/lib/totoro/tasks/resend_message.rake +8 -0
- data/lib/totoro/totoro_failed_message.rb +8 -0
- data/lib/totoro/version.rb +1 -1
- data/test/totoro_test/Gemfile +6 -4
- data/test/totoro_test/Gemfile.lock +15 -3
- data/test/totoro_test/app/models/worker/example_queue.rb +2 -5
- data/test/totoro_test/bin/bundle +1 -1
- data/test/totoro_test/bin/delayed_job +5 -0
- data/test/totoro_test/bin/rails +1 -1
- data/test/totoro_test/bin/rake +1 -1
- data/test/totoro_test/bin/setup +1 -2
- data/test/totoro_test/bin/spring +1 -1
- data/test/totoro_test/bin/update +1 -1
- data/test/totoro_test/config/application.rb +10 -9
- data/test/totoro_test/config/database.yml +40 -10
- data/test/totoro_test/config/environments/production.rb +2 -3
- data/test/totoro_test/config/initializers/totoro.rb +1 -1
- data/test/totoro_test/config/puma.rb +3 -3
- data/test/totoro_test/config/spring.rb +2 -2
- data/test/totoro_test/config/totoro.yml +1 -1
- data/test/totoro_test/db/development.sqlite3 +0 -0
- data/test/totoro_test/db/migrate/20181019041208_create_delayed_jobs.rb +22 -0
- data/test/totoro_test/db/migrate/20181019070846_create_totoro_failed_messages.rb +11 -0
- data/test/totoro_test/db/schema.rb +39 -0
- data/test/totoro_test/db/test.sqlite3 +0 -0
- data/test/totoro_test/test/test_helper.rb +1 -1
- data/totoro.gemspec +2 -0
- metadata +41 -3
- data/pkg/totoro-0.4.1.gem +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e835b3b9956681b140dde6f1a471349612cb863e2744e7a292d0505df22ed25
|
4
|
+
data.tar.gz: 10226f19be041d051c9c9a7ff091ac147508cc32a974cb7869bb7ffce0615cb0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 563b7abfd127453918a2f56c40131415bdb14829463f92ffd41d78cef823985a43f32678991d6f0d9b8ab61d45c332037b05776157aa549313031234c28988cf
|
7
|
+
data.tar.gz: 3620dedf09672a6560c9b40415431a3b23b4e06bc574792b7cf7dc2f2088f47dd56a09e860d590f6d4a64b03920c2dac74e472857d80340d9904a2b303805dd0
|
data/docker-compose.yml
CHANGED
@@ -6,6 +6,7 @@ module Totoro
|
|
6
6
|
desc 'Generate totoro config file'
|
7
7
|
|
8
8
|
def copy_config_file
|
9
|
+
template 'create_totoro_failed_messages.rb', File.join('db/migrate', "#{Time.now.strftime('%Y%m%d%H%M%S')}_create_totoro_failed_messages.rb")
|
9
10
|
template 'totoro.yml', File.join('config', 'totoro.yml')
|
10
11
|
template 'initializer.rb', File.join('config/initializers', 'totoro.rb')
|
11
12
|
end
|
data/lib/totoro.rb
CHANGED
@@ -5,6 +5,9 @@ require 'totoro/config'
|
|
5
5
|
require 'totoro/base_queue'
|
6
6
|
require 'totoro/base_worker'
|
7
7
|
require 'totoro/initializer'
|
8
|
+
require 'totoro/message_resender'
|
9
|
+
require 'totoro/totoro_failed_message'
|
10
|
+
require 'totoro/railtie' if defined?(Rails)
|
8
11
|
|
9
12
|
module Totoro
|
10
13
|
# Your code goes here...
|
data/lib/totoro/base_queue.rb
CHANGED
@@ -28,6 +28,15 @@ module Totoro
|
|
28
28
|
exchange.publish(payload, routing_key: queue.name)
|
29
29
|
Rails.logger.info "send message to #{queue.name}"
|
30
30
|
STDOUT.flush
|
31
|
+
rescue Bunny::TCPConnectionFailedForAllHosts => error
|
32
|
+
Rails.logger.error error.message
|
33
|
+
Rails.logger.info 'Add failed message to resend list'
|
34
|
+
STDOUT.flush
|
35
|
+
Totoro::TotoroFailedMessage.create(
|
36
|
+
class_name: to_s,
|
37
|
+
queue_id: id,
|
38
|
+
payload: payload
|
39
|
+
)
|
31
40
|
end
|
32
41
|
|
33
42
|
def subscribe(id)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'delayed_job_recurring'
|
4
|
+
|
5
|
+
module Totoro
|
6
|
+
class MessageResender
|
7
|
+
include Delayed::RecurringJob
|
8
|
+
run_every 10.second
|
9
|
+
queue 'totoro'
|
10
|
+
def perform
|
11
|
+
Totoro::Queue.connection
|
12
|
+
Totoro::TotoroFailedMessage.all.each do |m|
|
13
|
+
m.class_name.constantize.enqueue(m.queue_id, m.payload)
|
14
|
+
m.destroy
|
15
|
+
end
|
16
|
+
rescue Bunny::TCPConnectionFailedForAllHosts => error
|
17
|
+
Rails.logger.error error.message
|
18
|
+
STDOUT.flush
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'totoro'
|
4
|
+
require 'rails'
|
5
|
+
|
6
|
+
module Totoro
|
7
|
+
class Railtie < Rails::Railtie
|
8
|
+
railtie_name :totoro
|
9
|
+
|
10
|
+
rake_tasks do
|
11
|
+
path = File.expand_path(__dir__)
|
12
|
+
Dir.glob("#{path}/tasks/*.rake").each { |f| load f }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/totoro/version.rb
CHANGED
data/test/totoro_test/Gemfile
CHANGED
@@ -1,15 +1,17 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
3
|
git_source(:github) do |repo_name|
|
4
|
-
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?(
|
4
|
+
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?('/')
|
5
5
|
"https://github.com/#{repo_name}.git"
|
6
6
|
end
|
7
7
|
|
8
|
+
gem 'delayed_job_active_record'
|
9
|
+
gem 'delayed_job_recurring'
|
8
10
|
gem 'totoro', path: '/totoro'
|
9
11
|
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
|
10
12
|
gem 'rails', '~> 5.1.6'
|
11
13
|
# Use sqlite3 as the database for Active Record
|
12
|
-
gem '
|
14
|
+
gem 'pg'
|
13
15
|
# Use Puma as the app server
|
14
16
|
gem 'puma', '~> 3.7'
|
15
17
|
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
|
@@ -27,7 +29,7 @@ gem 'puma', '~> 3.7'
|
|
27
29
|
|
28
30
|
group :development, :test do
|
29
31
|
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
|
30
|
-
gem 'byebug', platforms: [
|
32
|
+
gem 'byebug', platforms: %i[mri mingw x64_mingw]
|
31
33
|
end
|
32
34
|
|
33
35
|
group :development do
|
@@ -38,4 +40,4 @@ group :development do
|
|
38
40
|
end
|
39
41
|
|
40
42
|
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
|
41
|
-
gem 'tzinfo-data', platforms: [
|
43
|
+
gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw jruby]
|
@@ -1,8 +1,10 @@
|
|
1
1
|
PATH
|
2
2
|
remote: /totoro
|
3
3
|
specs:
|
4
|
-
totoro (0.
|
4
|
+
totoro (0.5.0)
|
5
5
|
bunny (~> 2.10)
|
6
|
+
delayed_job_active_record (~> 4.1.3)
|
7
|
+
delayed_job_recurring (~> 0.3.7)
|
6
8
|
|
7
9
|
GEM
|
8
10
|
remote: https://rubygems.org/
|
@@ -52,6 +54,14 @@ GEM
|
|
52
54
|
byebug (10.0.2)
|
53
55
|
concurrent-ruby (1.0.5)
|
54
56
|
crass (1.0.4)
|
57
|
+
delayed_job (4.1.5)
|
58
|
+
activesupport (>= 3.0, < 5.3)
|
59
|
+
delayed_job_active_record (4.1.3)
|
60
|
+
activerecord (>= 3.0, < 5.3)
|
61
|
+
delayed_job (>= 3.0, < 5)
|
62
|
+
delayed_job_recurring (0.3.7)
|
63
|
+
delayed_job (>= 3.0)
|
64
|
+
delayed_job_active_record
|
55
65
|
erubi (1.7.1)
|
56
66
|
ffi (1.9.25)
|
57
67
|
globalid (0.4.1)
|
@@ -74,6 +84,7 @@ GEM
|
|
74
84
|
nio4r (2.3.1)
|
75
85
|
nokogiri (1.8.4)
|
76
86
|
mini_portile2 (~> 2.3.0)
|
87
|
+
pg (1.1.3)
|
77
88
|
puma (3.12.0)
|
78
89
|
rack (2.0.5)
|
79
90
|
rack-test (1.1.0)
|
@@ -118,7 +129,6 @@ GEM
|
|
118
129
|
actionpack (>= 4.0)
|
119
130
|
activesupport (>= 4.0)
|
120
131
|
sprockets (>= 3.0.0)
|
121
|
-
sqlite3 (1.3.13)
|
122
132
|
thor (0.20.0)
|
123
133
|
thread_safe (0.3.6)
|
124
134
|
tzinfo (1.2.5)
|
@@ -132,12 +142,14 @@ PLATFORMS
|
|
132
142
|
|
133
143
|
DEPENDENCIES
|
134
144
|
byebug
|
145
|
+
delayed_job_active_record
|
146
|
+
delayed_job_recurring
|
135
147
|
listen (>= 3.0.5, < 3.2)
|
148
|
+
pg
|
136
149
|
puma (~> 3.7)
|
137
150
|
rails (~> 5.1.6)
|
138
151
|
spring
|
139
152
|
spring-watcher-listen (~> 2.0.0)
|
140
|
-
sqlite3
|
141
153
|
totoro!
|
142
154
|
tzinfo-data
|
143
155
|
|
@@ -3,11 +3,8 @@
|
|
3
3
|
module Worker
|
4
4
|
class ExampleQueue < Totoro::BaseWorker
|
5
5
|
setup queue_name: 'example_queue'
|
6
|
-
def process(payload,
|
7
|
-
|
8
|
-
p i
|
9
|
-
sleep 1
|
10
|
-
end
|
6
|
+
def process(payload, _metadata, _delivery_info)
|
7
|
+
p payload
|
11
8
|
end
|
12
9
|
end
|
13
10
|
end
|
data/test/totoro_test/bin/bundle
CHANGED
data/test/totoro_test/bin/rails
CHANGED
data/test/totoro_test/bin/rake
CHANGED
data/test/totoro_test/bin/setup
CHANGED
@@ -4,7 +4,7 @@ require 'fileutils'
|
|
4
4
|
include FileUtils
|
5
5
|
|
6
6
|
# path to your application root.
|
7
|
-
APP_ROOT = Pathname.new File.expand_path('
|
7
|
+
APP_ROOT = Pathname.new File.expand_path('..', __dir__)
|
8
8
|
|
9
9
|
def system!(*args)
|
10
10
|
system(*args) || abort("\n== Command #{args} failed ==")
|
@@ -18,7 +18,6 @@ chdir APP_ROOT do
|
|
18
18
|
system! 'gem install bundler --conservative'
|
19
19
|
system('bundle check') || system!('bundle install')
|
20
20
|
|
21
|
-
|
22
21
|
# puts "\n== Copying sample files =="
|
23
22
|
# unless File.exist?('config/database.yml')
|
24
23
|
# cp 'config/database.yml.sample', 'config/database.yml'
|
data/test/totoro_test/bin/spring
CHANGED
@@ -8,7 +8,7 @@ unless defined?(Spring)
|
|
8
8
|
require 'bundler'
|
9
9
|
|
10
10
|
lockfile = Bundler::LockfileParser.new(Bundler.default_lockfile.read)
|
11
|
-
spring = lockfile.specs.detect { |spec| spec.name ==
|
11
|
+
spring = lockfile.specs.detect { |spec| spec.name == 'spring' }
|
12
12
|
if spring
|
13
13
|
Gem.use_paths Gem.dir, Bundler.bundle_path.to_s, *Gem.path
|
14
14
|
gem 'spring', spring.version
|
data/test/totoro_test/bin/update
CHANGED
@@ -4,7 +4,7 @@ require 'fileutils'
|
|
4
4
|
include FileUtils
|
5
5
|
|
6
6
|
# path to your application root.
|
7
|
-
APP_ROOT = Pathname.new File.expand_path('
|
7
|
+
APP_ROOT = Pathname.new File.expand_path('..', __dir__)
|
8
8
|
|
9
9
|
def system!(*args)
|
10
10
|
system(*args) || abort("\n== Command #{args} failed ==")
|
@@ -1,16 +1,16 @@
|
|
1
1
|
require_relative 'boot'
|
2
2
|
|
3
|
-
require
|
3
|
+
require 'rails'
|
4
4
|
# Pick the frameworks you want:
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require
|
11
|
-
require
|
5
|
+
require 'active_model/railtie'
|
6
|
+
require 'active_job/railtie'
|
7
|
+
require 'active_record/railtie'
|
8
|
+
require 'action_controller/railtie'
|
9
|
+
require 'action_mailer/railtie'
|
10
|
+
require 'action_view/railtie'
|
11
|
+
require 'action_cable/engine'
|
12
12
|
# require "sprockets/railtie"
|
13
|
-
require
|
13
|
+
require 'rails/test_unit/railtie'
|
14
14
|
|
15
15
|
# Require the gems listed in Gemfile, including any gems
|
16
16
|
# you've limited to :test, :development, or :production.
|
@@ -29,5 +29,6 @@ module TotoroTest
|
|
29
29
|
# Middleware like session, flash, cookies can be added back manually.
|
30
30
|
# Skip views, helpers and assets when generating a new resource.
|
31
31
|
config.api_only = true
|
32
|
+
config.active_job.queue_adapter = :delayed_job
|
32
33
|
end
|
33
34
|
end
|
@@ -1,25 +1,55 @@
|
|
1
|
-
#
|
2
|
-
# gem install sqlite3
|
1
|
+
# MySQL. Versions 5.0 and up are supported.
|
3
2
|
#
|
4
|
-
#
|
5
|
-
# gem
|
3
|
+
# Install the MySQL driver
|
4
|
+
# gem install mysql2
|
5
|
+
#
|
6
|
+
# Ensure the MySQL gem is defined in your Gemfile
|
7
|
+
# gem 'mysql2'
|
8
|
+
#
|
9
|
+
# And be sure to use new-style password hashing:
|
10
|
+
# http://dev.mysql.com/doc/refman/5.7/en/old-client.html
|
6
11
|
#
|
7
12
|
default: &default
|
8
|
-
adapter:
|
9
|
-
|
10
|
-
|
13
|
+
adapter: postgresql
|
14
|
+
encoding: unicode
|
15
|
+
pool: 5
|
16
|
+
username: <%= ENV['POSTGRES_USER'] %>
|
17
|
+
password: <%= ENV['POSTGRES_PASSWORD'] %>
|
18
|
+
host: <%= ENV['POSTGRES_HOST'] %>
|
11
19
|
|
12
20
|
development:
|
13
21
|
<<: *default
|
14
|
-
database:
|
22
|
+
database: totoro_development
|
15
23
|
|
16
24
|
# Warning: The database defined as "test" will be erased and
|
17
25
|
# re-generated from your development database when you run "rake".
|
18
26
|
# Do not set this db to the same as development or production.
|
19
27
|
test:
|
20
28
|
<<: *default
|
21
|
-
database:
|
29
|
+
database: totoro_test
|
22
30
|
|
31
|
+
# As with config/secrets.yml, you never want to store sensitive information,
|
32
|
+
# like your database password, in your source code. If your source code is
|
33
|
+
# ever seen by anyone, they now have access to your database.
|
34
|
+
#
|
35
|
+
# Instead, provide the password as a unix environment variable when you boot
|
36
|
+
# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
|
37
|
+
# for a full rundown on how to provide these environment variables in a
|
38
|
+
# production deployment.
|
39
|
+
#
|
40
|
+
# On Heroku and other platform providers, you may have a full connection URL
|
41
|
+
# available as an environment variable. For example:
|
42
|
+
#
|
43
|
+
# DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase"
|
44
|
+
#
|
45
|
+
# You can use this database configuration with:
|
46
|
+
#
|
47
|
+
# production:
|
48
|
+
# url: <%= ENV['DATABASE_URL'] %>
|
49
|
+
#
|
23
50
|
production:
|
24
51
|
<<: *default
|
25
|
-
database:
|
52
|
+
database: <%= ENV['DATABASE_NAME'] %>
|
53
|
+
host: <%= ENV['DATABASE_HOST'] %>
|
54
|
+
username: <%= ENV['DATABASE_USERNAME'] %>
|
55
|
+
password: <%= ENV['DATABASE_PASSWORD'] %>
|
@@ -23,7 +23,6 @@ Rails.application.configure do
|
|
23
23
|
# Apache or NGINX already handles this.
|
24
24
|
config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
|
25
25
|
|
26
|
-
|
27
26
|
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
|
28
27
|
# config.action_controller.asset_host = 'http://assets.example.com'
|
29
28
|
|
@@ -45,7 +44,7 @@ Rails.application.configure do
|
|
45
44
|
config.logger = Logger.new(STDOUT)
|
46
45
|
|
47
46
|
# Prepend all log lines with the following tags.
|
48
|
-
config.log_tags = [
|
47
|
+
config.log_tags = [:request_id]
|
49
48
|
|
50
49
|
# Use a different cache store in production.
|
51
50
|
# config.cache_store = :mem_cache_store
|
@@ -72,7 +71,7 @@ Rails.application.configure do
|
|
72
71
|
# Use a different logger for distributed setups.
|
73
72
|
# require 'syslog/logger'
|
74
73
|
# config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name')
|
75
|
-
if ENV[
|
74
|
+
if ENV['RAILS_LOG_TO_STDOUT'].present?
|
76
75
|
logger = ActiveSupport::Logger.new(STDOUT)
|
77
76
|
logger.formatter = config.log_formatter
|
78
77
|
config.logger = ActiveSupport::TaggedLogging.new(logger)
|
@@ -1 +1 @@
|
|
1
|
-
Totoro::Initializer.new.execute
|
1
|
+
Totoro::Initializer.new.execute
|
@@ -4,16 +4,16 @@
|
|
4
4
|
# the maximum value specified for Puma. Default is set to 5 threads for minimum
|
5
5
|
# and maximum; this matches the default thread size of Active Record.
|
6
6
|
#
|
7
|
-
threads_count = ENV.fetch(
|
7
|
+
threads_count = ENV.fetch('RAILS_MAX_THREADS') { 5 }
|
8
8
|
threads threads_count, threads_count
|
9
9
|
|
10
10
|
# Specifies the `port` that Puma will listen on to receive requests; default is 3000.
|
11
11
|
#
|
12
|
-
port ENV.fetch(
|
12
|
+
port ENV.fetch('PORT') { 3000 }
|
13
13
|
|
14
14
|
# Specifies the `environment` that Puma will run in.
|
15
15
|
#
|
16
|
-
environment ENV.fetch(
|
16
|
+
environment ENV.fetch('RAILS_ENV') { 'development' }
|
17
17
|
|
18
18
|
# Specifies the number of `workers` to boot in clustered mode.
|
19
19
|
# Workers are forked webserver processes. If using threads and workers together
|
Binary file
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class CreateDelayedJobs < ActiveRecord::Migration[5.1]
|
2
|
+
def self.up
|
3
|
+
create_table :delayed_jobs, force: true do |table|
|
4
|
+
table.integer :priority, default: 0, null: false # Allows some jobs to jump to the front of the queue
|
5
|
+
table.integer :attempts, default: 0, null: false # Provides for retries, but still fail eventually.
|
6
|
+
table.text :handler, null: false # YAML-encoded string of the object that will do work
|
7
|
+
table.text :last_error # reason for last failure (See Note below)
|
8
|
+
table.datetime :run_at # When to run. Could be Time.zone.now for immediately, or sometime in the future.
|
9
|
+
table.datetime :locked_at # Set when a client is working on this object
|
10
|
+
table.datetime :failed_at # Set when all retries have failed (actually, by default, the record is deleted instead)
|
11
|
+
table.string :locked_by # Who is working on this object (if locked)
|
12
|
+
table.string :queue # The name of the queue this job is in
|
13
|
+
table.timestamps null: true
|
14
|
+
end
|
15
|
+
|
16
|
+
add_index :delayed_jobs, %i[priority run_at], name: 'delayed_jobs_priority'
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.down
|
20
|
+
drop_table :delayed_jobs
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# This file is auto-generated from the current state of the database. Instead
|
2
|
+
# of editing this file, please use the migrations feature of Active Record to
|
3
|
+
# incrementally modify your database, and then regenerate this schema definition.
|
4
|
+
#
|
5
|
+
# Note that this schema.rb definition is the authoritative source for your
|
6
|
+
# database schema. If you need to create the application database on another
|
7
|
+
# system, you should be using db:schema:load, not running all the migrations
|
8
|
+
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
|
9
|
+
# you'll amass, the slower it'll run and the greater likelihood for issues).
|
10
|
+
#
|
11
|
+
# It's strongly recommended that you check this file into your version control system.
|
12
|
+
|
13
|
+
ActiveRecord::Schema.define(version: 20_181_019_070_846) do
|
14
|
+
# These are extensions that must be enabled in order to support this database
|
15
|
+
enable_extension 'plpgsql'
|
16
|
+
|
17
|
+
create_table 'delayed_jobs', force: :cascade do |t|
|
18
|
+
t.integer 'priority', default: 0, null: false
|
19
|
+
t.integer 'attempts', default: 0, null: false
|
20
|
+
t.text 'handler', null: false
|
21
|
+
t.text 'last_error'
|
22
|
+
t.datetime 'run_at'
|
23
|
+
t.datetime 'locked_at'
|
24
|
+
t.datetime 'failed_at'
|
25
|
+
t.string 'locked_by'
|
26
|
+
t.string 'queue'
|
27
|
+
t.datetime 'created_at'
|
28
|
+
t.datetime 'updated_at'
|
29
|
+
t.index %w[priority run_at], name: 'delayed_jobs_priority'
|
30
|
+
end
|
31
|
+
|
32
|
+
create_table 'totoro_failed_messages', force: :cascade do |t|
|
33
|
+
t.string 'class_name'
|
34
|
+
t.string 'queue_id'
|
35
|
+
t.jsonb 'payload'
|
36
|
+
t.datetime 'created_at', null: false
|
37
|
+
t.datetime 'updated_at', null: false
|
38
|
+
end
|
39
|
+
end
|
File without changes
|
data/totoro.gemspec
CHANGED
@@ -21,6 +21,8 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.require_paths = ['lib']
|
22
22
|
|
23
23
|
spec.add_dependency 'bunny', '~> 2.10'
|
24
|
+
spec.add_dependency 'delayed_job_active_record', '~> 4.1.3'
|
25
|
+
spec.add_dependency 'delayed_job_recurring', '~> 0.3.7'
|
24
26
|
|
25
27
|
spec.add_development_dependency 'bundler', '~> 1.16'
|
26
28
|
spec.add_development_dependency 'rake', '~> 10.0'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: totoro
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ShuHui18
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-10-
|
11
|
+
date: 2018-10-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bunny
|
@@ -24,6 +24,34 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.10'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: delayed_job_active_record
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 4.1.3
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 4.1.3
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: delayed_job_recurring
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.3.7
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.3.7
|
27
55
|
- !ruby/object:Gem::Dependency
|
28
56
|
name: bundler
|
29
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -88,6 +116,7 @@ files:
|
|
88
116
|
- docker-compose.yml
|
89
117
|
- lib/generators/totoro/config_generator.rb
|
90
118
|
- lib/generators/totoro/init_generator.rb
|
119
|
+
- lib/generators/totoro/templates/create_totoro_failed_messages.rb
|
91
120
|
- lib/generators/totoro/templates/initializer.rb
|
92
121
|
- lib/generators/totoro/templates/totoro.yml
|
93
122
|
- lib/generators/totoro/templates/worker.rb.erb
|
@@ -97,8 +126,11 @@ files:
|
|
97
126
|
- lib/totoro/base_worker.rb
|
98
127
|
- lib/totoro/config.rb
|
99
128
|
- lib/totoro/initializer.rb
|
129
|
+
- lib/totoro/message_resender.rb
|
130
|
+
- lib/totoro/railtie.rb
|
131
|
+
- lib/totoro/tasks/resend_message.rake
|
132
|
+
- lib/totoro/totoro_failed_message.rb
|
100
133
|
- lib/totoro/version.rb
|
101
|
-
- pkg/totoro-0.4.1.gem
|
102
134
|
- spec/spec_helper.rb
|
103
135
|
- spec/totoro_spec.rb
|
104
136
|
- test/totoro_test/Gemfile
|
@@ -115,6 +147,7 @@ files:
|
|
115
147
|
- test/totoro_test/app/views/layouts/mailer.html.erb
|
116
148
|
- test/totoro_test/app/views/layouts/mailer.text.erb
|
117
149
|
- test/totoro_test/bin/bundle
|
150
|
+
- test/totoro_test/bin/delayed_job
|
118
151
|
- test/totoro_test/bin/rails
|
119
152
|
- test/totoro_test/bin/rake
|
120
153
|
- test/totoro_test/bin/setup
|
@@ -143,7 +176,12 @@ files:
|
|
143
176
|
- test/totoro_test/config/secrets.yml
|
144
177
|
- test/totoro_test/config/spring.rb
|
145
178
|
- test/totoro_test/config/totoro.yml
|
179
|
+
- test/totoro_test/db/development.sqlite3
|
180
|
+
- test/totoro_test/db/migrate/20181019041208_create_delayed_jobs.rb
|
181
|
+
- test/totoro_test/db/migrate/20181019070846_create_totoro_failed_messages.rb
|
182
|
+
- test/totoro_test/db/schema.rb
|
146
183
|
- test/totoro_test/db/seeds.rb
|
184
|
+
- test/totoro_test/db/test.sqlite3
|
147
185
|
- test/totoro_test/public/robots.txt
|
148
186
|
- test/totoro_test/test/test_helper.rb
|
149
187
|
- totoro.gemspec
|
data/pkg/totoro-0.4.1.gem
DELETED
Binary file
|