rabbit_feed 2.4.4 → 3.0.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 (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>.