cloudenvoy 0.1.0.dev → 0.1.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/.github/workflows/test.yml +37 -0
- data/.gitignore +3 -0
- data/.rubocop.yml +1 -0
- data/Appraisals +9 -0
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +212 -1
- data/README.md +569 -7
- data/app/controllers/cloudenvoy/application_controller.rb +8 -0
- data/app/controllers/cloudenvoy/subscriber_controller.rb +59 -0
- data/cloudenvoy.gemspec +14 -2
- data/config/routes.rb +5 -0
- data/examples/rails/.ruby-version +1 -0
- data/examples/rails/Gemfile +15 -0
- data/examples/rails/Gemfile.lock +207 -0
- data/examples/rails/Procfile +1 -0
- data/examples/rails/README.md +31 -0
- data/examples/rails/Rakefile +8 -0
- data/examples/rails/app/assets/config/manifest.js +2 -0
- data/examples/rails/app/assets/images/.keep +0 -0
- data/examples/rails/app/assets/stylesheets/application.css +15 -0
- data/examples/rails/app/channels/application_cable/channel.rb +6 -0
- data/examples/rails/app/channels/application_cable/connection.rb +6 -0
- data/examples/rails/app/controllers/application_controller.rb +4 -0
- data/examples/rails/app/controllers/concerns/.keep +0 -0
- data/examples/rails/app/helpers/application_helper.rb +4 -0
- data/examples/rails/app/javascript/packs/application.js +15 -0
- data/examples/rails/app/jobs/application_job.rb +9 -0
- data/examples/rails/app/mailers/application_mailer.rb +6 -0
- data/examples/rails/app/models/application_record.rb +5 -0
- data/examples/rails/app/models/concerns/.keep +0 -0
- data/examples/rails/app/publishers/hello_publisher.rb +34 -0
- data/examples/rails/app/subscribers/hello_subscriber.rb +16 -0
- data/examples/rails/app/views/layouts/application.html.erb +14 -0
- data/examples/rails/app/views/layouts/mailer.html.erb +13 -0
- data/examples/rails/app/views/layouts/mailer.text.erb +1 -0
- data/examples/rails/bin/rails +6 -0
- data/examples/rails/bin/rake +6 -0
- data/examples/rails/bin/setup +35 -0
- data/examples/rails/config.ru +7 -0
- data/examples/rails/config/application.rb +19 -0
- data/examples/rails/config/boot.rb +7 -0
- data/examples/rails/config/cable.yml +10 -0
- data/examples/rails/config/credentials.yml.enc +1 -0
- data/examples/rails/config/database.yml +25 -0
- data/examples/rails/config/environment.rb +7 -0
- data/examples/rails/config/environments/development.rb +65 -0
- data/examples/rails/config/environments/production.rb +114 -0
- data/examples/rails/config/environments/test.rb +50 -0
- data/examples/rails/config/initializers/application_controller_renderer.rb +9 -0
- data/examples/rails/config/initializers/assets.rb +14 -0
- data/examples/rails/config/initializers/backtrace_silencers.rb +8 -0
- data/examples/rails/config/initializers/cloudenvoy.rb +22 -0
- data/examples/rails/config/initializers/content_security_policy.rb +29 -0
- data/examples/rails/config/initializers/cookies_serializer.rb +7 -0
- data/examples/rails/config/initializers/filter_parameter_logging.rb +6 -0
- data/examples/rails/config/initializers/inflections.rb +17 -0
- data/examples/rails/config/initializers/mime_types.rb +5 -0
- data/examples/rails/config/initializers/wrap_parameters.rb +16 -0
- data/examples/rails/config/locales/en.yml +33 -0
- data/examples/rails/config/master.key +1 -0
- data/examples/rails/config/puma.rb +37 -0
- data/examples/rails/config/routes.rb +4 -0
- data/examples/rails/config/spring.rb +8 -0
- data/examples/rails/config/storage.yml +34 -0
- data/examples/rails/db/development.sqlite3 +0 -0
- data/examples/rails/db/test.sqlite3 +0 -0
- data/examples/rails/lib/assets/.keep +0 -0
- data/examples/rails/log/.keep +0 -0
- data/examples/rails/public/404.html +67 -0
- data/examples/rails/public/422.html +67 -0
- data/examples/rails/public/500.html +66 -0
- data/examples/rails/public/apple-touch-icon-precomposed.png +0 -0
- data/examples/rails/public/apple-touch-icon.png +0 -0
- data/examples/rails/public/favicon.ico +0 -0
- data/examples/rails/storage/.keep +0 -0
- data/gemfiles/rails_5.2.gemfile +7 -0
- data/gemfiles/rails_5.2.gemfile.lock +248 -0
- data/gemfiles/rails_6.0.gemfile +7 -0
- data/gemfiles/rails_6.0.gemfile.lock +264 -0
- data/lib/cloudenvoy.rb +96 -2
- data/lib/cloudenvoy/authentication_error.rb +6 -0
- data/lib/cloudenvoy/authenticator.rb +57 -0
- data/lib/cloudenvoy/backend/google_pub_sub.rb +110 -0
- data/lib/cloudenvoy/backend/memory_pub_sub.rb +88 -0
- data/lib/cloudenvoy/config.rb +165 -0
- data/lib/cloudenvoy/engine.rb +20 -0
- data/lib/cloudenvoy/invalid_subscriber_error.rb +6 -0
- data/lib/cloudenvoy/logger_wrapper.rb +167 -0
- data/lib/cloudenvoy/message.rb +96 -0
- data/lib/cloudenvoy/middleware/chain.rb +250 -0
- data/lib/cloudenvoy/pub_sub_client.rb +62 -0
- data/lib/cloudenvoy/publisher.rb +211 -0
- data/lib/cloudenvoy/publisher_logger.rb +32 -0
- data/lib/cloudenvoy/subscriber.rb +218 -0
- data/lib/cloudenvoy/subscriber_logger.rb +26 -0
- data/lib/cloudenvoy/subscription.rb +19 -0
- data/lib/cloudenvoy/testing.rb +106 -0
- data/lib/cloudenvoy/topic.rb +19 -0
- data/lib/cloudenvoy/version.rb +1 -1
- data/lib/tasks/cloudenvoy.rake +61 -0
- metadata +241 -6
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Cloudenvoy
|
|
4
|
+
# Logger configuration for subscribers
|
|
5
|
+
class SubscriberLogger < LoggerWrapper
|
|
6
|
+
#
|
|
7
|
+
# The subscriber default context processor.
|
|
8
|
+
#
|
|
9
|
+
# @return [Proc] The context processor proc.
|
|
10
|
+
#
|
|
11
|
+
def self.default_context_processor
|
|
12
|
+
@default_context_processor ||= ->(loggable) { loggable.message.to_h.slice(:id, :metadata, :topic) }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
#
|
|
16
|
+
# Format main log message.
|
|
17
|
+
#
|
|
18
|
+
# @param [String] msg The message to log.
|
|
19
|
+
#
|
|
20
|
+
# @return [String] The formatted log message
|
|
21
|
+
#
|
|
22
|
+
def formatted_message(msg)
|
|
23
|
+
"[Cloudenvoy][#{loggable.class}][#{loggable.message.id}] #{msg}"
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Cloudenvoy
|
|
4
|
+
# A wrapper class for pub/sub subscriptions. Used to wrap
|
|
5
|
+
# responses.
|
|
6
|
+
class Subscription
|
|
7
|
+
attr_accessor :name, :original
|
|
8
|
+
|
|
9
|
+
#
|
|
10
|
+
# Constructor
|
|
11
|
+
#
|
|
12
|
+
# @param [Hash] **kwargs Arguments
|
|
13
|
+
#
|
|
14
|
+
def initialize(**kwargs)
|
|
15
|
+
@name = kwargs&.dig(:name)
|
|
16
|
+
@original = kwargs&.dig(:original)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'cloudenvoy/backend/memory_pub_sub'
|
|
4
|
+
|
|
5
|
+
module Cloudenvoy
|
|
6
|
+
# Enable/Disable test mode for Cloudenvoy
|
|
7
|
+
module Testing
|
|
8
|
+
module_function
|
|
9
|
+
|
|
10
|
+
#
|
|
11
|
+
# Set the test mode, either permanently or
|
|
12
|
+
# temporarily (via block).
|
|
13
|
+
#
|
|
14
|
+
# @param [Symbol] mode The test mode.
|
|
15
|
+
#
|
|
16
|
+
# @return [Symbol] The test mode.
|
|
17
|
+
#
|
|
18
|
+
def switch_test_mode(mode)
|
|
19
|
+
if block_given?
|
|
20
|
+
current_mode = @test_mode
|
|
21
|
+
begin
|
|
22
|
+
@test_mode = mode
|
|
23
|
+
yield
|
|
24
|
+
ensure
|
|
25
|
+
@test_mode = current_mode
|
|
26
|
+
end
|
|
27
|
+
else
|
|
28
|
+
@test_mode = mode
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
#
|
|
33
|
+
# Set cloudenvoy to real mode temporarily
|
|
34
|
+
#
|
|
35
|
+
# @param [Proc] &block The block to run in real mode
|
|
36
|
+
#
|
|
37
|
+
def enable!(&block)
|
|
38
|
+
switch_test_mode(:enabled, &block)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
#
|
|
42
|
+
# Set cloudenvoy to fake mode temporarily
|
|
43
|
+
#
|
|
44
|
+
# @param [Proc] &block The block to run in fake mode
|
|
45
|
+
#
|
|
46
|
+
def fake!(&block)
|
|
47
|
+
switch_test_mode(:fake, &block)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
#
|
|
51
|
+
# Return true if Cloudenvoy is enabled.
|
|
52
|
+
#
|
|
53
|
+
def enabled?
|
|
54
|
+
!@test_mode || @test_mode == :enabled
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
#
|
|
58
|
+
# Return true if Cloudenvoy is in fake mode.
|
|
59
|
+
#
|
|
60
|
+
# @return [Boolean] True if messages should be stored in memory.
|
|
61
|
+
#
|
|
62
|
+
def fake?
|
|
63
|
+
@test_mode == :fake
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
#
|
|
67
|
+
# Return true if tasks should be managed in memory.
|
|
68
|
+
#
|
|
69
|
+
# @return [Boolean] True if jobs are managed in memory.
|
|
70
|
+
#
|
|
71
|
+
def in_memory?
|
|
72
|
+
!enabled?
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
#
|
|
76
|
+
# Clear all messages across all topics.
|
|
77
|
+
#
|
|
78
|
+
# @param [String] name The topic to clear.
|
|
79
|
+
#
|
|
80
|
+
def clear_all
|
|
81
|
+
Cloudenvoy::Backend::MemoryPubSub.clear_all
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
#
|
|
85
|
+
# Clear all messages in a specific topic.
|
|
86
|
+
#
|
|
87
|
+
# @param [String] name The topic to clear.
|
|
88
|
+
#
|
|
89
|
+
# @return [Array] The cleared array.
|
|
90
|
+
#
|
|
91
|
+
def clear(topic)
|
|
92
|
+
Cloudenvoy::Backend::MemoryPubSub.clear(topic)
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
#
|
|
96
|
+
# Return the message queue for a specific topic.
|
|
97
|
+
#
|
|
98
|
+
# @param [String] name The topic to retrieve.
|
|
99
|
+
#
|
|
100
|
+
# @return [Array] The list of messages for the provided topic
|
|
101
|
+
#
|
|
102
|
+
def queue(topic)
|
|
103
|
+
Cloudenvoy::Backend::MemoryPubSub.queue(topic)
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Cloudenvoy
|
|
4
|
+
# A wrapper class for pub/sub topics. Used to wrap
|
|
5
|
+
# responses.
|
|
6
|
+
class Topic
|
|
7
|
+
attr_accessor :name, :original
|
|
8
|
+
|
|
9
|
+
#
|
|
10
|
+
# Constructor
|
|
11
|
+
#
|
|
12
|
+
# @param [Hash] **kwargs Arguments
|
|
13
|
+
#
|
|
14
|
+
def initialize(**kwargs)
|
|
15
|
+
@name = kwargs&.dig(:name)
|
|
16
|
+
@original = kwargs&.dig(:original)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
data/lib/cloudenvoy/version.rb
CHANGED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'cloudenvoy'
|
|
4
|
+
|
|
5
|
+
ENV['GOOGLE_AUTH_SUPPRESS_CREDENTIALS_WARNINGS'] ||= 'true'
|
|
6
|
+
|
|
7
|
+
namespace :cloudenvoy do
|
|
8
|
+
desc 'Setup publishers and subscribers.'
|
|
9
|
+
task setup: :environment do
|
|
10
|
+
Rake::Task['cloudenvoy:setup_publishers'].invoke
|
|
11
|
+
Rake::Task['cloudenvoy:setup_subscribers'].invoke
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
desc 'Create required subscriptions for all subcribers.'
|
|
15
|
+
task setup_subscribers: :environment do
|
|
16
|
+
# Force registration of subscribers
|
|
17
|
+
Rails.application.eager_load!
|
|
18
|
+
|
|
19
|
+
# Setup subscriptions
|
|
20
|
+
list = Cloudenvoy.setup_subscribers.sort_by(&:name)
|
|
21
|
+
|
|
22
|
+
puts "\n"
|
|
23
|
+
|
|
24
|
+
# Notify user when no suscribers
|
|
25
|
+
if list.empty?
|
|
26
|
+
puts 'There are no subscribers defined in your application'
|
|
27
|
+
return
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
puts 'The following subscribers are configured:'
|
|
31
|
+
list.each do |e|
|
|
32
|
+
puts "- #{e.name}"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
puts "\n"
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
desc 'Create required topics for all publishers.'
|
|
39
|
+
task setup_publishers: :environment do
|
|
40
|
+
# Force registration of publishers
|
|
41
|
+
Rails.application.eager_load!
|
|
42
|
+
|
|
43
|
+
# Setup topics
|
|
44
|
+
list = Cloudenvoy.setup_publishers.sort_by(&:name)
|
|
45
|
+
|
|
46
|
+
puts "\n"
|
|
47
|
+
|
|
48
|
+
# Notify user when no topics
|
|
49
|
+
if list.empty?
|
|
50
|
+
puts 'There are no publishers defined in your application'
|
|
51
|
+
return
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
puts 'The following topics are configured:'
|
|
55
|
+
list.each do |e|
|
|
56
|
+
puts "- #{e.name}"
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
puts "\n"
|
|
60
|
+
end
|
|
61
|
+
end
|
metadata
CHANGED
|
@@ -1,15 +1,85 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cloudenvoy
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.0
|
|
4
|
+
version: 0.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Arnaud Lachaume
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-09-
|
|
11
|
+
date: 2020-09-16 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: activesupport
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '0'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ">="
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '0'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: google-cloud-pubsub
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '2.0'
|
|
34
|
+
type: :runtime
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '2.0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: jwt
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - ">="
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0'
|
|
48
|
+
type: :runtime
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: retriable
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - ">="
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
type: :runtime
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: appraisal
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ">="
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
13
83
|
- !ruby/object:Gem::Dependency
|
|
14
84
|
name: rake
|
|
15
85
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -66,27 +136,192 @@ dependencies:
|
|
|
66
136
|
- - '='
|
|
67
137
|
- !ruby/object:Gem::Version
|
|
68
138
|
version: 1.37.0
|
|
69
|
-
|
|
139
|
+
- !ruby/object:Gem::Dependency
|
|
140
|
+
name: timecop
|
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
|
142
|
+
requirements:
|
|
143
|
+
- - ">="
|
|
144
|
+
- !ruby/object:Gem::Version
|
|
145
|
+
version: '0'
|
|
146
|
+
type: :development
|
|
147
|
+
prerelease: false
|
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
+
requirements:
|
|
150
|
+
- - ">="
|
|
151
|
+
- !ruby/object:Gem::Version
|
|
152
|
+
version: '0'
|
|
153
|
+
- !ruby/object:Gem::Dependency
|
|
154
|
+
name: webmock
|
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
|
156
|
+
requirements:
|
|
157
|
+
- - ">="
|
|
158
|
+
- !ruby/object:Gem::Version
|
|
159
|
+
version: '0'
|
|
160
|
+
type: :development
|
|
161
|
+
prerelease: false
|
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
163
|
+
requirements:
|
|
164
|
+
- - ">="
|
|
165
|
+
- !ruby/object:Gem::Version
|
|
166
|
+
version: '0'
|
|
167
|
+
- !ruby/object:Gem::Dependency
|
|
168
|
+
name: rails
|
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
|
170
|
+
requirements:
|
|
171
|
+
- - ">="
|
|
172
|
+
- !ruby/object:Gem::Version
|
|
173
|
+
version: '0'
|
|
174
|
+
type: :development
|
|
175
|
+
prerelease: false
|
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
177
|
+
requirements:
|
|
178
|
+
- - ">="
|
|
179
|
+
- !ruby/object:Gem::Version
|
|
180
|
+
version: '0'
|
|
181
|
+
- !ruby/object:Gem::Dependency
|
|
182
|
+
name: rspec-rails
|
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
|
184
|
+
requirements:
|
|
185
|
+
- - ">="
|
|
186
|
+
- !ruby/object:Gem::Version
|
|
187
|
+
version: '0'
|
|
188
|
+
type: :development
|
|
189
|
+
prerelease: false
|
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
191
|
+
requirements:
|
|
192
|
+
- - ">="
|
|
193
|
+
- !ruby/object:Gem::Version
|
|
194
|
+
version: '0'
|
|
195
|
+
- !ruby/object:Gem::Dependency
|
|
196
|
+
name: sqlite3
|
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
|
198
|
+
requirements:
|
|
199
|
+
- - ">="
|
|
200
|
+
- !ruby/object:Gem::Version
|
|
201
|
+
version: '0'
|
|
202
|
+
type: :development
|
|
203
|
+
prerelease: false
|
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
205
|
+
requirements:
|
|
206
|
+
- - ">="
|
|
207
|
+
- !ruby/object:Gem::Version
|
|
208
|
+
version: '0'
|
|
209
|
+
description: Cross-application messaging using GCP Pub/Sub (alpha)
|
|
70
210
|
email:
|
|
71
211
|
- arnaud.lachaume@keypup.io
|
|
72
212
|
executables: []
|
|
73
213
|
extensions: []
|
|
74
214
|
extra_rdoc_files: []
|
|
75
215
|
files:
|
|
216
|
+
- ".github/workflows/test.yml"
|
|
76
217
|
- ".gitignore"
|
|
77
218
|
- ".rspec"
|
|
78
219
|
- ".rubocop.yml"
|
|
220
|
+
- Appraisals
|
|
221
|
+
- CHANGELOG.md
|
|
79
222
|
- CODE_OF_CONDUCT.md
|
|
80
223
|
- Gemfile
|
|
81
224
|
- Gemfile.lock
|
|
82
225
|
- LICENSE.txt
|
|
83
226
|
- README.md
|
|
84
227
|
- Rakefile
|
|
228
|
+
- app/controllers/cloudenvoy/application_controller.rb
|
|
229
|
+
- app/controllers/cloudenvoy/subscriber_controller.rb
|
|
85
230
|
- bin/console
|
|
86
231
|
- bin/setup
|
|
87
232
|
- cloudenvoy.gemspec
|
|
233
|
+
- config/routes.rb
|
|
234
|
+
- examples/rails/.ruby-version
|
|
235
|
+
- examples/rails/Gemfile
|
|
236
|
+
- examples/rails/Gemfile.lock
|
|
237
|
+
- examples/rails/Procfile
|
|
238
|
+
- examples/rails/README.md
|
|
239
|
+
- examples/rails/Rakefile
|
|
240
|
+
- examples/rails/app/assets/config/manifest.js
|
|
241
|
+
- examples/rails/app/assets/images/.keep
|
|
242
|
+
- examples/rails/app/assets/stylesheets/application.css
|
|
243
|
+
- examples/rails/app/channels/application_cable/channel.rb
|
|
244
|
+
- examples/rails/app/channels/application_cable/connection.rb
|
|
245
|
+
- examples/rails/app/controllers/application_controller.rb
|
|
246
|
+
- examples/rails/app/controllers/concerns/.keep
|
|
247
|
+
- examples/rails/app/helpers/application_helper.rb
|
|
248
|
+
- examples/rails/app/javascript/packs/application.js
|
|
249
|
+
- examples/rails/app/jobs/application_job.rb
|
|
250
|
+
- examples/rails/app/mailers/application_mailer.rb
|
|
251
|
+
- examples/rails/app/models/application_record.rb
|
|
252
|
+
- examples/rails/app/models/concerns/.keep
|
|
253
|
+
- examples/rails/app/publishers/hello_publisher.rb
|
|
254
|
+
- examples/rails/app/subscribers/hello_subscriber.rb
|
|
255
|
+
- examples/rails/app/views/layouts/application.html.erb
|
|
256
|
+
- examples/rails/app/views/layouts/mailer.html.erb
|
|
257
|
+
- examples/rails/app/views/layouts/mailer.text.erb
|
|
258
|
+
- examples/rails/bin/rails
|
|
259
|
+
- examples/rails/bin/rake
|
|
260
|
+
- examples/rails/bin/setup
|
|
261
|
+
- examples/rails/config.ru
|
|
262
|
+
- examples/rails/config/application.rb
|
|
263
|
+
- examples/rails/config/boot.rb
|
|
264
|
+
- examples/rails/config/cable.yml
|
|
265
|
+
- examples/rails/config/credentials.yml.enc
|
|
266
|
+
- examples/rails/config/database.yml
|
|
267
|
+
- examples/rails/config/environment.rb
|
|
268
|
+
- examples/rails/config/environments/development.rb
|
|
269
|
+
- examples/rails/config/environments/production.rb
|
|
270
|
+
- examples/rails/config/environments/test.rb
|
|
271
|
+
- examples/rails/config/initializers/application_controller_renderer.rb
|
|
272
|
+
- examples/rails/config/initializers/assets.rb
|
|
273
|
+
- examples/rails/config/initializers/backtrace_silencers.rb
|
|
274
|
+
- examples/rails/config/initializers/cloudenvoy.rb
|
|
275
|
+
- examples/rails/config/initializers/content_security_policy.rb
|
|
276
|
+
- examples/rails/config/initializers/cookies_serializer.rb
|
|
277
|
+
- examples/rails/config/initializers/filter_parameter_logging.rb
|
|
278
|
+
- examples/rails/config/initializers/inflections.rb
|
|
279
|
+
- examples/rails/config/initializers/mime_types.rb
|
|
280
|
+
- examples/rails/config/initializers/wrap_parameters.rb
|
|
281
|
+
- examples/rails/config/locales/en.yml
|
|
282
|
+
- examples/rails/config/master.key
|
|
283
|
+
- examples/rails/config/puma.rb
|
|
284
|
+
- examples/rails/config/routes.rb
|
|
285
|
+
- examples/rails/config/spring.rb
|
|
286
|
+
- examples/rails/config/storage.yml
|
|
287
|
+
- examples/rails/db/development.sqlite3
|
|
288
|
+
- examples/rails/db/test.sqlite3
|
|
289
|
+
- examples/rails/lib/assets/.keep
|
|
290
|
+
- examples/rails/log/.keep
|
|
291
|
+
- examples/rails/public/404.html
|
|
292
|
+
- examples/rails/public/422.html
|
|
293
|
+
- examples/rails/public/500.html
|
|
294
|
+
- examples/rails/public/apple-touch-icon-precomposed.png
|
|
295
|
+
- examples/rails/public/apple-touch-icon.png
|
|
296
|
+
- examples/rails/public/favicon.ico
|
|
297
|
+
- examples/rails/storage/.keep
|
|
298
|
+
- examples/rails/tmp/.keep
|
|
299
|
+
- examples/rails/tmp/development_secret.txt
|
|
300
|
+
- gemfiles/rails_5.2.gemfile
|
|
301
|
+
- gemfiles/rails_5.2.gemfile.lock
|
|
302
|
+
- gemfiles/rails_6.0.gemfile
|
|
303
|
+
- gemfiles/rails_6.0.gemfile.lock
|
|
88
304
|
- lib/cloudenvoy.rb
|
|
305
|
+
- lib/cloudenvoy/authentication_error.rb
|
|
306
|
+
- lib/cloudenvoy/authenticator.rb
|
|
307
|
+
- lib/cloudenvoy/backend/google_pub_sub.rb
|
|
308
|
+
- lib/cloudenvoy/backend/memory_pub_sub.rb
|
|
309
|
+
- lib/cloudenvoy/config.rb
|
|
310
|
+
- lib/cloudenvoy/engine.rb
|
|
311
|
+
- lib/cloudenvoy/invalid_subscriber_error.rb
|
|
312
|
+
- lib/cloudenvoy/logger_wrapper.rb
|
|
313
|
+
- lib/cloudenvoy/message.rb
|
|
314
|
+
- lib/cloudenvoy/middleware/chain.rb
|
|
315
|
+
- lib/cloudenvoy/pub_sub_client.rb
|
|
316
|
+
- lib/cloudenvoy/publisher.rb
|
|
317
|
+
- lib/cloudenvoy/publisher_logger.rb
|
|
318
|
+
- lib/cloudenvoy/subscriber.rb
|
|
319
|
+
- lib/cloudenvoy/subscriber_logger.rb
|
|
320
|
+
- lib/cloudenvoy/subscription.rb
|
|
321
|
+
- lib/cloudenvoy/testing.rb
|
|
322
|
+
- lib/cloudenvoy/topic.rb
|
|
89
323
|
- lib/cloudenvoy/version.rb
|
|
324
|
+
- lib/tasks/cloudenvoy.rake
|
|
90
325
|
homepage: https://github.com/keypup-io/cloudenvoy
|
|
91
326
|
licenses:
|
|
92
327
|
- MIT
|
|
@@ -105,12 +340,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
105
340
|
version: 2.3.0
|
|
106
341
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
107
342
|
requirements:
|
|
108
|
-
- - "
|
|
343
|
+
- - ">="
|
|
109
344
|
- !ruby/object:Gem::Version
|
|
110
|
-
version:
|
|
345
|
+
version: '0'
|
|
111
346
|
requirements: []
|
|
112
347
|
rubygems_version: 3.0.0
|
|
113
348
|
signing_key:
|
|
114
349
|
specification_version: 4
|
|
115
|
-
summary: Cross-application messaging using GCP Pub/Sub (
|
|
350
|
+
summary: Cross-application messaging using GCP Pub/Sub (alpha)
|
|
116
351
|
test_files: []
|