isimud 0.7.0 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rspec +1 -2
  4. data/.ruby-version +1 -1
  5. data/.yardoc/checksums +10 -10
  6. data/.yardoc/object_types +0 -0
  7. data/.yardoc/objects/root.dat +0 -0
  8. data/Gemfile +2 -1
  9. data/Gemfile.lock +63 -73
  10. data/LICENSE.txt +19 -0
  11. data/README.md +51 -3
  12. data/Rakefile +5 -0
  13. data/doc/Isimud/BunnyClient.html +882 -179
  14. data/doc/Isimud/Client.html +236 -18
  15. data/doc/Isimud/Event.html +211 -95
  16. data/doc/Isimud/EventListener.html +325 -307
  17. data/doc/Isimud/EventObserver/ClassMethods.html +14 -14
  18. data/doc/Isimud/EventObserver.html +418 -36
  19. data/doc/Isimud/Generators/ConfigGenerator.html +2 -2
  20. data/doc/Isimud/Generators/InitializerGenerator.html +2 -2
  21. data/doc/Isimud/Generators.html +2 -2
  22. data/doc/Isimud/Logging.html +3 -3
  23. data/doc/Isimud/ModelWatcher/ClassMethods.html +3 -3
  24. data/doc/Isimud/ModelWatcher.html +2 -2
  25. data/doc/Isimud/Railtie.html +2 -2
  26. data/doc/Isimud/TestClient/Queue.html +374 -71
  27. data/doc/Isimud/TestClient.html +169 -161
  28. data/doc/Isimud.html +80 -76
  29. data/doc/_index.html +5 -2
  30. data/doc/file.LICENSE.html +73 -0
  31. data/doc/file.README.html +131 -7
  32. data/doc/file_list.html +3 -0
  33. data/doc/index.html +131 -7
  34. data/doc/method_list.html +183 -105
  35. data/doc/top-level-namespace.html +2 -2
  36. data/isimud.gemspec +18 -16
  37. data/lib/isimud/bunny_client.rb +85 -32
  38. data/lib/isimud/client.rb +23 -7
  39. data/lib/isimud/event.rb +11 -14
  40. data/lib/isimud/event_listener.rb +123 -65
  41. data/lib/isimud/event_observer.rb +70 -10
  42. data/lib/isimud/model_watcher.rb +1 -1
  43. data/lib/isimud/test_client.rb +54 -26
  44. data/lib/isimud/version.rb +1 -1
  45. data/lib/isimud.rb +1 -1
  46. data/spec/internal/app/models/company.rb +8 -10
  47. data/spec/internal/app/models/user.rb +11 -1
  48. data/spec/internal/db/schema.rb +5 -0
  49. data/spec/isimud/bunny_client_spec.rb +21 -9
  50. data/spec/isimud/client_spec.rb +40 -0
  51. data/spec/isimud/event_listener_spec.rb +50 -22
  52. data/spec/isimud/event_observer_spec.rb +107 -16
  53. data/spec/isimud/model_watcher_spec.rb +18 -23
  54. data/spec/isimud/test_client_spec.rb +43 -8
  55. data/spec/isimud_spec.rb +2 -2
  56. data/spec/spec_helper.rb +2 -0
  57. metadata +19 -35
  58. checksums.yaml.gz.sig +0 -0
  59. data/certs/gfeil.pem +0 -21
  60. data/release +0 -31
  61. data.tar.gz.sig +0 -0
  62. metadata.gz.sig +0 -2
@@ -2,6 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe Isimud::ModelWatcher do
4
4
  let(:client) { Isimud.client }
5
+ let(:exchange) { Isimud.model_watcher_exchange }
5
6
 
6
7
  describe '.watch_attributes' do
7
8
  context 'default' do
@@ -35,7 +36,6 @@ describe Isimud::ModelWatcher do
35
36
 
36
37
 
37
38
  messages = Array.new
38
- exchange = Isimud::ModelWatcher::DEFAULT_EXCHANGE
39
39
  routing_key = 'test_schema.User.create'
40
40
 
41
41
  Isimud.client.bind('model_watcher_spec_create', exchange, routing_key) do |payload|
@@ -50,7 +50,6 @@ describe Isimud::ModelWatcher do
50
50
  context 'with default attributes' do
51
51
  it 'sends a create message with default attributes' do
52
52
  messages = Array.new
53
- exchange = Isimud::ModelWatcher::DEFAULT_EXCHANGE
54
53
  routing_key = 'test_schema.Company.create'
55
54
 
56
55
  Isimud.client.bind('model_watcher_spec_create_company', exchange, routing_key) do |payload|
@@ -59,7 +58,7 @@ describe Isimud::ModelWatcher do
59
58
  company = Company.new(name: 'Google', url: 'http://google.com')
60
59
  company.save!
61
60
  message = JSON.parse(messages.first)
62
- expect(message['attributes'].keys).to eql(%w(name description url user_count active created_at updated_at))
61
+ expect(message['attributes'].keys).to eql(%w(name description url user_count active exchange_routing_keys points_per_user total_points created_at updated_at))
63
62
  end
64
63
 
65
64
  end
@@ -71,7 +70,7 @@ describe Isimud::ModelWatcher do
71
70
  last_name: 'Feil',
72
71
  encrypted_password: "itsasecret",
73
72
  email: 'george.feil@keas.com')
74
- user.stub(:isimud_synchronize?).and_return(false)
73
+ expect(user).to receive(:isimud_synchronize?).and_return(false)
75
74
  messages = Array.new
76
75
  Isimud.client.bind('model_watcher_spec_create', Isimud::ModelWatcher::DEFAULT_EXCHANGE, '*') do |payload|
77
76
  messages << payload
@@ -107,7 +106,7 @@ describe Isimud::ModelWatcher do
107
106
  before(:all) do
108
107
  @messages = Array.new
109
108
  Isimud.client.bind('model_watcher_spec_update',
110
- Isimud::ModelWatcher::DEFAULT_EXCHANGE,
109
+ Isimud.model_watcher_exchange,
111
110
  'test_schema.User.update') do |payload|
112
111
  @messages << payload
113
112
  end
@@ -143,32 +142,28 @@ describe Isimud::ModelWatcher do
143
142
  end
144
143
 
145
144
  describe 'when destroying an instance' do
146
- before(:all) do
145
+ before(:each) do
147
146
  @messages = Array.new
147
+ @user = User.create!(first_name: 'Geo',
148
+ last_name: 'Feil',
149
+ encrypted_password: "itsasecret",
150
+ email: 'george.feil@keas.com')
148
151
  Isimud.client.bind('model_watcher_spec_destroy',
149
- Isimud::ModelWatcher::DEFAULT_EXCHANGE,
152
+ exchange,
150
153
  'test_schema.User.destroy') do |payload|
151
154
  @messages << payload
152
155
  end
153
156
  end
154
- before(:each) do
155
- @messages.clear
156
- end
157
157
 
158
- let!(:user) { User.create!(first_name: 'Geo',
159
- last_name: 'Feil',
160
- encrypted_password: "itsasecret",
161
- email: 'george.feil@keas.com') }
162
158
  it 'sends a destroy message' do
163
- Timecop.freeze do
164
- user.destroy
165
- expected_message = {schema: 'test_schema',
166
- type: 'User',
167
- action: :destroy,
168
- id: user.id,
169
- timestamp: Time.now.utc}.to_json
170
- expect(@messages).to include(expected_message)
171
- end
159
+ @user.destroy
160
+ expected_message = {schema: 'test_schema',
161
+ type: 'User',
162
+ action: :destroy,
163
+ id: @user.id,
164
+ timestamp: @user.updated_at.utc,
165
+ attributes: {:key => @user.key, :login_count => @user.login_count}}.to_json
166
+ expect(@messages).to include(expected_message)
172
167
  end
173
168
  end
174
169
 
@@ -1,28 +1,63 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Isimud::TestClient do
4
- let(:client) { Isimud::TestClient.new(url) }
4
+ let(:client) { Isimud::TestClient.new }
5
5
  let!(:connection) { client.connect }
6
+ let!(:keys) { %w(foo.bar baz.*.argle) }
7
+
8
+ before(:each) do
9
+ @called = false
10
+ @proc = Proc.new { @called = true }
11
+ end
6
12
 
7
13
  after(:each) do
8
14
  client.close
9
15
  end
10
16
 
11
17
  describe '#initialize' do
12
- it 'sets up new queues'
18
+ it 'sets up an empty set of queues' do
19
+ expect( client.queues ).to be_empty
20
+ end
13
21
  end
14
22
 
15
- describe '#bind' do
16
- let(:proc) { Proc.new { puts('hello') } }
17
- let(:keys) { %w(foo.bar baz.*) }
23
+ describe 'queues and bindings' do
24
+ before do
25
+ client.bind('queue_name', 'exchange_name', *keys, &@proc)
26
+ end
27
+ let!(:queue) { client.find_queue('queue_name') }
18
28
 
19
- it 'creates a new queue'
29
+ it 'binds routing keys to the queue' do
30
+ expect( queue.bindings ).to eql('exchange_name' => Set.new(keys))
31
+ end
32
+
33
+ it 'removes a binding from the queue' do
34
+ queue.unbind('exchange_name', routing_key: 'foo.bar')
35
+ expect( queue.bindings ).to eql('exchange_name' => Set.new(['baz.*.argle']))
36
+ end
37
+ end
20
38
 
21
- it 'binds specified routing keys and calls the specified method'
39
+ describe '#unbind' do
40
+ before do
41
+ client.bind('queue_name', 'exchange_name', *keys, &@proc)
42
+ end
22
43
  end
23
44
 
24
45
  describe '#publish' do
25
- it 'pushes the data to the appropriate queues'
46
+ before do
47
+ @dont_call = false
48
+ @dont_call_proc = Proc.new { @dont_call = true }
49
+ client.bind('queue_name', 'exchange_name', *keys, &@proc)
50
+ client.bind('other_queue', 'exchange_name', 'no.match.*', &@dont_call_proc)
51
+ client.publish('exchange_name', 'baz.1.argle', {abc: 'do re me'})
52
+ end
53
+
54
+ it 'calls proc for the matching queue' do
55
+ expect(@called).to be_truthy
56
+ end
57
+
58
+ it 'does not call proc for non matching queue' do
59
+ expect(@dont_call).to be_falsey
60
+ end
26
61
  end
27
62
 
28
63
  end
data/spec/isimud_spec.rb CHANGED
@@ -12,7 +12,7 @@ describe Isimud do
12
12
  end
13
13
 
14
14
  it 'creates a new TestClient client' do
15
- Isimud.client.should be_a Isimud::TestClient
15
+ expect( Isimud.client ).to be_a Isimud::TestClient
16
16
  end
17
17
  end
18
18
 
@@ -33,7 +33,7 @@ describe Isimud do
33
33
 
34
34
  describe '.model_watcher_enabled?' do
35
35
  it 'is true by default' do
36
- Isimud.should be_model_watcher_enabled
36
+ expect(Isimud).to be_model_watcher_enabled
37
37
  end
38
38
 
39
39
  it 'is true if enable_model_watcher is explicitly set' do
data/spec/spec_helper.rb CHANGED
@@ -12,7 +12,9 @@ Isimud.client_type = :test
12
12
  Isimud.logger = Logger.new(STDOUT)
13
13
  Isimud.logger.level = Logger::DEBUG
14
14
  Isimud.log_level = :debug
15
+ Isimud.listener_error_limit = 50
15
16
  Isimud.enable_model_watcher = true
17
+ Isimud.model_watcher_exchange = 'isimud.test.events'
16
18
  Isimud.model_watcher_schema = 'test_schema'
17
19
  Isimud::EventObserver.observed_models = Array.new
18
20
  Isimud::EventObserver.observed_mutex = Mutex.new
metadata CHANGED
@@ -1,37 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isimud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - George Feil
8
8
  - Brian Jenkins
9
9
  autorequire:
10
10
  bindir: bin
11
- cert_chain:
12
- - |
13
- -----BEGIN CERTIFICATE-----
14
- MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBBMRQwEgYDVQQDDAtnZW9y
15
- Z2UuZmVpbDEUMBIGCgmSJomT8ixkARkWBGtlYXMxEzARBgoJkiaJk/IsZAEZFgNj
16
- b20wHhcNMTYwODA5MjEwNDU1WhcNMTcwODA5MjEwNDU1WjBBMRQwEgYDVQQDDAtn
17
- ZW9yZ2UuZmVpbDEUMBIGCgmSJomT8ixkARkWBGtlYXMxEzARBgoJkiaJk/IsZAEZ
18
- FgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDDFBKCoLQgCUv1
19
- 86ykJOCtnWhQ12Eymfnu5btV3DKMMLxjUDG18vy1Clhw04afp36Rc+oMvP1VxYeH
20
- lRWdLtnWy2DAu2dxeFlWvacAegDcmQSw9vfyS7yD8zoLhJGeIflJ3eenTa+nRiQ2
21
- DBPL1qRdfSrBNBXVlTYvs/PGE0SLJPtil8oRsifqk7ETPCUx5gRSxzzp0JykjrUd
22
- cIu2u06Dv5GyDVwJu5/m4wLJSc2Bmore7rmOctBSNYtXTcMGVQOfskhncLNeE56V
23
- R7byYxJ92HQt4svMjbK0hN+27asFpXaVU9ZeNQeEOOsgq8ecdypAWjwlOaH580K5
24
- aH24zkstAgMBAAGjezB5MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
25
- BBSXpvM46ec2Ds6ErCpZkXFZtsEh7TAfBgNVHREEGDAWgRRnZW9yZ2UuZmVpbEBr
26
- ZWFzLmNvbTAfBgNVHRIEGDAWgRRnZW9yZ2UuZmVpbEBrZWFzLmNvbTANBgkqhkiG
27
- 9w0BAQUFAAOCAQEAEXuMNAP35/nzBGj5aodPKIgH2Bvda9IF8OC4sDmQsRsUQzDw
28
- wRi3rWoNzUU+QexdZqhLXSwGuPNgMgmPKaOu09LjpKKbem9VDicUEhNDL27CYMJZ
29
- 1oO1kEqjbZW60HZcfDNrw8Q6ARBRhKXpPJsbYrR2QRzx1P0oVkFtmc9Qu4gvFy3c
30
- hIevyUPfcaBRWNfXCQnyFXZcHqcTywEgNyXTJZ6zUNZSHIQPzLOyzqa+muVO8Ob/
31
- wSKk31gq6KY7rgi11mcLvVzwSuwZFqnonAmu/uin3cbXcOUkqNsyzZ0LQLXNKiwi
32
- k0RgrsSNtQ8hcsVSQla0Ot+X3WpFI4ZuIfSLFA==
33
- -----END CERTIFICATE-----
34
- date: 2016-09-19 00:00:00.000000000 Z
11
+ cert_chain: []
12
+ date: 2016-01-14 00:00:00.000000000 Z
35
13
  dependencies:
36
14
  - !ruby/object:Gem::Dependency
37
15
  name: activerecord
@@ -39,28 +17,28 @@ dependencies:
39
17
  requirements:
40
18
  - - ">="
41
19
  - !ruby/object:Gem::Version
42
- version: 3.2.17
20
+ version: 4.1.4
43
21
  type: :runtime
44
22
  prerelease: false
45
23
  version_requirements: !ruby/object:Gem::Requirement
46
24
  requirements:
47
25
  - - ">="
48
26
  - !ruby/object:Gem::Version
49
- version: 3.2.17
27
+ version: 4.1.4
50
28
  - !ruby/object:Gem::Dependency
51
29
  name: activesupport
52
30
  requirement: !ruby/object:Gem::Requirement
53
31
  requirements:
54
32
  - - ">="
55
33
  - !ruby/object:Gem::Version
56
- version: 3.2.17
34
+ version: 4.1.4
57
35
  type: :runtime
58
36
  prerelease: false
59
37
  version_requirements: !ruby/object:Gem::Requirement
60
38
  requirements:
61
39
  - - ">="
62
40
  - !ruby/object:Gem::Version
63
- version: 3.2.17
41
+ version: 4.1.4
64
42
  - !ruby/object:Gem::Dependency
65
43
  name: bunny
66
44
  requirement: !ruby/object:Gem::Requirement
@@ -90,9 +68,13 @@ dependencies:
90
68
  - !ruby/object:Gem::Version
91
69
  version: 0.10.6
92
70
  description: |
93
- Isimud is an AMQP message publishing and consumption gem intended for Rails applications. You can use it to define
94
- message consumption queues for ActiveRecord instances, or synchronize model updates between processes. It also provides
95
- an event listener background process for managing queues that consume messages.
71
+ Isimud is an AMQP message publishing and consumption gem that is intended for managing asynchronous event queues in Rails applications. It consists of the following components:
72
+
73
+ * A [Bunny](http://rubybunny.info) based client interface for publishing and receiving messages using AMQP.
74
+ * A test client which mocks most client operations and allows for synchronous delivery and processing of messages for unit tests.
75
+ * A Model Watcher mixin for ActiveRecord that automatically sends messages whenever an ActiveRecord instance is created, modified, or destroyed.
76
+ * An Event Observer mixin for registering ActiveRecord models and instances with the EventListener for receiving messages.
77
+ * An Event Listener daemon process which manages queues and dispatches messages for Event Observers.
96
78
  email:
97
79
  - george.feil@keas.com
98
80
  - bonkydog@bonkydog.com
@@ -109,9 +91,9 @@ files:
109
91
  - ".yardoc/proxy_types"
110
92
  - Gemfile
111
93
  - Gemfile.lock
94
+ - LICENSE.txt
112
95
  - README.md
113
96
  - Rakefile
114
- - certs/gfeil.pem
115
97
  - config.ru
116
98
  - config/tddium.yml
117
99
  - doc/Isimud.html
@@ -135,6 +117,7 @@ files:
135
117
  - doc/css/common.css
136
118
  - doc/css/full_list.css
137
119
  - doc/css/style.css
120
+ - doc/file.LICENSE.html
138
121
  - doc/file.README.html
139
122
  - doc/file_list.html
140
123
  - doc/frames.html
@@ -161,7 +144,6 @@ files:
161
144
  - lib/rails/generators/isimud/initializer_generator.rb
162
145
  - lib/rails/generators/isimud/templates/initializer.rb
163
146
  - lib/rails/generators/isimud/templates/isimud.yml
164
- - release
165
147
  - spec/internal/app/models/admin.rb
166
148
  - spec/internal/app/models/company.rb
167
149
  - spec/internal/app/models/user.rb
@@ -171,6 +153,7 @@ files:
171
153
  - spec/internal/log/.gitignore
172
154
  - spec/internal/public/favicon.ico
173
155
  - spec/isimud/bunny_client_spec.rb
156
+ - spec/isimud/client_spec.rb
174
157
  - spec/isimud/event_listener_spec.rb
175
158
  - spec/isimud/event_observer_spec.rb
176
159
  - spec/isimud/event_spec.rb
@@ -198,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
198
181
  version: '0'
199
182
  requirements: []
200
183
  rubyforge_project:
201
- rubygems_version: 2.5.1
184
+ rubygems_version: 2.4.5.1
202
185
  signing_key:
203
186
  specification_version: 4
204
187
  summary: AMQP Messaging and Event Processing
@@ -212,6 +195,7 @@ test_files:
212
195
  - spec/internal/log/.gitignore
213
196
  - spec/internal/public/favicon.ico
214
197
  - spec/isimud/bunny_client_spec.rb
198
+ - spec/isimud/client_spec.rb
215
199
  - spec/isimud/event_listener_spec.rb
216
200
  - spec/isimud/event_observer_spec.rb
217
201
  - spec/isimud/event_spec.rb
checksums.yaml.gz.sig DELETED
Binary file
data/certs/gfeil.pem DELETED
@@ -1,21 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBBMRQwEgYDVQQDDAtnZW9y
3
- Z2UuZmVpbDEUMBIGCgmSJomT8ixkARkWBGtlYXMxEzARBgoJkiaJk/IsZAEZFgNj
4
- b20wHhcNMTYwODA5MjEwNDU1WhcNMTcwODA5MjEwNDU1WjBBMRQwEgYDVQQDDAtn
5
- ZW9yZ2UuZmVpbDEUMBIGCgmSJomT8ixkARkWBGtlYXMxEzARBgoJkiaJk/IsZAEZ
6
- FgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDDFBKCoLQgCUv1
7
- 86ykJOCtnWhQ12Eymfnu5btV3DKMMLxjUDG18vy1Clhw04afp36Rc+oMvP1VxYeH
8
- lRWdLtnWy2DAu2dxeFlWvacAegDcmQSw9vfyS7yD8zoLhJGeIflJ3eenTa+nRiQ2
9
- DBPL1qRdfSrBNBXVlTYvs/PGE0SLJPtil8oRsifqk7ETPCUx5gRSxzzp0JykjrUd
10
- cIu2u06Dv5GyDVwJu5/m4wLJSc2Bmore7rmOctBSNYtXTcMGVQOfskhncLNeE56V
11
- R7byYxJ92HQt4svMjbK0hN+27asFpXaVU9ZeNQeEOOsgq8ecdypAWjwlOaH580K5
12
- aH24zkstAgMBAAGjezB5MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
13
- BBSXpvM46ec2Ds6ErCpZkXFZtsEh7TAfBgNVHREEGDAWgRRnZW9yZ2UuZmVpbEBr
14
- ZWFzLmNvbTAfBgNVHRIEGDAWgRRnZW9yZ2UuZmVpbEBrZWFzLmNvbTANBgkqhkiG
15
- 9w0BAQUFAAOCAQEAEXuMNAP35/nzBGj5aodPKIgH2Bvda9IF8OC4sDmQsRsUQzDw
16
- wRi3rWoNzUU+QexdZqhLXSwGuPNgMgmPKaOu09LjpKKbem9VDicUEhNDL27CYMJZ
17
- 1oO1kEqjbZW60HZcfDNrw8Q6ARBRhKXpPJsbYrR2QRzx1P0oVkFtmc9Qu4gvFy3c
18
- hIevyUPfcaBRWNfXCQnyFXZcHqcTywEgNyXTJZ6zUNZSHIQPzLOyzqa+muVO8Ob/
19
- wSKk31gq6KY7rgi11mcLvVzwSuwZFqnonAmu/uin3cbXcOUkqNsyzZ0LQLXNKiwi
20
- k0RgrsSNtQ8hcsVSQla0Ot+X3WpFI4ZuIfSLFA==
21
- -----END CERTIFICATE-----
data/release DELETED
@@ -1,31 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'colored'
4
- require 'digest/sha2'
5
- require File.expand_path('lib/isimud/version.rb')
6
-
7
- def run!(command)
8
- puts "running #{command}".yellow
9
- system(command) || abort("Command #{command} failed, terminating!")
10
- end
11
-
12
- gem_name = 'isimud'
13
- gem_version = "#{gem_name}-#{Isimud::VERSION}.gem"
14
- built_gem_path = "pkg/#{gem_version}"
15
- puts "Building #{gem_name} version #{Isimud::VERSION}".cyan
16
- run! "gem build #{gem_name}.gemspec"
17
- run! "mv #{gem_version} #{built_gem_path}"
18
-
19
- puts 'Adding and committing checksum'.cyan
20
- checksum = Digest::SHA512.new.hexdigest(File.read(built_gem_path))
21
- checksum_path = "checksum/#{gem_name}-#{Isimud::VERSION}.gem.sha512"
22
- File.open(checksum_path, 'w') { |f| f.write(checksum) }
23
- run! "git add #{checksum_path}"
24
- run! "git commit -m 'added checksum for #{gem_version}' && git push origin"
25
-
26
- puts 'Publishing to RubyGems'.cyan
27
- run! "gem push #{built_gem_path}"
28
-
29
- puts 'Testing install'.cyan
30
- run! "gem install #{gem_name} -v #{Isimud::VERSION} -P MediumSecurity"
31
- Contact GitHub API Training Shop Blog About
data.tar.gz.sig DELETED
Binary file
metadata.gz.sig DELETED
@@ -1,2 +0,0 @@
1
- �ޖb��=�ҖN?1��Ԉ]�~����e_{�/;��ަg9�L�L�)��!�>=z�@�O��ōV��{�^�|#LOg<��in̻��pI~�9�e;��L�mVDWh�"��Ľ�;
2
- B�(M�P�q�8i������ɲ�4���='(B���Y�E{Ez�xː de+*U֐!��D�i��Uu?��o�C�sX�1�UĂkW��x��f������E?gH�������i�h���wb�@