rabbit_feed 2.4.4 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +81 -0
  4. data/README.md +39 -5
  5. data/Rakefile +3 -19
  6. data/bin/rabbit_feed +0 -1
  7. data/example/non_rails_app/Gemfile.lock +29 -32
  8. data/example/non_rails_app/Rakefile +1 -1
  9. data/example/non_rails_app/bin/benchmark +3 -3
  10. data/example/non_rails_app/lib/non_rails_app/event_handler.rb +1 -1
  11. data/example/non_rails_app/spec/lib/non_rails_app/event_handler_spec.rb +3 -4
  12. data/example/non_rails_app/spec/lib/non_rails_app/event_routing_spec.rb +3 -3
  13. data/example/rails_app/Gemfile +4 -16
  14. data/example/rails_app/Gemfile.lock +131 -137
  15. data/example/rails_app/app/assets/javascripts/application.js +0 -1
  16. data/example/rails_app/app/controllers/application_controller.rb +0 -3
  17. data/example/rails_app/app/controllers/beavers_controller.rb +14 -15
  18. data/example/rails_app/bin/rails +1 -1
  19. data/example/rails_app/config/environments/development.rb +1 -1
  20. data/example/rails_app/config/environments/test.rb +2 -2
  21. data/example/rails_app/config/initializers/cookies_serializer.rb +1 -1
  22. data/example/rails_app/config/unicorn.rb +1 -1
  23. data/example/rails_app/config.ru +1 -1
  24. data/example/rails_app/db/schema.rb +5 -7
  25. data/example/rails_app/lib/event_handler.rb +1 -1
  26. data/example/rails_app/spec/controllers/beavers_controller_spec.rb +9 -10
  27. data/example/rails_app/spec/event_routing_spec.rb +1 -2
  28. data/example/rails_app/test/controllers/beavers_controller_test.rb +12 -12
  29. data/lib/dsl.rb +4 -4
  30. data/lib/rabbit_feed/client.rb +17 -23
  31. data/lib/rabbit_feed/configuration.rb +10 -9
  32. data/lib/rabbit_feed/connection.rb +3 -3
  33. data/lib/rabbit_feed/console_consumer.rb +22 -24
  34. data/lib/rabbit_feed/consumer.rb +2 -2
  35. data/lib/rabbit_feed/consumer_connection.rb +21 -22
  36. data/lib/rabbit_feed/event.rb +8 -28
  37. data/lib/rabbit_feed/event_definitions.rb +14 -15
  38. data/lib/rabbit_feed/event_routing.rb +26 -27
  39. data/lib/rabbit_feed/json_log_formatter.rb +1 -1
  40. data/lib/rabbit_feed/producer.rb +13 -13
  41. data/lib/rabbit_feed/producer_connection.rb +8 -9
  42. data/lib/rabbit_feed/testing_support/rspec_matchers/publish_event.rb +52 -89
  43. data/lib/rabbit_feed/testing_support/test_rabbit_feed_consumer.rb +1 -2
  44. data/lib/rabbit_feed/testing_support/testing_helpers.rb +0 -1
  45. data/lib/rabbit_feed/testing_support.rb +5 -6
  46. data/lib/rabbit_feed/version.rb +1 -1
  47. data/lib/rabbit_feed.rb +12 -13
  48. data/rabbit_feed.gemspec +16 -14
  49. data/run_benchmark +4 -3
  50. data/run_example +1 -1
  51. data/spec/features/step_definitions/connectivity_steps.rb +6 -9
  52. data/spec/lib/rabbit_feed/client_spec.rb +8 -9
  53. data/spec/lib/rabbit_feed/configuration_spec.rb +20 -23
  54. data/spec/lib/rabbit_feed/console_consumer_spec.rb +11 -13
  55. data/spec/lib/rabbit_feed/consumer_connection_spec.rb +26 -28
  56. data/spec/lib/rabbit_feed/event_definitions_spec.rb +31 -31
  57. data/spec/lib/rabbit_feed/event_routing_spec.rb +35 -62
  58. data/spec/lib/rabbit_feed/event_spec.rb +40 -87
  59. data/spec/lib/rabbit_feed/producer_connection_spec.rb +11 -7
  60. data/spec/lib/rabbit_feed/producer_spec.rb +16 -19
  61. data/spec/lib/rabbit_feed/testing_support/rspec_matchers/publish_event_spec.rb +82 -87
  62. data/spec/lib/rabbit_feed/testing_support/testing_helper_spec.rb +2 -2
  63. data/spec/spec_helper.rb +4 -10
  64. metadata +67 -45
  65. data/example/rails_app/README.rdoc +0 -28
@@ -1,9 +1,9 @@
1
1
  module RabbitFeed
2
2
  module TestingSupport
3
3
  module RSpecMatchers
4
- describe PublishEvent do
4
+ describe 'publish_event' do
5
5
  let(:event_name) { 'test_event' }
6
- let(:event_payload) { {'field' => 'value'} }
6
+ let(:event_payload) { { 'field' => 'value' } }
7
7
  TestingSupport.capture_published_events self
8
8
  before do
9
9
  EventDefinitions do
@@ -23,117 +23,112 @@ module RabbitFeed
23
23
 
24
24
  it 'clears any existing published_events' do
25
25
  10.times.each do
26
- RabbitFeed::Producer.publish_event event_name, event_payload
26
+ RabbitFeed::Producer.publish_event(event_name, event_payload)
27
27
  end
28
28
 
29
29
  expect do
30
- expect {
31
- RabbitFeed::Producer.publish_event event_name, event_payload
32
- }.to publish_event(event_name, event_payload)
30
+ expect do
31
+ RabbitFeed::Producer.publish_event(event_name, event_payload)
32
+ end.to publish_event(event_name, event_payload)
33
33
  end.to change { TestingSupport.published_events.count }.from(10).to(1)
34
+ end
34
35
 
36
+ it 'traps exceptions' do
37
+ expect do
38
+ raise 'this hurts me more than it hurts you'
39
+ end.to_not publish_event(event_name)
35
40
  end
36
41
 
37
- context 'when the expectation is met' do
38
- it 'validates' do
39
- expect {
40
- RabbitFeed::Producer.publish_event event_name, event_payload
41
- }.to publish_event(event_name, event_payload)
42
- end
42
+ it 'validates' do
43
+ expect do
44
+ RabbitFeed::Producer.publish_event(event_name, event_payload)
45
+ end.to publish_event(event_name, event_payload)
43
46
 
44
- it 'validates the negation' do
45
- expect {
46
- RabbitFeed::Producer.publish_event 'different name', {}
47
- }.to_not publish_event(event_name, {})
48
- end
47
+ expect do
48
+ RabbitFeed::Producer.publish_event('different name', event_payload)
49
+ end.to_not publish_event(event_name, event_payload)
50
+ end
49
51
 
50
- it 'traps exceptions' do
51
- expect {
52
- raise 'this hurts me more than it hurts you'
53
- }.to_not publish_event(event_name, {})
54
- end
52
+ context 'when not validating the payload' do
53
+ it 'validates the event name' do
54
+ expect do
55
+ RabbitFeed::Producer.publish_event(event_name, event_payload)
56
+ end.to publish_event(event_name)
55
57
 
56
- context 'when not validating the payload' do
57
- it 'validates' do
58
- expect {
59
- RabbitFeed::Producer.publish_event event_name, event_payload
60
- }.to publish_event(event_name)
61
- end
62
-
63
- it 'validates the negation' do
64
- expect {
65
- RabbitFeed::Producer.publish_event 'different name', {}
66
- }.to_not publish_event(event_name)
67
- end
58
+ expect do
59
+ RabbitFeed::Producer.publish_event('different name', {})
60
+ end.to_not publish_event(event_name)
68
61
  end
69
62
  end
70
63
 
71
- it 'validates the event name' do
72
- matcher = described_class.new(event_name, {})
73
- block = Proc.new { RabbitFeed::Producer.publish_event 'different name', {} }
74
- (matcher.matches? block).should be_falsey
75
- end
76
-
77
- context 'with block' do
78
- it 'validates block' do
79
- expect {
80
- RabbitFeed::Producer.publish_event event_name, event_payload
81
- }.to publish_event(event_name, nil) do |actual_payload|
82
- expect(actual_payload['field']).to eq 'value'
83
- end
64
+ context 'when validating the payload' do
65
+ it 'validates the event payload' do
66
+ expect do
67
+ RabbitFeed::Producer.publish_event(event_name, 'field' => 'different value')
68
+ end.not_to publish_event(event_name, event_payload)
69
+
70
+ expect do
71
+ RabbitFeed::Producer.publish_event(event_name, event_payload)
72
+ end.to publish_event(event_name, event_payload)
84
73
  end
85
74
 
86
- it 'validates block with `with` will be ignored' do
87
- eval_block = Proc.new {|actual_payload|
88
- expect(actual_payload['field']).to eq 'value'
89
- }
90
- matcher = described_class.new(event_name, nil).with({field: 'different name'})
91
- block = Proc.new { RabbitFeed::Producer.publish_event event_name, {'field' => 'value'} }
75
+ context 'using .including' do
76
+ context 'when there is an earlier payload provided' do
77
+ it 'prefers the earlier payload' do
78
+ expect do
79
+ RabbitFeed::Producer.publish_event(event_name, 'field' => 'different value')
80
+ end.not_to publish_event(event_name, event_payload).including(event_payload)
81
+ end
82
+ end
92
83
 
93
- (matcher.matches? block, &eval_block).should be true
94
- end
84
+ it 'validates the event payload' do
85
+ expect do
86
+ RabbitFeed::Producer.publish_event(event_name, event_payload)
87
+ end.not_to publish_event(event_name).including('field' => 'different value')
95
88
 
96
- it 'does not evaluates block with {}' do
97
- expect {
98
- RabbitFeed::Producer.publish_event event_name, event_payload
99
- }.to publish_event(event_name, nil) { |actual_payload|
100
- raise 'this block should not be evaluated'
101
- }
102
- end
89
+ expect do
90
+ RabbitFeed::Producer.publish_event(event_name, event_payload)
91
+ end.to publish_event(event_name).including(event_payload)
92
+ end
103
93
 
104
- it 'does not evaluate block if the expectation block does not return actual payload' do
105
- expect {
106
- nil
107
- }.not_to publish_event(event_name, nil) do |actual_payload|
108
- raise 'this block should not be evaluated'
94
+ context 'when the actual payload contains more fields than the expected payload' do
95
+ it 'validates the event payload' do
96
+ expect do
97
+ RabbitFeed::Producer.publish_event(event_name, event_payload.merge('different field' => 'value'))
98
+ end.to publish_event(event_name).including(event_payload)
99
+ end
109
100
  end
110
- end
111
- end
112
101
 
113
- context 'when validating the payload' do
114
- context 'and the payload is not a Proc' do
115
- it 'validates the event payload' do
116
- matcher = described_class.new(event_name, event_payload)
117
- block = Proc.new { RabbitFeed::Producer.publish_event event_name, {'field' => 'different value'} }
118
- (matcher.matches? block).should be_falsey
102
+ context 'when the expected payload contains more fields than the actual payload' do
103
+ it 'invalidates the event payload' do
104
+ expect do
105
+ RabbitFeed::Producer.publish_event(event_name, event_payload)
106
+ end.not_to publish_event(event_name).including(event_payload.merge('different field' => 'value'))
107
+ end
119
108
  end
120
109
  end
121
110
 
122
- context 'uses .with' do
123
- context 'and it is not a Proc' do
124
- it 'validates the event payload' do
125
- matcher = described_class.new(event_name, nil).with(event_payload)
126
- block = Proc.new { RabbitFeed::Producer.publish_event event_name, {'field' => 'different value'} }
127
- (matcher.matches? block).should be false
111
+ context 'using .asserting' do
112
+ context 'when there is an earlier payload provided' do
113
+ it 'prefers the earlier payload' do
114
+ expect do
115
+ RabbitFeed::Producer.publish_event(event_name, 'field' => 'different value')
116
+ end.not_to publish_event(event_name, event_payload).asserting { |actual_payload| expect(actual_payload).to eq(event_payload) }
117
+
118
+ expect do
119
+ RabbitFeed::Producer.publish_event(event_name, 'field' => 'different value')
120
+ end.not_to publish_event(event_name, event_payload).asserting { |actual_payload| expect(actual_payload).not_to eq(event_payload) }
128
121
  end
129
122
  end
130
123
 
131
- context 'and it is a Proc' do
132
- it 'validates the event payload' do
133
- matcher = described_class.new(event_name, nil).with{event_payload}
134
- block = Proc.new { RabbitFeed::Producer.publish_event event_name, {'field' => 'different value'} }
135
- (matcher.matches? block).should be false
136
- end
124
+ it 'performs the assertion' do
125
+ expect do
126
+ RabbitFeed::Producer.publish_event(event_name, event_payload)
127
+ end.to publish_event(event_name).asserting { |actual_payload| expect(actual_payload).to eq(event_payload) }
128
+
129
+ expect do
130
+ RabbitFeed::Producer.publish_event(event_name, event_payload)
131
+ end.to publish_event(event_name).asserting { |actual_payload| expect(actual_payload).not_to eq('field' => 'different value') }
137
132
  end
138
133
  end
139
134
  end
@@ -14,8 +14,8 @@ module RabbitFeed
14
14
  end
15
15
  end
16
16
 
17
- let(:payload) { {'stuff' => 'some_stuff'} }
18
- let(:metadata) { {'application' => 'some_place', 'name' => 'some_event'} }
17
+ let(:payload) { { 'stuff' => 'some_stuff' } }
18
+ let(:metadata) { { 'application' => 'some_place', 'name' => 'some_event' } }
19
19
  let(:event) { Event.new metadata, payload }
20
20
 
21
21
  before { define_route }
data/spec/spec_helper.rb CHANGED
@@ -1,27 +1,21 @@
1
- require 'codeclimate-test-reporter'
1
+ require 'simplecov'
2
+ SimpleCov.start
3
+
2
4
  require 'rabbit_feed'
3
5
  require 'rspec/its'
4
6
  require 'timecop'
5
7
  require 'timeout'
6
8
 
7
- # Send data to code climate from semaphore
8
- # Disable the warning messages
9
- CodeClimate::TestReporter.configure do |config|
10
- config.logger.level = Logger::WARN
11
- end
12
- CodeClimate::TestReporter.start
13
-
14
9
  # Get rid of deprecation warnings
15
10
  I18n.enforce_available_locales = true
16
11
 
17
12
  # Loads the shared examples
18
- Dir['./spec/support/**/*.rb'].sort.each { |f| require f}
13
+ Dir['./spec/support/**/*.rb'].sort.each { |f| require f }
19
14
 
20
15
  # Loads the step definitions
21
16
  Dir.glob('spec/features/step_definitions/**/*_steps.rb') { |f| load f, true }
22
17
 
23
18
  RSpec.configure do |config|
24
-
25
19
  config.expect_with :rspec do |expects|
26
20
  expects.syntax = [:should, :expect]
27
21
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rabbit_feed
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.4
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simply Business
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-04 00:00:00.000000000 Z
11
+ date: 2017-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bunny
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: 2.0.0
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: 2.1.0
22
+ version: 2.7.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: 2.0.0
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: 2.1.0
32
+ version: 2.7.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: activesupport
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -39,7 +39,7 @@ dependencies:
39
39
  version: 3.2.0
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
- version: 5.0.0
42
+ version: 6.0.0
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
@@ -49,7 +49,7 @@ dependencies:
49
49
  version: 3.2.0
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
- version: 5.0.0
52
+ version: 6.0.0
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: activemodel
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -59,7 +59,7 @@ dependencies:
59
59
  version: 3.2.0
60
60
  - - "<"
61
61
  - !ruby/object:Gem::Version
62
- version: 5.0.0
62
+ version: 6.0.0
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
@@ -69,21 +69,21 @@ dependencies:
69
69
  version: 3.2.0
70
70
  - - "<"
71
71
  - !ruby/object:Gem::Version
72
- version: 5.0.0
72
+ version: 6.0.0
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: pidfile
75
75
  requirement: !ruby/object:Gem::Requirement
76
76
  requirements:
77
- - - ">="
77
+ - - "~>"
78
78
  - !ruby/object:Gem::Version
79
- version: '0'
79
+ version: '0.3'
80
80
  type: :runtime
81
81
  prerelease: false
82
82
  version_requirements: !ruby/object:Gem::Requirement
83
83
  requirements:
84
- - - ">="
84
+ - - "~>"
85
85
  - !ruby/object:Gem::Version
86
- version: '0'
86
+ version: '0.3'
87
87
  - !ruby/object:Gem::Dependency
88
88
  name: avro
89
89
  requirement: !ruby/object:Gem::Requirement
@@ -93,7 +93,7 @@ dependencies:
93
93
  version: 1.5.4
94
94
  - - "<"
95
95
  - !ruby/object:Gem::Version
96
- version: 1.8.0
96
+ version: 1.9.0
97
97
  type: :runtime
98
98
  prerelease: false
99
99
  version_requirements: !ruby/object:Gem::Requirement
@@ -103,97 +103,119 @@ dependencies:
103
103
  version: 1.5.4
104
104
  - - "<"
105
105
  - !ruby/object:Gem::Version
106
- version: 1.8.0
106
+ version: 1.9.0
107
107
  - !ruby/object:Gem::Dependency
108
108
  name: codeclimate-test-reporter
109
109
  requirement: !ruby/object:Gem::Requirement
110
110
  requirements:
111
- - - ">="
111
+ - - "~>"
112
112
  - !ruby/object:Gem::Version
113
- version: '0'
113
+ version: '1.0'
114
114
  type: :development
115
115
  prerelease: false
116
116
  version_requirements: !ruby/object:Gem::Requirement
117
117
  requirements:
118
- - - ">="
118
+ - - "~>"
119
119
  - !ruby/object:Gem::Version
120
- version: '0'
120
+ version: '1.0'
121
121
  - !ruby/object:Gem::Dependency
122
122
  name: rake
123
123
  requirement: !ruby/object:Gem::Requirement
124
124
  requirements:
125
- - - ">="
125
+ - - "~>"
126
126
  - !ruby/object:Gem::Version
127
- version: '0'
127
+ version: '12.0'
128
128
  type: :development
129
129
  prerelease: false
130
130
  version_requirements: !ruby/object:Gem::Requirement
131
131
  requirements:
132
- - - ">="
132
+ - - "~>"
133
133
  - !ruby/object:Gem::Version
134
- version: '0'
134
+ version: '12.0'
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: rspec
137
137
  requirement: !ruby/object:Gem::Requirement
138
138
  requirements:
139
- - - ">="
140
- - !ruby/object:Gem::Version
141
- version: 2.14.0
142
- - - "<"
139
+ - - "~>"
143
140
  - !ruby/object:Gem::Version
144
- version: 3.3.0
141
+ version: '3.5'
145
142
  type: :development
146
143
  prerelease: false
147
144
  version_requirements: !ruby/object:Gem::Requirement
148
145
  requirements:
149
- - - ">="
150
- - !ruby/object:Gem::Version
151
- version: 2.14.0
152
- - - "<"
146
+ - - "~>"
153
147
  - !ruby/object:Gem::Version
154
- version: 3.3.0
148
+ version: '3.5'
155
149
  - !ruby/object:Gem::Dependency
156
150
  name: rspec-its
157
151
  requirement: !ruby/object:Gem::Requirement
158
152
  requirements:
159
- - - ">="
153
+ - - "~>"
160
154
  - !ruby/object:Gem::Version
161
- version: '0'
155
+ version: '1.2'
162
156
  type: :development
163
157
  prerelease: false
164
158
  version_requirements: !ruby/object:Gem::Requirement
165
159
  requirements:
166
- - - ">="
160
+ - - "~>"
161
+ - !ruby/object:Gem::Version
162
+ version: '1.2'
163
+ - !ruby/object:Gem::Dependency
164
+ name: rubocop
165
+ requirement: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - "~>"
167
168
  - !ruby/object:Gem::Version
168
- version: '0'
169
+ version: '0.46'
170
+ type: :development
171
+ prerelease: false
172
+ version_requirements: !ruby/object:Gem::Requirement
173
+ requirements:
174
+ - - "~>"
175
+ - !ruby/object:Gem::Version
176
+ version: '0.46'
169
177
  - !ruby/object:Gem::Dependency
170
178
  name: rutabaga
171
179
  requirement: !ruby/object:Gem::Requirement
172
180
  requirements:
173
- - - ">="
181
+ - - "~>"
174
182
  - !ruby/object:Gem::Version
175
- version: '0'
183
+ version: '2.1'
176
184
  type: :development
177
185
  prerelease: false
178
186
  version_requirements: !ruby/object:Gem::Requirement
179
187
  requirements:
180
- - - ">="
188
+ - - "~>"
189
+ - !ruby/object:Gem::Version
190
+ version: '2.1'
191
+ - !ruby/object:Gem::Dependency
192
+ name: simplecov
193
+ requirement: !ruby/object:Gem::Requirement
194
+ requirements:
195
+ - - "~>"
181
196
  - !ruby/object:Gem::Version
182
- version: '0'
197
+ version: '0.12'
198
+ type: :development
199
+ prerelease: false
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ requirements:
202
+ - - "~>"
203
+ - !ruby/object:Gem::Version
204
+ version: '0.12'
183
205
  - !ruby/object:Gem::Dependency
184
206
  name: timecop
185
207
  requirement: !ruby/object:Gem::Requirement
186
208
  requirements:
187
- - - ">="
209
+ - - "~>"
188
210
  - !ruby/object:Gem::Version
189
- version: '0'
211
+ version: '0.8'
190
212
  type: :development
191
213
  prerelease: false
192
214
  version_requirements: !ruby/object:Gem::Requirement
193
215
  requirements:
194
- - - ">="
216
+ - - "~>"
195
217
  - !ruby/object:Gem::Version
196
- version: '0'
218
+ version: '0.8'
197
219
  description: A gem providing asynchronous event publish and subscribe capabilities
198
220
  with RabbitMQ.
199
221
  email:
@@ -205,6 +227,7 @@ extra_rdoc_files: []
205
227
  files:
206
228
  - ".gitignore"
207
229
  - ".rspec"
230
+ - ".rubocop.yml"
208
231
  - Brewfile
209
232
  - DEVELOPING.md
210
233
  - Gemfile
@@ -231,7 +254,6 @@ files:
231
254
  - example/rails_app/.rspec
232
255
  - example/rails_app/Gemfile
233
256
  - example/rails_app/Gemfile.lock
234
- - example/rails_app/README.rdoc
235
257
  - example/rails_app/Rakefile
236
258
  - example/rails_app/app/assets/images/.keep
237
259
  - example/rails_app/app/assets/javascripts/application.js
@@ -1,28 +0,0 @@
1
- == README
2
-
3
- This README would normally document whatever steps are necessary to get the
4
- application up and running.
5
-
6
- Things you may want to cover:
7
-
8
- * Ruby version
9
-
10
- * System dependencies
11
-
12
- * Configuration
13
-
14
- * Database creation
15
-
16
- * Database initialization
17
-
18
- * How to run the test suite
19
-
20
- * Services (job queues, cache servers, search engines, etc.)
21
-
22
- * Deployment instructions
23
-
24
- * ...
25
-
26
-
27
- Please feel free to use a different markup language if you do not plan to run
28
- <tt>rake doc:app</tt>.