cloudenvoy 0.3.0 → 0.4.2

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 (44) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +4 -0
  3. data/.gitignore +3 -0
  4. data/Appraisals +16 -0
  5. data/CHANGELOG.md +29 -0
  6. data/README.md +4 -4
  7. data/app/controllers/cloudenvoy/subscriber_controller.rb +6 -5
  8. data/cloudenvoy.gemspec +1 -0
  9. data/examples/rails/Gemfile.lock +125 -106
  10. data/examples/sinatra/Gemfile +15 -0
  11. data/examples/sinatra/Gemfile.lock +127 -0
  12. data/examples/sinatra/Procfile +1 -0
  13. data/examples/sinatra/README.md +41 -0
  14. data/examples/sinatra/app/publishers/hello_publisher.rb +34 -0
  15. data/examples/sinatra/app/subscribers/hello_subscriber.rb +16 -0
  16. data/examples/sinatra/app.rb +40 -0
  17. data/examples/sinatra/bin/console +8 -0
  18. data/examples/sinatra/config/initializers/cloudenvoy.rb +30 -0
  19. data/gemfiles/rails_5.2.gemfile.lock +89 -73
  20. data/gemfiles/rails_6.0.gemfile.lock +90 -74
  21. data/gemfiles/semantic_logger_3.4.gemfile +7 -0
  22. data/gemfiles/semantic_logger_3.4.gemfile.lock +279 -0
  23. data/gemfiles/semantic_logger_4.6.gemfile +7 -0
  24. data/gemfiles/semantic_logger_4.6.gemfile.lock +279 -0
  25. data/gemfiles/semantic_logger_4.7.0.gemfile +7 -0
  26. data/gemfiles/semantic_logger_4.7.0.gemfile.lock +279 -0
  27. data/gemfiles/semantic_logger_4.7.2.gemfile +7 -0
  28. data/gemfiles/semantic_logger_4.7.2.gemfile.lock +279 -0
  29. data/lib/cloudenvoy/backend/google_pub_sub.rb +16 -1
  30. data/lib/cloudenvoy/logger_wrapper.rb +1 -1
  31. data/lib/cloudenvoy/message.rb +2 -2
  32. data/lib/cloudenvoy/publisher.rb +1 -0
  33. data/lib/cloudenvoy/subscriber.rb +3 -2
  34. data/lib/cloudenvoy/version.rb +1 -1
  35. data/lib/generators/cloudenvoy/publisher_generator.rb +46 -0
  36. data/lib/generators/cloudenvoy/subscriber_generator.rb +46 -0
  37. data/lib/generators/cloudenvoy/templates/publisher.rb.erb +11 -0
  38. data/lib/generators/cloudenvoy/templates/publisher_spec.rb.erb +6 -0
  39. data/lib/generators/cloudenvoy/templates/subscriber.rb.erb +11 -0
  40. data/lib/generators/cloudenvoy/templates/subscriber_spec.rb.erb +6 -0
  41. data/lib/tasks/cloudenvoy.rake +4 -4
  42. metadata +42 -7
  43. data/Gemfile.lock +0 -264
  44. data/app/controllers/cloudenvoy/application_controller.rb +0 -8
@@ -0,0 +1,279 @@
1
+ PATH
2
+ remote: ..
3
+ specs:
4
+ cloudenvoy (0.4.1)
5
+ activesupport
6
+ google-cloud-pubsub (~> 2.0)
7
+ jwt
8
+ retriable
9
+
10
+ GEM
11
+ remote: https://rubygems.org/
12
+ specs:
13
+ actioncable (6.1.3.1)
14
+ actionpack (= 6.1.3.1)
15
+ activesupport (= 6.1.3.1)
16
+ nio4r (~> 2.0)
17
+ websocket-driver (>= 0.6.1)
18
+ actionmailbox (6.1.3.1)
19
+ actionpack (= 6.1.3.1)
20
+ activejob (= 6.1.3.1)
21
+ activerecord (= 6.1.3.1)
22
+ activestorage (= 6.1.3.1)
23
+ activesupport (= 6.1.3.1)
24
+ mail (>= 2.7.1)
25
+ actionmailer (6.1.3.1)
26
+ actionpack (= 6.1.3.1)
27
+ actionview (= 6.1.3.1)
28
+ activejob (= 6.1.3.1)
29
+ activesupport (= 6.1.3.1)
30
+ mail (~> 2.5, >= 2.5.4)
31
+ rails-dom-testing (~> 2.0)
32
+ actionpack (6.1.3.1)
33
+ actionview (= 6.1.3.1)
34
+ activesupport (= 6.1.3.1)
35
+ rack (~> 2.0, >= 2.0.9)
36
+ rack-test (>= 0.6.3)
37
+ rails-dom-testing (~> 2.0)
38
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
39
+ actiontext (6.1.3.1)
40
+ actionpack (= 6.1.3.1)
41
+ activerecord (= 6.1.3.1)
42
+ activestorage (= 6.1.3.1)
43
+ activesupport (= 6.1.3.1)
44
+ nokogiri (>= 1.8.5)
45
+ actionview (6.1.3.1)
46
+ activesupport (= 6.1.3.1)
47
+ builder (~> 3.1)
48
+ erubi (~> 1.4)
49
+ rails-dom-testing (~> 2.0)
50
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
51
+ activejob (6.1.3.1)
52
+ activesupport (= 6.1.3.1)
53
+ globalid (>= 0.3.6)
54
+ activemodel (6.1.3.1)
55
+ activesupport (= 6.1.3.1)
56
+ activerecord (6.1.3.1)
57
+ activemodel (= 6.1.3.1)
58
+ activesupport (= 6.1.3.1)
59
+ activestorage (6.1.3.1)
60
+ actionpack (= 6.1.3.1)
61
+ activejob (= 6.1.3.1)
62
+ activerecord (= 6.1.3.1)
63
+ activesupport (= 6.1.3.1)
64
+ marcel (~> 1.0.0)
65
+ mini_mime (~> 1.0.2)
66
+ activesupport (6.1.3.1)
67
+ concurrent-ruby (~> 1.0, >= 1.0.2)
68
+ i18n (>= 1.6, < 2)
69
+ minitest (>= 5.1)
70
+ tzinfo (~> 2.0)
71
+ zeitwerk (~> 2.3)
72
+ addressable (2.7.0)
73
+ public_suffix (>= 2.0.2, < 5.0)
74
+ appraisal (2.4.0)
75
+ bundler
76
+ rake
77
+ thor (>= 0.14.0)
78
+ ast (2.4.2)
79
+ builder (3.2.4)
80
+ concurrent-ruby (1.1.8)
81
+ crack (0.4.5)
82
+ rexml
83
+ crass (1.0.6)
84
+ diff-lcs (1.4.4)
85
+ erubi (1.10.0)
86
+ faraday (1.4.1)
87
+ faraday-excon (~> 1.1)
88
+ faraday-net_http (~> 1.0)
89
+ faraday-net_http_persistent (~> 1.1)
90
+ multipart-post (>= 1.2, < 3)
91
+ ruby2_keywords (>= 0.0.4)
92
+ faraday-excon (1.1.0)
93
+ faraday-net_http (1.0.1)
94
+ faraday-net_http_persistent (1.1.0)
95
+ gapic-common (0.4.1)
96
+ faraday (~> 1.3)
97
+ google-protobuf (~> 3.15, >= 3.15.2)
98
+ googleapis-common-protos (>= 1.3.11, < 2.0)
99
+ googleapis-common-protos-types (>= 1.0.6, < 2.0)
100
+ googleauth (~> 0.15, >= 0.15.1)
101
+ grpc (~> 1.36)
102
+ globalid (0.4.2)
103
+ activesupport (>= 4.2.0)
104
+ google-cloud-core (1.6.0)
105
+ google-cloud-env (~> 1.0)
106
+ google-cloud-errors (~> 1.0)
107
+ google-cloud-env (1.5.0)
108
+ faraday (>= 0.17.3, < 2.0)
109
+ google-cloud-errors (1.1.0)
110
+ google-cloud-pubsub (2.5.0)
111
+ concurrent-ruby (~> 1.1)
112
+ google-cloud-core (~> 1.5)
113
+ google-cloud-pubsub-v1 (~> 0.0)
114
+ google-cloud-pubsub-v1 (0.4.0)
115
+ gapic-common (~> 0.3)
116
+ google-cloud-errors (~> 1.0)
117
+ grpc-google-iam-v1 (>= 0.6.10, < 2.0)
118
+ google-protobuf (3.15.8)
119
+ googleapis-common-protos (1.3.11)
120
+ google-protobuf (~> 3.14)
121
+ googleapis-common-protos-types (>= 1.0.6, < 2.0)
122
+ grpc (~> 1.27)
123
+ googleapis-common-protos-types (1.0.6)
124
+ google-protobuf (~> 3.14)
125
+ googleauth (0.16.1)
126
+ faraday (>= 0.17.3, < 2.0)
127
+ jwt (>= 1.4, < 3.0)
128
+ memoist (~> 0.16)
129
+ multi_json (~> 1.11)
130
+ os (>= 0.9, < 2.0)
131
+ signet (~> 0.14)
132
+ grpc (1.37.0)
133
+ google-protobuf (~> 3.15)
134
+ googleapis-common-protos-types (~> 1.0)
135
+ grpc-google-iam-v1 (0.6.11)
136
+ google-protobuf (~> 3.14)
137
+ googleapis-common-protos (>= 1.3.11, < 2.0)
138
+ grpc (~> 1.27)
139
+ hashdiff (1.0.1)
140
+ i18n (1.8.10)
141
+ concurrent-ruby (~> 1.0)
142
+ jaro_winkler (1.5.4)
143
+ jwt (2.2.2)
144
+ loofah (2.9.1)
145
+ crass (~> 1.0.2)
146
+ nokogiri (>= 1.5.9)
147
+ mail (2.7.1)
148
+ mini_mime (>= 0.1.1)
149
+ marcel (1.0.1)
150
+ memoist (0.16.2)
151
+ method_source (1.0.0)
152
+ mini_mime (1.0.3)
153
+ mini_portile2 (2.5.0)
154
+ minitest (5.14.4)
155
+ multi_json (1.15.0)
156
+ multipart-post (2.1.1)
157
+ nio4r (2.5.7)
158
+ nokogiri (1.11.3)
159
+ mini_portile2 (~> 2.5.0)
160
+ racc (~> 1.4)
161
+ os (1.1.1)
162
+ parallel (1.20.1)
163
+ parser (3.0.1.0)
164
+ ast (~> 2.4.1)
165
+ public_suffix (4.0.6)
166
+ racc (1.5.2)
167
+ rack (2.2.3)
168
+ rack-test (1.1.0)
169
+ rack (>= 1.0, < 3)
170
+ rails (6.1.3.1)
171
+ actioncable (= 6.1.3.1)
172
+ actionmailbox (= 6.1.3.1)
173
+ actionmailer (= 6.1.3.1)
174
+ actionpack (= 6.1.3.1)
175
+ actiontext (= 6.1.3.1)
176
+ actionview (= 6.1.3.1)
177
+ activejob (= 6.1.3.1)
178
+ activemodel (= 6.1.3.1)
179
+ activerecord (= 6.1.3.1)
180
+ activestorage (= 6.1.3.1)
181
+ activesupport (= 6.1.3.1)
182
+ bundler (>= 1.15.0)
183
+ railties (= 6.1.3.1)
184
+ sprockets-rails (>= 2.0.0)
185
+ rails-dom-testing (2.0.3)
186
+ activesupport (>= 4.2.0)
187
+ nokogiri (>= 1.6)
188
+ rails-html-sanitizer (1.3.0)
189
+ loofah (~> 2.3)
190
+ railties (6.1.3.1)
191
+ actionpack (= 6.1.3.1)
192
+ activesupport (= 6.1.3.1)
193
+ method_source
194
+ rake (>= 0.8.7)
195
+ thor (~> 1.0)
196
+ rainbow (3.0.0)
197
+ rake (13.0.3)
198
+ retriable (3.1.2)
199
+ rexml (3.2.5)
200
+ rspec (3.10.0)
201
+ rspec-core (~> 3.10.0)
202
+ rspec-expectations (~> 3.10.0)
203
+ rspec-mocks (~> 3.10.0)
204
+ rspec-core (3.10.1)
205
+ rspec-support (~> 3.10.0)
206
+ rspec-expectations (3.10.1)
207
+ diff-lcs (>= 1.2.0, < 2.0)
208
+ rspec-support (~> 3.10.0)
209
+ rspec-mocks (3.10.2)
210
+ diff-lcs (>= 1.2.0, < 2.0)
211
+ rspec-support (~> 3.10.0)
212
+ rspec-rails (5.0.1)
213
+ actionpack (>= 5.2)
214
+ activesupport (>= 5.2)
215
+ railties (>= 5.2)
216
+ rspec-core (~> 3.10)
217
+ rspec-expectations (~> 3.10)
218
+ rspec-mocks (~> 3.10)
219
+ rspec-support (~> 3.10)
220
+ rspec-support (3.10.2)
221
+ rubocop (0.76.0)
222
+ jaro_winkler (~> 1.5.1)
223
+ parallel (~> 1.10)
224
+ parser (>= 2.6)
225
+ rainbow (>= 2.2.2, < 4.0)
226
+ ruby-progressbar (~> 1.7)
227
+ unicode-display_width (>= 1.4.0, < 1.7)
228
+ rubocop-rspec (1.37.0)
229
+ rubocop (>= 0.68.1)
230
+ ruby-progressbar (1.11.0)
231
+ ruby2_keywords (0.0.4)
232
+ semantic_logger (4.7.2)
233
+ concurrent-ruby (~> 1.0)
234
+ signet (0.15.0)
235
+ addressable (~> 2.3)
236
+ faraday (>= 0.17.3, < 2.0)
237
+ jwt (>= 1.5, < 3.0)
238
+ multi_json (~> 1.10)
239
+ sprockets (4.0.2)
240
+ concurrent-ruby (~> 1.0)
241
+ rack (> 1, < 3)
242
+ sprockets-rails (3.2.2)
243
+ actionpack (>= 4.0)
244
+ activesupport (>= 4.0)
245
+ sprockets (>= 3.0.0)
246
+ sqlite3 (1.4.2)
247
+ thor (1.1.0)
248
+ timecop (0.9.4)
249
+ tzinfo (2.0.4)
250
+ concurrent-ruby (~> 1.0)
251
+ unicode-display_width (1.6.1)
252
+ webmock (3.12.2)
253
+ addressable (>= 2.3.6)
254
+ crack (>= 0.3.2)
255
+ hashdiff (>= 0.4.0, < 2.0.0)
256
+ websocket-driver (0.7.3)
257
+ websocket-extensions (>= 0.1.0)
258
+ websocket-extensions (0.1.5)
259
+ zeitwerk (2.4.2)
260
+
261
+ PLATFORMS
262
+ ruby
263
+
264
+ DEPENDENCIES
265
+ appraisal
266
+ cloudenvoy!
267
+ rails
268
+ rake (>= 12.3.3)
269
+ rspec (~> 3.0)
270
+ rspec-rails
271
+ rubocop (= 0.76.0)
272
+ rubocop-rspec (= 1.37.0)
273
+ semantic_logger (= 4.7.2)
274
+ sqlite3
275
+ timecop
276
+ webmock
277
+
278
+ BUNDLED WITH
279
+ 2.2.9
@@ -17,6 +17,15 @@ module Cloudenvoy
17
17
  Cloudenvoy.config
18
18
  end
19
19
 
20
+ #
21
+ # Return true if the current config mode is development.
22
+ #
23
+ # @return [Boolean] True if Cloudenvoy is run in development mode.
24
+ #
25
+ def development?
26
+ config.mode == :development
27
+ end
28
+
20
29
  #
21
30
  # Return the backend to use for sending messages.
22
31
  #
@@ -25,7 +34,7 @@ module Cloudenvoy
25
34
  def backend
26
35
  @backend ||= Google::Cloud::PubSub.new({
27
36
  project_id: config.gcp_project_id,
28
- emulator_host: config.mode == :development ? Cloudenvoy::Config::EMULATOR_HOST : nil
37
+ emulator_host: development? ? Cloudenvoy::Config::EMULATOR_HOST : nil
29
38
  }.compact)
30
39
  end
31
40
 
@@ -88,6 +97,12 @@ module Cloudenvoy
88
97
  def upsert_subscription(topic, name, opts = {})
89
98
  sub_config = opts.to_h.merge(endpoint: webhook_url)
90
99
 
100
+ # Auto-create topic in development. In non-development environments
101
+ # the create subscription action raises an error if the topic does
102
+ # not exist
103
+ upsert_topic(topic) if development?
104
+
105
+ # Create subscription
91
106
  ps_sub =
92
107
  begin
93
108
  # Retrieve the topic
@@ -153,7 +153,7 @@ module Cloudenvoy
153
153
  #
154
154
  def log_message(level, msg, &block)
155
155
  # Merge log-specific context into object-specific context
156
- payload_block = -> { log_block.call.merge(block&.call || {}) }
156
+ payload_block = ->(*_args) { log_block.call.merge(block&.call || {}) }
157
157
 
158
158
  # ActiveSupport::Logger does not support passing a payload through a block on top
159
159
  # of a message.
@@ -75,8 +75,8 @@ module Cloudenvoy
75
75
  def to_h
76
76
  {
77
77
  id: id,
78
- payload: payload,
79
- metadata: metadata,
78
+ payload: payload&.dup,
79
+ metadata: metadata&.dup,
80
80
  topic: topic,
81
81
  sub_uri: sub_uri
82
82
  }.compact
@@ -200,6 +200,7 @@ module Cloudenvoy
200
200
  begin
201
201
  publish_message
202
202
  rescue StandardError => e
203
+ logger.error([e, e.backtrace.join("\n")].join("\n"))
203
204
  try(:on_error, e)
204
205
  return raise(e)
205
206
  end
@@ -53,7 +53,7 @@ module Cloudenvoy
53
53
  # @return [Array<String,String>] A tuple [subscriber_name, topic ]
54
54
  #
55
55
  def self.parse_sub_uri(sub_uri)
56
- sub_uri.split('/').last.split('.').last(2)
56
+ sub_uri.split('/').last.split('.', 2).last.split('.', 2)
57
57
  end
58
58
 
59
59
  #
@@ -211,8 +211,9 @@ module Cloudenvoy
211
211
  begin
212
212
  process(message)
213
213
  rescue StandardError => e
214
+ logger.error([e, e.backtrace.join("\n")].join("\n"))
214
215
  try(:on_error, e)
215
- return raise(e)
216
+ raise(e)
216
217
  end
217
218
  end
218
219
  ensure
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Cloudenvoy
4
- VERSION = '0.3.0'
4
+ VERSION = '0.4.2'
5
5
  end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails/generators/named_base'
4
+
5
+ module Cloudenvoy
6
+ module Generators # :nodoc:
7
+ class PublisherGenerator < ::Rails::Generators::NamedBase # :nodoc:
8
+ desc 'This generator creates a CloudEnvoy in app/publishers and a corresponding test'
9
+
10
+ check_class_collision suffix: 'Publisher'
11
+
12
+ def self.default_generator_root
13
+ File.dirname(__FILE__)
14
+ end
15
+
16
+ def create_publisher_file
17
+ template 'publisher.rb.erb', File.join('app/publishers', class_path, "#{file_name}_publisher.rb")
18
+ end
19
+
20
+ def create_test_file
21
+ return unless test_framework
22
+
23
+ create_publisher_spec if test_framework == :rspec
24
+ end
25
+
26
+ private
27
+
28
+ def create_publisher_spec
29
+ template_file = File.join(
30
+ 'spec/publishers',
31
+ class_path,
32
+ "#{file_name}_publisher_spec.rb"
33
+ )
34
+ template 'publisher_spec.rb.erb', template_file
35
+ end
36
+
37
+ def file_name
38
+ @file_name ||= super.sub(/_?publisher\z/i, '')
39
+ end
40
+
41
+ def test_framework
42
+ ::Rails.application.config.generators.options[:rails][:test_framework]
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails/generators/named_base'
4
+
5
+ module Cloudenvoy
6
+ module Generators # :nodoc:
7
+ class SubscriberGenerator < ::Rails::Generators::NamedBase # :nodoc:
8
+ desc 'This generator creates a CloudEnvoy in app/subscribers and a corresponding test'
9
+
10
+ check_class_collision suffix: 'Subscriber'
11
+
12
+ def self.default_generator_root
13
+ File.dirname(__FILE__)
14
+ end
15
+
16
+ def create_subscriber_file
17
+ template 'subscriber.rb.erb', File.join('app/subscribers', class_path, "#{file_name}_subscriber.rb")
18
+ end
19
+
20
+ def create_test_file
21
+ return unless test_framework
22
+
23
+ create_subscriber_spec if test_framework == :rspec
24
+ end
25
+
26
+ private
27
+
28
+ def create_subscriber_spec
29
+ template_file = File.join(
30
+ 'spec/subscribers',
31
+ class_path,
32
+ "#{file_name}_subscriber_spec.rb"
33
+ )
34
+ template 'subscriber_spec.rb.erb', template_file
35
+ end
36
+
37
+ def file_name
38
+ @file_name ||= super.sub(/_?subscriber\z/i, '')
39
+ end
40
+
41
+ def test_framework
42
+ ::Rails.application.config.generators.options[:rails][:test_framework]
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,11 @@
1
+ <% module_namespacing do -%>
2
+ class <%= class_name %>Publisher
3
+ include Cloudenvoy::Publisher
4
+
5
+ cloudenvoy_options topic: 'test-msgs'
6
+
7
+ def payload(msg)
8
+ # Format the message payload. The payload can be a hash or a string.
9
+ end
10
+ end
11
+ <% end -%>
@@ -0,0 +1,6 @@
1
+ require 'rails_helper'
2
+ <% module_namespacing do -%>
3
+ RSpec.describe <%= class_name %>Publisher, type: :publisher do
4
+ pending "add some examples to (or delete) #{__FILE__}"
5
+ end
6
+ <% end -%>
@@ -0,0 +1,11 @@
1
+ <% module_namespacing do -%>
2
+ class <%= class_name %>Subscriber
3
+ include Cloudenvoy::Subscriber
4
+
5
+ cloudenvoy_options topic: 'test-msgs'
6
+
7
+ def process(msg)
8
+ # Do something
9
+ end
10
+ end
11
+ <% end -%>
@@ -0,0 +1,6 @@
1
+ require 'rails_helper'
2
+ <% module_namespacing do -%>
3
+ RSpec.describe <%= class_name %>Subscriber, type: :subscriber do
4
+ pending "add some examples to (or delete) #{__FILE__}"
5
+ end
6
+ <% end -%>
@@ -23,8 +23,8 @@ namespace :cloudenvoy do
23
23
 
24
24
  # Notify user when no suscribers
25
25
  if list.empty?
26
- puts 'There are no subscribers defined in your application'
27
- return
26
+ puts 'Skipping subscribers (none defined)'
27
+ next
28
28
  end
29
29
 
30
30
  puts 'The following subscribers are configured:'
@@ -47,8 +47,8 @@ namespace :cloudenvoy do
47
47
 
48
48
  # Notify user when no topics
49
49
  if list.empty?
50
- puts 'There are no publishers defined in your application'
51
- return
50
+ puts 'Skipping publishers (none defined)'
51
+ next
52
52
  end
53
53
 
54
54
  puts 'The following topics are configured:'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudenvoy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arnaud Lachaume
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-09-26 00:00:00.000000000 Z
11
+ date: 2021-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - '='
137
137
  - !ruby/object:Gem::Version
138
138
  version: 1.37.0
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'
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: timecop
141
155
  requirement: !ruby/object:Gem::Requirement
@@ -221,11 +235,9 @@ files:
221
235
  - CHANGELOG.md
222
236
  - CODE_OF_CONDUCT.md
223
237
  - Gemfile
224
- - Gemfile.lock
225
238
  - LICENSE.txt
226
239
  - README.md
227
240
  - Rakefile
228
- - app/controllers/cloudenvoy/application_controller.rb
229
241
  - app/controllers/cloudenvoy/subscriber_controller.rb
230
242
  - bin/console
231
243
  - bin/setup
@@ -297,10 +309,27 @@ files:
297
309
  - examples/rails/storage/.keep
298
310
  - examples/rails/tmp/.keep
299
311
  - examples/rails/tmp/development_secret.txt
312
+ - examples/sinatra/Gemfile
313
+ - examples/sinatra/Gemfile.lock
314
+ - examples/sinatra/Procfile
315
+ - examples/sinatra/README.md
316
+ - examples/sinatra/app.rb
317
+ - examples/sinatra/app/publishers/hello_publisher.rb
318
+ - examples/sinatra/app/subscribers/hello_subscriber.rb
319
+ - examples/sinatra/bin/console
320
+ - examples/sinatra/config/initializers/cloudenvoy.rb
300
321
  - gemfiles/rails_5.2.gemfile
301
322
  - gemfiles/rails_5.2.gemfile.lock
302
323
  - gemfiles/rails_6.0.gemfile
303
324
  - gemfiles/rails_6.0.gemfile.lock
325
+ - gemfiles/semantic_logger_3.4.gemfile
326
+ - gemfiles/semantic_logger_3.4.gemfile.lock
327
+ - gemfiles/semantic_logger_4.6.gemfile
328
+ - gemfiles/semantic_logger_4.6.gemfile.lock
329
+ - gemfiles/semantic_logger_4.7.0.gemfile
330
+ - gemfiles/semantic_logger_4.7.0.gemfile.lock
331
+ - gemfiles/semantic_logger_4.7.2.gemfile
332
+ - gemfiles/semantic_logger_4.7.2.gemfile.lock
304
333
  - lib/cloudenvoy.rb
305
334
  - lib/cloudenvoy/authentication_error.rb
306
335
  - lib/cloudenvoy/authenticator.rb
@@ -321,6 +350,12 @@ files:
321
350
  - lib/cloudenvoy/testing.rb
322
351
  - lib/cloudenvoy/topic.rb
323
352
  - lib/cloudenvoy/version.rb
353
+ - lib/generators/cloudenvoy/publisher_generator.rb
354
+ - lib/generators/cloudenvoy/subscriber_generator.rb
355
+ - lib/generators/cloudenvoy/templates/publisher.rb.erb
356
+ - lib/generators/cloudenvoy/templates/publisher_spec.rb.erb
357
+ - lib/generators/cloudenvoy/templates/subscriber.rb.erb
358
+ - lib/generators/cloudenvoy/templates/subscriber_spec.rb.erb
324
359
  - lib/tasks/cloudenvoy.rake
325
360
  homepage: https://github.com/keypup-io/cloudenvoy
326
361
  licenses:
@@ -329,7 +364,7 @@ metadata:
329
364
  homepage_uri: https://github.com/keypup-io/cloudenvoy
330
365
  source_code_uri: https://github.com/keypup-io/cloudenvoy
331
366
  changelog_uri: https://github.com/keypup-io/cloudenvoy/master/tree/CHANGELOG.md
332
- post_install_message:
367
+ post_install_message:
333
368
  rdoc_options: []
334
369
  require_paths:
335
370
  - lib
@@ -345,7 +380,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
345
380
  version: '0'
346
381
  requirements: []
347
382
  rubygems_version: 3.0.0
348
- signing_key:
383
+ signing_key:
349
384
  specification_version: 4
350
385
  summary: Cross-application messaging using GCP Pub/Sub (alpha)
351
386
  test_files: []