isimud 0.7.0 → 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rspec +1 -2
- data/.ruby-version +1 -1
- data/.yardoc/checksums +10 -10
- data/.yardoc/object_types +0 -0
- data/.yardoc/objects/root.dat +0 -0
- data/Gemfile +2 -1
- data/Gemfile.lock +63 -73
- data/LICENSE.txt +19 -0
- data/README.md +51 -3
- data/Rakefile +5 -0
- data/doc/Isimud/BunnyClient.html +882 -179
- data/doc/Isimud/Client.html +236 -18
- data/doc/Isimud/Event.html +211 -95
- data/doc/Isimud/EventListener.html +325 -307
- data/doc/Isimud/EventObserver/ClassMethods.html +14 -14
- data/doc/Isimud/EventObserver.html +418 -36
- data/doc/Isimud/Generators/ConfigGenerator.html +2 -2
- data/doc/Isimud/Generators/InitializerGenerator.html +2 -2
- data/doc/Isimud/Generators.html +2 -2
- data/doc/Isimud/Logging.html +3 -3
- data/doc/Isimud/ModelWatcher/ClassMethods.html +3 -3
- data/doc/Isimud/ModelWatcher.html +2 -2
- data/doc/Isimud/Railtie.html +2 -2
- data/doc/Isimud/TestClient/Queue.html +374 -71
- data/doc/Isimud/TestClient.html +169 -161
- data/doc/Isimud.html +80 -76
- data/doc/_index.html +5 -2
- data/doc/file.LICENSE.html +73 -0
- data/doc/file.README.html +131 -7
- data/doc/file_list.html +3 -0
- data/doc/index.html +131 -7
- data/doc/method_list.html +183 -105
- data/doc/top-level-namespace.html +2 -2
- data/isimud.gemspec +18 -16
- data/lib/isimud/bunny_client.rb +85 -32
- data/lib/isimud/client.rb +23 -7
- data/lib/isimud/event.rb +11 -14
- data/lib/isimud/event_listener.rb +123 -65
- data/lib/isimud/event_observer.rb +70 -10
- data/lib/isimud/model_watcher.rb +1 -1
- data/lib/isimud/test_client.rb +54 -26
- data/lib/isimud/version.rb +1 -1
- data/lib/isimud.rb +1 -1
- data/spec/internal/app/models/company.rb +8 -10
- data/spec/internal/app/models/user.rb +11 -1
- data/spec/internal/db/schema.rb +5 -0
- data/spec/isimud/bunny_client_spec.rb +21 -9
- data/spec/isimud/client_spec.rb +40 -0
- data/spec/isimud/event_listener_spec.rb +50 -22
- data/spec/isimud/event_observer_spec.rb +107 -16
- data/spec/isimud/model_watcher_spec.rb +18 -23
- data/spec/isimud/test_client_spec.rb +43 -8
- data/spec/isimud_spec.rb +2 -2
- data/spec/spec_helper.rb +2 -0
- metadata +19 -35
- checksums.yaml.gz.sig +0 -0
- data/certs/gfeil.pem +0 -21
- data/release +0 -31
- data.tar.gz.sig +0 -0
- 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.
|
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
|
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(:
|
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
|
-
|
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
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
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
|
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
|
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 '
|
16
|
-
|
17
|
-
|
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 '
|
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
|
-
|
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
|
-
|
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.
|
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.
|
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:
|
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:
|
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:
|
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:
|
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:
|
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.
|
94
|
-
|
95
|
-
|
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