totoro 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|