ki 0.4.11 → 0.4.12
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/.rubocop.yml +9 -0
- data/.ruby-gemset +1 -1
- data/.ruby-version +1 -1
- data/.travis.yml +10 -2
- data/Gemfile +2 -0
- data/Gemfile.lock +95 -85
- data/Guardfile +20 -14
- data/MIDDLEWARE.md +2 -2
- data/README.md +29 -1
- data/Rakefile +3 -1
- data/bin/ki +1 -0
- data/ki.gemspec +15 -14
- data/lib/ki.rb +8 -1
- data/lib/ki/base_request.rb +7 -5
- data/lib/ki/channel_manager.rb +2 -0
- data/lib/ki/helpers.rb +4 -5
- data/lib/ki/ki.rb +11 -2
- data/lib/ki/ki_app.rb +2 -0
- data/lib/ki/ki_cli.rb +9 -2
- data/lib/ki/ki_config.rb +5 -2
- data/lib/ki/ki_logger.rb +15 -0
- data/lib/ki/middleware/admin_interface_generator.rb +3 -1
- data/lib/ki/middleware/api_handler.rb +3 -1
- data/lib/ki/middleware/base_middleware.rb +2 -0
- data/lib/ki/middleware/coffee_compiler.rb +2 -0
- data/lib/ki/middleware/haml_compiler.rb +2 -0
- data/lib/ki/middleware/helpers/format_of_helper.rb +3 -1
- data/lib/ki/middleware/helpers/haml_compiler_helper.rb +7 -5
- data/lib/ki/middleware/helpers/public_file_helper.rb +2 -0
- data/lib/ki/middleware/helpers/redirect_to_helper.rb +2 -0
- data/lib/ki/middleware/helpers/view_helper.rb +2 -0
- data/lib/ki/middleware/init_middleware.rb +2 -0
- data/lib/ki/middleware/{doc_generator.rb → insta_doc.rb} +8 -6
- data/lib/ki/middleware/public_file_server.rb +2 -0
- data/lib/ki/middleware/realtime.rb +3 -1
- data/lib/ki/middleware/sass_compiler.rb +2 -0
- data/lib/ki/model.rb +8 -7
- data/lib/ki/modules/callbacks.rb +12 -20
- data/lib/ki/modules/model_helper.rb +2 -0
- data/lib/ki/modules/query_interface.rb +2 -0
- data/lib/ki/modules/restrictions.rb +5 -2
- data/lib/ki/orm.rb +20 -13
- data/lib/ki/utils/annotations.rb +33 -0
- data/lib/ki/utils/api_error.rb +14 -4
- data/lib/ki/utils/descendants.rb +9 -0
- data/lib/ki/utils/extra_irb.rb +3 -1
- data/lib/ki/utils/extra_ruby.rb +12 -0
- data/lib/ki/utils/indifferent_hash.rb +2 -0
- data/lib/ki/utils/logger.rb +5 -0
- data/lib/ki/version.rb +3 -1
- data/lib/ki/views/instadoc.haml +49 -9
- data/spec/config.yml.example +1 -1
- data/spec/examples/base/client.rb +20 -0
- data/spec/examples/base/logs/.keep +0 -0
- data/spec/examples/base/public/javascripts/app.js +12 -0
- data/spec/examples/json.northpole.ro/.ruby-version +1 -1
- data/spec/examples/json.northpole.ro/public/javascripts/app.coffee +1 -0
- data/spec/functional_spec.rb +2 -0
- data/spec/lib/ki/base_request_spec.rb +25 -23
- data/spec/lib/ki/channel_manager_spec.rb +2 -0
- data/spec/lib/ki/helpers_spec.rb +4 -2
- data/spec/lib/ki/indifferent_hash_spec.rb +2 -0
- data/spec/lib/ki/ki_app_spec.rb +2 -0
- data/spec/lib/ki/ki_config_spec.rb +5 -3
- data/spec/lib/ki/ki_spec.rb +2 -0
- data/spec/lib/ki/middleware/admin_generator_spec.rb +2 -0
- data/spec/lib/ki/middleware/haml_compiler_spec.rb +6 -3
- data/spec/lib/ki/middleware/helpers/format_of_helper_spec.rb +4 -2
- data/spec/lib/ki/middleware/init_middleware_spec.rb +3 -1
- data/spec/lib/ki/middleware/{doc_generator_spec.rb → insta_doc_spec.rb} +3 -1
- data/spec/lib/ki/middleware/realtime_spec.rb +12 -6
- data/spec/lib/ki/middleware_spec.rb +3 -1
- data/spec/lib/ki/model_spec.rb +26 -22
- data/spec/lib/ki/modules/model_helper_spec.rb +5 -3
- data/spec/lib/ki/modules/restrictions_spec.rb +16 -0
- data/spec/lib/ki/orm_spec.rb +18 -15
- data/spec/lib/ki/utils/api_error_spec.rb +9 -0
- data/spec/spec_helper.rb +13 -7
- data/spec/util_spec.rb +3 -1
- metadata +44 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 35f976a6f383442703ea03ac1404d94c82700ded
|
4
|
+
data.tar.gz: b3ac5a018c3922d4487578f8146ec789f4fc7195
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b0964d164dec6c2f62ee0f630c8c5c94e2df7a0755e68d68050ac2b48fc671ff15e2cb278a64fb24e24495354ec6fb632003da97f0f7c527684ef8f1825cd483
|
7
|
+
data.tar.gz: 667ecc89434a469d3b89709a720b4505ae38a61558fd8fe59525ae277a5ff1a45e2cd9f0eff48e2c138d7aa4f1cc6f646a0bd3f0ee711b8336f8d18466a710bc
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
data/.ruby-gemset
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
ki2
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.4.3
|
data/.travis.yml
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
-
- 1
|
4
|
-
- 2.
|
3
|
+
- 2.1
|
4
|
+
- 2.4.3
|
5
5
|
services:
|
6
6
|
- mongodb
|
7
|
+
before_script:
|
8
|
+
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
9
|
+
- chmod +x ./cc-test-reporter
|
10
|
+
- ./cc-test-reporter before-build
|
11
|
+
script:
|
12
|
+
- bundle exec rspec
|
13
|
+
after_script:
|
14
|
+
- ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ki (0.4.
|
4
|
+
ki (0.4.12)
|
5
5
|
bson_ext
|
6
|
-
bundler
|
6
|
+
bundler
|
7
7
|
coffee-script
|
8
8
|
faye-websocket
|
9
9
|
haml
|
10
|
-
mongo
|
10
|
+
mongo
|
11
11
|
rack
|
12
12
|
rack-cors
|
13
13
|
rack-parser
|
@@ -17,116 +17,126 @@ PATH
|
|
17
17
|
GEM
|
18
18
|
remote: https://rubygems.org/
|
19
19
|
specs:
|
20
|
-
ast (2.
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
bson_ext (1.9.2)
|
25
|
-
bson (~> 1.9.2)
|
26
|
-
celluloid (0.15.2)
|
27
|
-
timers (~> 1.1.0)
|
28
|
-
celluloid-io (0.15.0)
|
29
|
-
celluloid (>= 0.15.0)
|
30
|
-
nio4r (>= 0.5.0)
|
31
|
-
codeclimate-test-reporter (0.4.7)
|
32
|
-
simplecov (>= 0.7.1, < 1.0.0)
|
33
|
-
coderay (1.1.0)
|
20
|
+
ast (2.4.0)
|
21
|
+
bson (4.3.0)
|
22
|
+
bson_ext (1.5.1)
|
23
|
+
coderay (1.1.2)
|
34
24
|
coffee-script (2.4.1)
|
35
25
|
coffee-script-source
|
36
26
|
execjs
|
37
|
-
coffee-script-source (1.
|
38
|
-
diff-lcs (1.
|
27
|
+
coffee-script-source (1.12.2)
|
28
|
+
diff-lcs (1.3)
|
39
29
|
docile (1.1.5)
|
40
|
-
eventmachine (1.2.
|
41
|
-
execjs (2.
|
42
|
-
faye-websocket (0.10.
|
30
|
+
eventmachine (1.2.5)
|
31
|
+
execjs (2.7.0)
|
32
|
+
faye-websocket (0.10.7)
|
43
33
|
eventmachine (>= 0.12.0)
|
44
34
|
websocket-driver (>= 0.5.1)
|
45
|
-
ffi (1.9.
|
46
|
-
formatador (0.2.
|
47
|
-
guard (2.
|
35
|
+
ffi (1.9.23)
|
36
|
+
formatador (0.2.5)
|
37
|
+
guard (2.14.2)
|
48
38
|
formatador (>= 0.2.4)
|
49
|
-
listen (
|
50
|
-
lumberjack (
|
39
|
+
listen (>= 2.7, < 4.0)
|
40
|
+
lumberjack (>= 1.0.12, < 2.0)
|
41
|
+
nenv (~> 0.1)
|
42
|
+
notiffany (~> 0.0)
|
51
43
|
pry (>= 0.9.12)
|
44
|
+
shellany (~> 0.0)
|
52
45
|
thor (>= 0.18.1)
|
53
|
-
guard-
|
46
|
+
guard-compat (1.2.1)
|
47
|
+
guard-rspec (4.7.3)
|
54
48
|
guard (~> 2.1)
|
55
|
-
|
56
|
-
|
49
|
+
guard-compat (~> 1.1)
|
50
|
+
rspec (>= 2.99.0, < 4.0)
|
51
|
+
guard-rubocop (1.3.0)
|
57
52
|
guard (~> 2.0)
|
58
53
|
rubocop (~> 0.20)
|
59
|
-
haml (
|
54
|
+
haml (5.0.4)
|
55
|
+
temple (>= 0.8.0)
|
60
56
|
tilt
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
rb-
|
65
|
-
|
66
|
-
lumberjack (1.0.
|
67
|
-
method_source (0.
|
68
|
-
mongo (
|
69
|
-
bson (
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
57
|
+
json (2.1.0)
|
58
|
+
listen (3.1.5)
|
59
|
+
rb-fsevent (~> 0.9, >= 0.9.4)
|
60
|
+
rb-inotify (~> 0.9, >= 0.9.7)
|
61
|
+
ruby_dep (~> 1.2)
|
62
|
+
lumberjack (1.0.12)
|
63
|
+
method_source (0.9.0)
|
64
|
+
mongo (2.5.1)
|
65
|
+
bson (>= 4.3.0, < 5.0.0)
|
66
|
+
nenv (0.3.0)
|
67
|
+
notiffany (0.1.1)
|
68
|
+
nenv (~> 0.1)
|
69
|
+
shellany (~> 0.0)
|
70
|
+
parallel (1.12.1)
|
71
|
+
parser (2.5.0.2)
|
72
|
+
ast (~> 2.4.0)
|
73
|
+
powerpack (0.1.1)
|
74
|
+
pry (0.11.3)
|
75
|
+
coderay (~> 1.1.0)
|
76
|
+
method_source (~> 0.9.0)
|
77
|
+
rack (2.0.4)
|
78
|
+
rack-cors (1.0.2)
|
81
79
|
rack-parser (0.7.0)
|
82
80
|
rack
|
83
|
-
rack-test (0.
|
84
|
-
rack (>= 1.0)
|
85
|
-
rainbow (
|
86
|
-
rake (
|
87
|
-
rb-fsevent (0.
|
88
|
-
rb-inotify (0.9.
|
89
|
-
ffi (>= 0.5.0)
|
90
|
-
rspec (
|
91
|
-
rspec-core (~>
|
92
|
-
rspec-expectations (~>
|
93
|
-
rspec-mocks (~>
|
94
|
-
rspec-core (
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
81
|
+
rack-test (0.8.3)
|
82
|
+
rack (>= 1.0, < 3)
|
83
|
+
rainbow (3.0.0)
|
84
|
+
rake (12.3.0)
|
85
|
+
rb-fsevent (0.10.3)
|
86
|
+
rb-inotify (0.9.10)
|
87
|
+
ffi (>= 0.5.0, < 2)
|
88
|
+
rspec (3.7.0)
|
89
|
+
rspec-core (~> 3.7.0)
|
90
|
+
rspec-expectations (~> 3.7.0)
|
91
|
+
rspec-mocks (~> 3.7.0)
|
92
|
+
rspec-core (3.7.1)
|
93
|
+
rspec-support (~> 3.7.0)
|
94
|
+
rspec-expectations (3.7.0)
|
95
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
96
|
+
rspec-support (~> 3.7.0)
|
97
|
+
rspec-mocks (3.7.0)
|
98
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
99
|
+
rspec-support (~> 3.7.0)
|
100
|
+
rspec-support (3.7.1)
|
101
|
+
rubocop (0.52.1)
|
102
|
+
parallel (~> 1.10)
|
103
|
+
parser (>= 2.4.0.2, < 3.0)
|
101
104
|
powerpack (~> 0.1)
|
102
|
-
rainbow (>=
|
103
|
-
ruby-progressbar (~> 1.
|
104
|
-
|
105
|
-
|
106
|
-
|
105
|
+
rainbow (>= 2.2.2, < 4.0)
|
106
|
+
ruby-progressbar (~> 1.7)
|
107
|
+
unicode-display_width (~> 1.0, >= 1.0.1)
|
108
|
+
ruby-progressbar (1.9.0)
|
109
|
+
ruby_dep (1.5.0)
|
110
|
+
sass (3.5.5)
|
111
|
+
sass-listen (~> 4.0.0)
|
112
|
+
sass-listen (4.0.0)
|
113
|
+
rb-fsevent (~> 0.9, >= 0.9.4)
|
114
|
+
rb-inotify (~> 0.9, >= 0.9.7)
|
115
|
+
shellany (0.0.1)
|
116
|
+
simplecov (0.13.0)
|
107
117
|
docile (~> 1.1.0)
|
108
|
-
|
109
|
-
simplecov-html (~> 0.
|
110
|
-
simplecov-html (0.
|
111
|
-
|
112
|
-
thor (0.
|
113
|
-
tilt (2.0.
|
114
|
-
|
115
|
-
websocket-driver (0.
|
118
|
+
json (>= 1.8, < 3)
|
119
|
+
simplecov-html (~> 0.10.0)
|
120
|
+
simplecov-html (0.10.2)
|
121
|
+
temple (0.8.0)
|
122
|
+
thor (0.20.0)
|
123
|
+
tilt (2.0.8)
|
124
|
+
unicode-display_width (1.3.0)
|
125
|
+
websocket-driver (0.7.0)
|
116
126
|
websocket-extensions (>= 0.1.0)
|
117
|
-
websocket-extensions (0.1.
|
127
|
+
websocket-extensions (0.1.3)
|
118
128
|
|
119
129
|
PLATFORMS
|
120
130
|
ruby
|
121
131
|
|
122
132
|
DEPENDENCIES
|
123
|
-
codeclimate-test-reporter
|
124
133
|
guard-rspec
|
125
134
|
guard-rubocop
|
126
135
|
ki!
|
127
136
|
rack-test
|
128
137
|
rake
|
129
138
|
rspec
|
139
|
+
simplecov
|
130
140
|
|
131
141
|
BUNDLED WITH
|
132
|
-
1.
|
142
|
+
1.16.1
|
data/Guardfile
CHANGED
@@ -1,15 +1,21 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
guard :rspec, cmd: 'bundle exec rspec' do
|
4
|
+
require 'guard/rspec/dsl'
|
5
|
+
dsl = Guard::RSpec::Dsl.new(self)
|
6
|
+
|
7
|
+
# RSpec files
|
8
|
+
rspec = dsl.rspec
|
9
|
+
watch(rspec.spec_helper) { rspec.spec_dir }
|
10
|
+
watch(rspec.spec_support) { rspec.spec_dir }
|
11
|
+
watch(rspec.spec_files)
|
12
|
+
|
13
|
+
# Ruby files
|
14
|
+
ruby = dsl.ruby
|
15
|
+
dsl.watch_spec_files_for(ruby.lib_files)
|
16
|
+
end
|
17
|
+
|
18
|
+
guard :rubocop do
|
19
|
+
watch(/%r{.+\.rb$}/)
|
20
|
+
watch(%r{(?:.+/)?\.rubocop(?:_todo)?\.yml$}) { |m| File.dirname(m[0]) }
|
15
21
|
end
|
data/MIDDLEWARE.md
CHANGED
@@ -46,7 +46,7 @@ development:
|
|
46
46
|
name: base_development
|
47
47
|
host: 127.0.0.1
|
48
48
|
port: 27017
|
49
|
-
add_middleware: ['Realtime', '
|
49
|
+
add_middleware: ['Realtime', 'InstaDoc', 'AdminInterfaceGenerator']
|
50
50
|
rm_middleware: ['SassCompiler']
|
51
51
|
|
52
52
|
test:
|
@@ -57,7 +57,7 @@ test:
|
|
57
57
|
|
58
58
|
production:
|
59
59
|
middleware: ['ApiHandler', 'PublicFileServer']
|
60
|
-
add_middleware: ['Realtime', '
|
60
|
+
add_middleware: ['Realtime', 'InstaDoc', 'AdminInterfaceGenerator']
|
61
61
|
database:
|
62
62
|
name: np
|
63
63
|
host: 127.0.0.1
|
data/README.md
CHANGED
@@ -35,6 +35,7 @@ and provides a fullblown REST api on top.
|
|
35
35
|
- [Before/after callbacks](#beforeafter-callbacks)
|
36
36
|
- [Accessing the json object within the callback](#accessing-the-json-object-within-the-callback)
|
37
37
|
- [Exceptions](#exceptions)
|
38
|
+
- [Logging](#logging)
|
38
39
|
- [Magic](#magic)
|
39
40
|
- [Deploy](#deploy)
|
40
41
|
- [Heroku deployment](#heroku-deployment)
|
@@ -382,6 +383,19 @@ class Todo < Ki::Model
|
|
382
383
|
end
|
383
384
|
```
|
384
385
|
|
386
|
+
### Logging
|
387
|
+
|
388
|
+
By default, logs are written in the `logs` folder and are rotated weekly if and
|
389
|
+
only if the `logs` folder exists.
|
390
|
+
|
391
|
+
To add something to the log you can:
|
392
|
+
|
393
|
+
```
|
394
|
+
Ki::KiLogger.instance.logger.info 'for your info'
|
395
|
+
Ki::KiLogger.instance.logger.warn 'warning'
|
396
|
+
Ki::KiLogger.instance.logger.error 'ops'
|
397
|
+
```
|
398
|
+
|
385
399
|
### Magic
|
386
400
|
|
387
401
|
#### redirect_to param
|
@@ -422,9 +436,23 @@ Yes.
|
|
422
436
|
|
423
437
|
## Documentation
|
424
438
|
|
425
|
-
Ki offers instant documentation. Add the middleware '
|
439
|
+
Ki offers instant documentation. Add the middleware 'InstaDoc' and access
|
426
440
|
*/instadoc*.
|
427
441
|
|
442
|
+
```
|
443
|
+
class Todo < Ki::Model
|
444
|
+
_body 'is required because reasons'
|
445
|
+
requires :body
|
446
|
+
|
447
|
+
_desc 'This is a before all description'
|
448
|
+
def before_all
|
449
|
+
end
|
450
|
+
|
451
|
+
_desc 'This is a general description. Needs to be above a method called "doc"'
|
452
|
+
def doc; end
|
453
|
+
end
|
454
|
+
```
|
455
|
+
|
428
456
|
## Administration Interface
|
429
457
|
|
430
458
|
Ki offers an instant administration interface. Add the middleware 'AdminIntefaceGenerator'
|
data/Rakefile
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'bundler/gem_tasks'
|
2
4
|
require 'rspec/core/rake_task'
|
3
5
|
require 'rdoc/task'
|
@@ -5,7 +7,7 @@ require 'rdoc/task'
|
|
5
7
|
RDoc::Task.new do |rdoc|
|
6
8
|
rdoc.main = 'README.md'
|
7
9
|
rdoc.rdoc_files
|
8
|
-
|
10
|
+
.include('README.md', 'lib/**/*.rb')
|
9
11
|
rdoc.rdoc_dir = 'doc'
|
10
12
|
end
|
11
13
|
|
data/bin/ki
CHANGED
data/ki.gemspec
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
2
3
|
lib = File.expand_path('../lib', __FILE__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
5
|
require 'ki/version'
|
@@ -16,24 +17,24 @@ Gem::Specification.new do |spec|
|
|
16
17
|
spec.files = `git ls-files -z`.split("\x0")
|
17
18
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
-
spec.require_paths = %w
|
20
|
+
spec.require_paths = %w[lib examples]
|
20
21
|
|
21
|
-
spec.add_runtime_dependency '
|
22
|
+
spec.add_runtime_dependency 'bson_ext'
|
23
|
+
spec.add_runtime_dependency 'bundler'
|
24
|
+
spec.add_runtime_dependency 'coffee-script'
|
25
|
+
spec.add_runtime_dependency 'faye-websocket'
|
26
|
+
spec.add_runtime_dependency 'haml'
|
27
|
+
spec.add_runtime_dependency 'mongo'
|
22
28
|
spec.add_runtime_dependency 'rack'
|
29
|
+
spec.add_runtime_dependency 'rack-cors'
|
23
30
|
spec.add_runtime_dependency 'rack-parser'
|
24
|
-
spec.add_runtime_dependency 'thor'
|
25
|
-
spec.add_runtime_dependency 'haml'
|
26
31
|
spec.add_runtime_dependency 'sass'
|
27
|
-
spec.add_runtime_dependency '
|
28
|
-
spec.add_runtime_dependency 'mongo', '1.9.2'
|
29
|
-
spec.add_runtime_dependency 'bson_ext'
|
30
|
-
spec.add_runtime_dependency 'rack-cors'
|
31
|
-
spec.add_runtime_dependency 'faye-websocket'
|
32
|
+
spec.add_runtime_dependency 'thor'
|
32
33
|
|
33
|
-
spec.add_development_dependency 'rake'
|
34
|
-
spec.add_development_dependency 'rack-test'
|
35
|
-
spec.add_development_dependency 'rspec'
|
36
34
|
spec.add_development_dependency 'guard-rspec'
|
37
35
|
spec.add_development_dependency 'guard-rubocop'
|
38
|
-
spec.add_development_dependency '
|
36
|
+
spec.add_development_dependency 'rack-test'
|
37
|
+
spec.add_development_dependency 'rake'
|
38
|
+
spec.add_development_dependency 'rspec'
|
39
|
+
spec.add_development_dependency 'simplecov'
|
39
40
|
end
|