cloudenvoy 0.1.0.dev → 0.4.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.
Files changed (110) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +41 -0
  3. data/.gitignore +3 -0
  4. data/.rubocop.yml +1 -0
  5. data/Appraisals +25 -0
  6. data/CHANGELOG.md +32 -0
  7. data/Gemfile.lock +215 -1
  8. data/README.md +581 -7
  9. data/app/controllers/cloudenvoy/application_controller.rb +8 -0
  10. data/app/controllers/cloudenvoy/subscriber_controller.rb +59 -0
  11. data/cloudenvoy.gemspec +15 -2
  12. data/config/routes.rb +5 -0
  13. data/examples/rails/.ruby-version +1 -0
  14. data/examples/rails/Gemfile +15 -0
  15. data/examples/rails/Gemfile.lock +207 -0
  16. data/examples/rails/Procfile +1 -0
  17. data/examples/rails/README.md +31 -0
  18. data/examples/rails/Rakefile +8 -0
  19. data/examples/rails/app/assets/config/manifest.js +2 -0
  20. data/examples/rails/app/assets/images/.keep +0 -0
  21. data/examples/rails/app/assets/stylesheets/application.css +15 -0
  22. data/examples/rails/app/channels/application_cable/channel.rb +6 -0
  23. data/examples/rails/app/channels/application_cable/connection.rb +6 -0
  24. data/examples/rails/app/controllers/application_controller.rb +4 -0
  25. data/examples/rails/app/controllers/concerns/.keep +0 -0
  26. data/examples/rails/app/helpers/application_helper.rb +4 -0
  27. data/examples/rails/app/javascript/packs/application.js +15 -0
  28. data/examples/rails/app/jobs/application_job.rb +9 -0
  29. data/examples/rails/app/mailers/application_mailer.rb +6 -0
  30. data/examples/rails/app/models/application_record.rb +5 -0
  31. data/examples/rails/app/models/concerns/.keep +0 -0
  32. data/examples/rails/app/publishers/hello_publisher.rb +34 -0
  33. data/examples/rails/app/subscribers/hello_subscriber.rb +16 -0
  34. data/examples/rails/app/views/layouts/application.html.erb +14 -0
  35. data/examples/rails/app/views/layouts/mailer.html.erb +13 -0
  36. data/examples/rails/app/views/layouts/mailer.text.erb +1 -0
  37. data/examples/rails/bin/rails +6 -0
  38. data/examples/rails/bin/rake +6 -0
  39. data/examples/rails/bin/setup +35 -0
  40. data/examples/rails/config.ru +7 -0
  41. data/examples/rails/config/application.rb +19 -0
  42. data/examples/rails/config/boot.rb +7 -0
  43. data/examples/rails/config/cable.yml +10 -0
  44. data/examples/rails/config/credentials.yml.enc +1 -0
  45. data/examples/rails/config/database.yml +25 -0
  46. data/examples/rails/config/environment.rb +7 -0
  47. data/examples/rails/config/environments/development.rb +65 -0
  48. data/examples/rails/config/environments/production.rb +114 -0
  49. data/examples/rails/config/environments/test.rb +50 -0
  50. data/examples/rails/config/initializers/application_controller_renderer.rb +9 -0
  51. data/examples/rails/config/initializers/assets.rb +14 -0
  52. data/examples/rails/config/initializers/backtrace_silencers.rb +8 -0
  53. data/examples/rails/config/initializers/cloudenvoy.rb +22 -0
  54. data/examples/rails/config/initializers/content_security_policy.rb +29 -0
  55. data/examples/rails/config/initializers/cookies_serializer.rb +7 -0
  56. data/examples/rails/config/initializers/filter_parameter_logging.rb +6 -0
  57. data/examples/rails/config/initializers/inflections.rb +17 -0
  58. data/examples/rails/config/initializers/mime_types.rb +5 -0
  59. data/examples/rails/config/initializers/wrap_parameters.rb +16 -0
  60. data/examples/rails/config/locales/en.yml +33 -0
  61. data/examples/rails/config/master.key +1 -0
  62. data/examples/rails/config/puma.rb +37 -0
  63. data/examples/rails/config/routes.rb +4 -0
  64. data/examples/rails/config/spring.rb +8 -0
  65. data/examples/rails/config/storage.yml +34 -0
  66. data/examples/rails/db/development.sqlite3 +0 -0
  67. data/examples/rails/db/test.sqlite3 +0 -0
  68. data/examples/rails/lib/assets/.keep +0 -0
  69. data/examples/rails/log/.keep +0 -0
  70. data/examples/rails/public/404.html +67 -0
  71. data/examples/rails/public/422.html +67 -0
  72. data/examples/rails/public/500.html +66 -0
  73. data/examples/rails/public/apple-touch-icon-precomposed.png +0 -0
  74. data/examples/rails/public/apple-touch-icon.png +0 -0
  75. data/examples/rails/public/favicon.ico +0 -0
  76. data/examples/rails/storage/.keep +0 -0
  77. data/gemfiles/rails_5.2.gemfile +7 -0
  78. data/gemfiles/rails_5.2.gemfile.lock +251 -0
  79. data/gemfiles/rails_6.0.gemfile +7 -0
  80. data/gemfiles/rails_6.0.gemfile.lock +267 -0
  81. data/gemfiles/semantic_logger_3.4.gemfile +7 -0
  82. data/gemfiles/semantic_logger_3.4.gemfile.lock +265 -0
  83. data/gemfiles/semantic_logger_4.6.gemfile +7 -0
  84. data/gemfiles/semantic_logger_4.6.gemfile.lock +265 -0
  85. data/gemfiles/semantic_logger_4.7.0.gemfile +7 -0
  86. data/gemfiles/semantic_logger_4.7.0.gemfile.lock +265 -0
  87. data/gemfiles/semantic_logger_4.7.2.gemfile +7 -0
  88. data/gemfiles/semantic_logger_4.7.2.gemfile.lock +265 -0
  89. data/lib/cloudenvoy.rb +96 -2
  90. data/lib/cloudenvoy/authentication_error.rb +6 -0
  91. data/lib/cloudenvoy/authenticator.rb +57 -0
  92. data/lib/cloudenvoy/backend/google_pub_sub.rb +146 -0
  93. data/lib/cloudenvoy/backend/memory_pub_sub.rb +89 -0
  94. data/lib/cloudenvoy/config.rb +165 -0
  95. data/lib/cloudenvoy/engine.rb +20 -0
  96. data/lib/cloudenvoy/invalid_subscriber_error.rb +6 -0
  97. data/lib/cloudenvoy/logger_wrapper.rb +167 -0
  98. data/lib/cloudenvoy/message.rb +96 -0
  99. data/lib/cloudenvoy/middleware/chain.rb +250 -0
  100. data/lib/cloudenvoy/pub_sub_client.rb +76 -0
  101. data/lib/cloudenvoy/publisher.rb +211 -0
  102. data/lib/cloudenvoy/publisher_logger.rb +32 -0
  103. data/lib/cloudenvoy/subscriber.rb +222 -0
  104. data/lib/cloudenvoy/subscriber_logger.rb +26 -0
  105. data/lib/cloudenvoy/subscription.rb +19 -0
  106. data/lib/cloudenvoy/testing.rb +106 -0
  107. data/lib/cloudenvoy/topic.rb +19 -0
  108. data/lib/cloudenvoy/version.rb +1 -1
  109. data/lib/tasks/cloudenvoy.rake +61 -0
  110. metadata +263 -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Cloudenvoy
4
- VERSION = '0.1.0.dev'
4
+ VERSION = '0.4.0'
5
5
  end
@@ -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.dev
4
+ version: 0.4.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-04 00:00:00.000000000 Z
11
+ date: 2020-10-05 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,214 @@ dependencies:
66
136
  - - '='
67
137
  - !ruby/object:Gem::Version
68
138
  version: 1.37.0
69
- description: Cross-application messaging using GCP Pub/Sub (in development)
139
+ - !ruby/object:Gem::Dependency
140
+ name: semantic_logger
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: timecop
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: webmock
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: 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: rspec-rails
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
+ - !ruby/object:Gem::Dependency
210
+ name: sqlite3
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ description: Cross-application messaging using GCP Pub/Sub (alpha)
70
224
  email:
71
225
  - arnaud.lachaume@keypup.io
72
226
  executables: []
73
227
  extensions: []
74
228
  extra_rdoc_files: []
75
229
  files:
230
+ - ".github/workflows/test.yml"
76
231
  - ".gitignore"
77
232
  - ".rspec"
78
233
  - ".rubocop.yml"
234
+ - Appraisals
235
+ - CHANGELOG.md
79
236
  - CODE_OF_CONDUCT.md
80
237
  - Gemfile
81
238
  - Gemfile.lock
82
239
  - LICENSE.txt
83
240
  - README.md
84
241
  - Rakefile
242
+ - app/controllers/cloudenvoy/application_controller.rb
243
+ - app/controllers/cloudenvoy/subscriber_controller.rb
85
244
  - bin/console
86
245
  - bin/setup
87
246
  - cloudenvoy.gemspec
247
+ - config/routes.rb
248
+ - examples/rails/.ruby-version
249
+ - examples/rails/Gemfile
250
+ - examples/rails/Gemfile.lock
251
+ - examples/rails/Procfile
252
+ - examples/rails/README.md
253
+ - examples/rails/Rakefile
254
+ - examples/rails/app/assets/config/manifest.js
255
+ - examples/rails/app/assets/images/.keep
256
+ - examples/rails/app/assets/stylesheets/application.css
257
+ - examples/rails/app/channels/application_cable/channel.rb
258
+ - examples/rails/app/channels/application_cable/connection.rb
259
+ - examples/rails/app/controllers/application_controller.rb
260
+ - examples/rails/app/controllers/concerns/.keep
261
+ - examples/rails/app/helpers/application_helper.rb
262
+ - examples/rails/app/javascript/packs/application.js
263
+ - examples/rails/app/jobs/application_job.rb
264
+ - examples/rails/app/mailers/application_mailer.rb
265
+ - examples/rails/app/models/application_record.rb
266
+ - examples/rails/app/models/concerns/.keep
267
+ - examples/rails/app/publishers/hello_publisher.rb
268
+ - examples/rails/app/subscribers/hello_subscriber.rb
269
+ - examples/rails/app/views/layouts/application.html.erb
270
+ - examples/rails/app/views/layouts/mailer.html.erb
271
+ - examples/rails/app/views/layouts/mailer.text.erb
272
+ - examples/rails/bin/rails
273
+ - examples/rails/bin/rake
274
+ - examples/rails/bin/setup
275
+ - examples/rails/config.ru
276
+ - examples/rails/config/application.rb
277
+ - examples/rails/config/boot.rb
278
+ - examples/rails/config/cable.yml
279
+ - examples/rails/config/credentials.yml.enc
280
+ - examples/rails/config/database.yml
281
+ - examples/rails/config/environment.rb
282
+ - examples/rails/config/environments/development.rb
283
+ - examples/rails/config/environments/production.rb
284
+ - examples/rails/config/environments/test.rb
285
+ - examples/rails/config/initializers/application_controller_renderer.rb
286
+ - examples/rails/config/initializers/assets.rb
287
+ - examples/rails/config/initializers/backtrace_silencers.rb
288
+ - examples/rails/config/initializers/cloudenvoy.rb
289
+ - examples/rails/config/initializers/content_security_policy.rb
290
+ - examples/rails/config/initializers/cookies_serializer.rb
291
+ - examples/rails/config/initializers/filter_parameter_logging.rb
292
+ - examples/rails/config/initializers/inflections.rb
293
+ - examples/rails/config/initializers/mime_types.rb
294
+ - examples/rails/config/initializers/wrap_parameters.rb
295
+ - examples/rails/config/locales/en.yml
296
+ - examples/rails/config/master.key
297
+ - examples/rails/config/puma.rb
298
+ - examples/rails/config/routes.rb
299
+ - examples/rails/config/spring.rb
300
+ - examples/rails/config/storage.yml
301
+ - examples/rails/db/development.sqlite3
302
+ - examples/rails/db/test.sqlite3
303
+ - examples/rails/lib/assets/.keep
304
+ - examples/rails/log/.keep
305
+ - examples/rails/public/404.html
306
+ - examples/rails/public/422.html
307
+ - examples/rails/public/500.html
308
+ - examples/rails/public/apple-touch-icon-precomposed.png
309
+ - examples/rails/public/apple-touch-icon.png
310
+ - examples/rails/public/favicon.ico
311
+ - examples/rails/storage/.keep
312
+ - examples/rails/tmp/.keep
313
+ - examples/rails/tmp/development_secret.txt
314
+ - gemfiles/rails_5.2.gemfile
315
+ - gemfiles/rails_5.2.gemfile.lock
316
+ - gemfiles/rails_6.0.gemfile
317
+ - gemfiles/rails_6.0.gemfile.lock
318
+ - gemfiles/semantic_logger_3.4.gemfile
319
+ - gemfiles/semantic_logger_3.4.gemfile.lock
320
+ - gemfiles/semantic_logger_4.6.gemfile
321
+ - gemfiles/semantic_logger_4.6.gemfile.lock
322
+ - gemfiles/semantic_logger_4.7.0.gemfile
323
+ - gemfiles/semantic_logger_4.7.0.gemfile.lock
324
+ - gemfiles/semantic_logger_4.7.2.gemfile
325
+ - gemfiles/semantic_logger_4.7.2.gemfile.lock
88
326
  - lib/cloudenvoy.rb
327
+ - lib/cloudenvoy/authentication_error.rb
328
+ - lib/cloudenvoy/authenticator.rb
329
+ - lib/cloudenvoy/backend/google_pub_sub.rb
330
+ - lib/cloudenvoy/backend/memory_pub_sub.rb
331
+ - lib/cloudenvoy/config.rb
332
+ - lib/cloudenvoy/engine.rb
333
+ - lib/cloudenvoy/invalid_subscriber_error.rb
334
+ - lib/cloudenvoy/logger_wrapper.rb
335
+ - lib/cloudenvoy/message.rb
336
+ - lib/cloudenvoy/middleware/chain.rb
337
+ - lib/cloudenvoy/pub_sub_client.rb
338
+ - lib/cloudenvoy/publisher.rb
339
+ - lib/cloudenvoy/publisher_logger.rb
340
+ - lib/cloudenvoy/subscriber.rb
341
+ - lib/cloudenvoy/subscriber_logger.rb
342
+ - lib/cloudenvoy/subscription.rb
343
+ - lib/cloudenvoy/testing.rb
344
+ - lib/cloudenvoy/topic.rb
89
345
  - lib/cloudenvoy/version.rb
346
+ - lib/tasks/cloudenvoy.rake
90
347
  homepage: https://github.com/keypup-io/cloudenvoy
91
348
  licenses:
92
349
  - MIT
@@ -105,12 +362,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
105
362
  version: 2.3.0
106
363
  required_rubygems_version: !ruby/object:Gem::Requirement
107
364
  requirements:
108
- - - ">"
365
+ - - ">="
109
366
  - !ruby/object:Gem::Version
110
- version: 1.3.1
367
+ version: '0'
111
368
  requirements: []
112
369
  rubygems_version: 3.0.0
113
370
  signing_key:
114
371
  specification_version: 4
115
- summary: Cross-application messaging using GCP Pub/Sub (in development)
372
+ summary: Cross-application messaging using GCP Pub/Sub (alpha)
116
373
  test_files: []