jellyfish 1.1.1 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +14 -11
- data/CHANGES.md +21 -0
- data/README.md +125 -60
- data/Rakefile +4 -4
- data/TODO.md +2 -0
- data/jellyfish.gemspec +69 -69
- data/lib/jellyfish.rb +10 -8
- data/lib/jellyfish/builder.rb +11 -6
- data/lib/jellyfish/test.rb +10 -2
- data/lib/jellyfish/urlmap.rb +74 -9
- data/lib/jellyfish/version.rb +1 -1
- data/task/README.md +8 -8
- data/task/gemgem.rb +29 -7
- data/test/rack/test_builder.rb +1 -1
- data/test/rack/test_urlmap.rb +67 -9
- data/test/test_from_readme.rb +13 -10
- data/test/test_listen.rb +64 -0
- data/test/test_rewrite.rb +8 -6
- data/test/test_websocket.rb +6 -3
- metadata +6 -6
- data/jellyfish.png +0 -0
- data/lib/jellyfish/newrelic.rb +0 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 8e0c9e8624941bd890772891cbccf23e550239f1f02789f52090d2835c46fb19
|
4
|
+
data.tar.gz: 586e35d54a86bfe6b9b4215259366eccaca536e5cb953251ead0c96f50010c02
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 611380d2aedcac5ff8c85ab3ce00ea429d8151334628ef3bd216dd30606e7816178e6b8b3253e99dc8915f479ed9c3f93f0598e9bcc89101ddd15e681a3f1fbb
|
7
|
+
data.tar.gz: d3f4b682cb5913ba369b6e9e1ceb1b6a2bd20c5dc397e5d230c7741ab9c45dbbe0921e866ce1ec9acc4606d7e5253d6ef77146bb77537e6ffa7e3d5ea818d519
|
data/.travis.yml
CHANGED
@@ -1,15 +1,18 @@
|
|
1
1
|
sudo: false
|
2
2
|
language: ruby
|
3
|
-
rvm:
|
4
|
-
- 2.0
|
5
|
-
- 2.1
|
6
|
-
- 2.2
|
7
|
-
- rbx
|
8
|
-
- jruby-9
|
9
3
|
|
10
|
-
|
11
|
-
- rvm get head
|
12
|
-
- rvm reload
|
13
|
-
- rvm use --install $TRAVIS_RUBY_VERSION --binary --latest
|
14
|
-
install: 'bundle install --retry=3'
|
4
|
+
install: 'gem install bundler; bundle install --retry=3'
|
15
5
|
script: 'ruby -vr bundler/setup -S rake test'
|
6
|
+
|
7
|
+
matrix:
|
8
|
+
include:
|
9
|
+
- rvm: 2.3
|
10
|
+
- rvm: 2.4
|
11
|
+
- rvm: 2.5
|
12
|
+
- rvm: ruby-head
|
13
|
+
- rvm: jruby
|
14
|
+
env: JRUBY_OPTS=--debug
|
15
|
+
- rvm: rbx
|
16
|
+
|
17
|
+
allow_failures:
|
18
|
+
- rvm: rbx
|
data/CHANGES.md
CHANGED
@@ -1,5 +1,26 @@
|
|
1
1
|
# CHANGES
|
2
2
|
|
3
|
+
## Jellyfish 1.2.0 -- 2018-07-14
|
4
|
+
|
5
|
+
### Incompatible changes
|
6
|
+
|
7
|
+
* `Jellyfish::NewRelic` is extracted to
|
8
|
+
[jellyfish-contrib](https://github.com/godfat/jellyfish-contrib)
|
9
|
+
|
10
|
+
### Bugs fixed
|
11
|
+
|
12
|
+
* `Jellyfish::URLMap` would now properly handle nested maps like
|
13
|
+
`Rack::URLMap`.
|
14
|
+
|
15
|
+
### Enhancements
|
16
|
+
|
17
|
+
* `Jellyfish::URLMap` now supports listening on a specific host like
|
18
|
+
`Rack::URLMap`. Beside prefixing `http://`, it also supports passing
|
19
|
+
`host: host` argument to `map`, and a `listen` directive which takes a
|
20
|
+
block.
|
21
|
+
* Instead of using `module_eval`, DSL is now defined via `define_method` to
|
22
|
+
make debugging easier. Performance shouldn't get hit.
|
23
|
+
|
3
24
|
## Jellyfish 1.1.1 -- 2015-12-22
|
4
25
|
|
5
26
|
### Enhancements
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Jellyfish [![Build Status](https://secure.travis-ci.org/godfat/jellyfish.png?branch=master)](http://travis-ci.org/godfat/jellyfish) [![Coverage Status](https://coveralls.io/repos/godfat/jellyfish/badge.png)](https://coveralls.io/
|
1
|
+
# Jellyfish [![Build Status](https://secure.travis-ci.org/godfat/jellyfish.png?branch=master)](http://travis-ci.org/godfat/jellyfish) [![Coverage Status](https://coveralls.io/repos/github/godfat/jellyfish/badge.png)](https://coveralls.io/github/godfat/jellyfish) [![Join the chat at https://gitter.im/godfat/jellyfish](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/godfat/jellyfish)
|
2
2
|
|
3
3
|
by Lin Jen-Shin ([godfat](http://godfat.org))
|
4
4
|
|
@@ -9,6 +9,7 @@ by Lin Jen-Shin ([godfat](http://godfat.org))
|
|
9
9
|
* [github](https://github.com/godfat/jellyfish)
|
10
10
|
* [rubygems](https://rubygems.org/gems/jellyfish)
|
11
11
|
* [rdoc](http://rdoc.info/github/godfat/jellyfish)
|
12
|
+
* [issues](https://github.com/godfat/jellyfish/issues) (feel free to ask for support)
|
12
13
|
|
13
14
|
## DESCRIPTION:
|
14
15
|
|
@@ -179,13 +180,13 @@ run Tank.new
|
|
179
180
|
```
|
180
181
|
|
181
182
|
<!---
|
182
|
-
GET /lookup
|
183
|
+
GET /lookup host
|
183
184
|
body = File.read("#{File.dirname(
|
184
185
|
File.expand_path(__FILE__))}/../lib/jellyfish/public/302.html").
|
185
|
-
gsub('VAR_URL', '
|
186
|
+
gsub('VAR_URL', 'http://host/')
|
186
187
|
[302,
|
187
188
|
{'Content-Length' => body.bytesize.to_s, 'Content-Type' => 'text/html',
|
188
|
-
'Location' => '
|
189
|
+
'Location' => 'http://host/'},
|
189
190
|
[body]]
|
190
191
|
-->
|
191
192
|
|
@@ -238,7 +239,7 @@ body = case RUBY_ENGINE
|
|
238
239
|
when 'jruby'
|
239
240
|
"No one hears you: (eval):9:in `block in Tank'\n"
|
240
241
|
when 'rbx'
|
241
|
-
"No one hears you:
|
242
|
+
"No one hears you: core/zed.rb:1370:in `yell (method_missing)'\n"
|
242
243
|
else
|
243
244
|
"No one hears you: (eval):9:in `block in <class:Tank>'\n"
|
244
245
|
end
|
@@ -463,10 +464,8 @@ The followings are intentional:
|
|
463
464
|
* `Jellyfish::URLMap` does not modify `env`, and it would call the app with
|
464
465
|
another instance of Hash. Mutating data is a bad idea.
|
465
466
|
|
466
|
-
*
|
467
|
-
|
468
|
-
|
469
|
-
* All other tests passed the same test suites for `Rack::Builder`.
|
467
|
+
* All other tests passed the same test suites for `Rack::Builder` and
|
468
|
+
`Jellyfish::URLMap`.
|
470
469
|
|
471
470
|
``` ruby
|
472
471
|
require 'jellyfish'
|
@@ -583,6 +582,100 @@ Comparison:
|
|
583
582
|
Rack::URLMap: 1702.0 i/s - 36.66x slower
|
584
583
|
```
|
585
584
|
|
585
|
+
#### Extension: Jellyfish::Builder#listen
|
586
|
+
|
587
|
+
`listen` is a convenient way to define routing based on the host. We could
|
588
|
+
also use `map` inside `listen` block. Here's a quick example that specifically
|
589
|
+
listen on a particular host for long-polling and all other hosts would go to
|
590
|
+
the default app.
|
591
|
+
|
592
|
+
``` ruby
|
593
|
+
require 'jellyfish'
|
594
|
+
|
595
|
+
long_poll = lambda{ |env| [200, {}, ["long_poll #{env['HTTP_HOST']}\n"]] }
|
596
|
+
fast_app = lambda{ |env| [200, {}, ["fast_app #{env['HTTP_HOST']}\n"]] }
|
597
|
+
|
598
|
+
run Jellyfish::Builder.app{
|
599
|
+
listen 'slow-app' do
|
600
|
+
run long_poll
|
601
|
+
end
|
602
|
+
|
603
|
+
run fast_app
|
604
|
+
}
|
605
|
+
```
|
606
|
+
|
607
|
+
<!---
|
608
|
+
GET / slow-app
|
609
|
+
[200, {}, ["long_poll slow-app\n"]]
|
610
|
+
|
611
|
+
GET / fast-app
|
612
|
+
[200, {}, ["fast_app fast-app\n"]]
|
613
|
+
-->
|
614
|
+
|
615
|
+
##### Extension: Jellyfish::Builder#listen (`map path, host:`)
|
616
|
+
|
617
|
+
Alternatively, we could pass `host` as an argument to `map` so that the
|
618
|
+
endpoint would only listen on a specific host.
|
619
|
+
|
620
|
+
``` ruby
|
621
|
+
require 'jellyfish'
|
622
|
+
|
623
|
+
long_poll = lambda{ |env| [200, {}, ["long_poll #{env['HTTP_HOST']}\n"]] }
|
624
|
+
fast_app = lambda{ |env| [200, {}, ["fast_app #{env['HTTP_HOST']}\n"]] }
|
625
|
+
|
626
|
+
run Jellyfish::Builder.app{
|
627
|
+
map '/', host: 'slow-app' do
|
628
|
+
run long_poll
|
629
|
+
end
|
630
|
+
|
631
|
+
run fast_app
|
632
|
+
}
|
633
|
+
```
|
634
|
+
|
635
|
+
<!---
|
636
|
+
GET / slow-app
|
637
|
+
[200, {}, ["long_poll slow-app\n"]]
|
638
|
+
|
639
|
+
GET / fast-app
|
640
|
+
[200, {}, ["fast_app fast-app\n"]]
|
641
|
+
-->
|
642
|
+
|
643
|
+
<!---
|
644
|
+
GET / slow-app
|
645
|
+
[200, {}, ["long_poll slow-app\n"]]
|
646
|
+
|
647
|
+
GET / fast-app
|
648
|
+
[200, {}, ["fast_app fast-app\n"]]
|
649
|
+
-->
|
650
|
+
|
651
|
+
##### Extension: Jellyfish::Builder#listen (`map "http://#{path}"`)
|
652
|
+
|
653
|
+
Or if you really prefer the `Rack::URLMap` compatible way, then you could
|
654
|
+
just add `http://host` to your path prefix. `https` works, too.
|
655
|
+
|
656
|
+
``` ruby
|
657
|
+
require 'jellyfish'
|
658
|
+
|
659
|
+
long_poll = lambda{ |env| [200, {}, ["long_poll #{env['HTTP_HOST']}\n"]] }
|
660
|
+
fast_app = lambda{ |env| [200, {}, ["fast_app #{env['HTTP_HOST']}\n"]] }
|
661
|
+
|
662
|
+
run Jellyfish::Builder.app{
|
663
|
+
map 'http://slow-app' do
|
664
|
+
run long_poll
|
665
|
+
end
|
666
|
+
|
667
|
+
run fast_app
|
668
|
+
}
|
669
|
+
```
|
670
|
+
|
671
|
+
<!---
|
672
|
+
GET / slow-app
|
673
|
+
[200, {}, ["long_poll slow-app\n"]]
|
674
|
+
|
675
|
+
GET / fast-app
|
676
|
+
[200, {}, ["fast_app fast-app\n"]]
|
677
|
+
-->
|
678
|
+
|
586
679
|
#### Extension: Jellyfish::Rewrite
|
587
680
|
|
588
681
|
`Jellyfish::Builder` is mostly compatible with `Rack::Builder`, and
|
@@ -598,11 +691,11 @@ while leaving the `/users/list` as before. We may have this:
|
|
598
691
|
``` ruby
|
599
692
|
require 'jellyfish'
|
600
693
|
|
601
|
-
users_api = lambda{ |env| [200, {}, ["users\n"]] }
|
602
|
-
profiles_api = lambda{ |env| [200, {}, ["profiles\n"]] }
|
694
|
+
users_api = lambda{ |env| [200, {}, ["/users#{env['PATH_INFO']}\n"]] }
|
695
|
+
profiles_api = lambda{ |env| [200, {}, ["/profiles#{env['PATH_INFO']}\n"]] }
|
603
696
|
|
604
697
|
run Jellyfish::Builder.app{
|
605
|
-
rewrite '/users/me' => '/
|
698
|
+
rewrite '/users/me' => '/me' do
|
606
699
|
run profiles_api
|
607
700
|
end
|
608
701
|
map '/profiles' do
|
@@ -616,16 +709,16 @@ run Jellyfish::Builder.app{
|
|
616
709
|
|
617
710
|
<!---
|
618
711
|
GET /users/me
|
619
|
-
[200, {}, ["profiles\n"]]
|
712
|
+
[200, {}, ["/profiles/me\n"]]
|
620
713
|
|
621
714
|
GET /users/list
|
622
|
-
[200, {}, ["users\n"]]
|
715
|
+
[200, {}, ["/users/list\n"]]
|
623
716
|
|
624
717
|
GET /profiles/me
|
625
|
-
[200, {}, ["profiles\n"]]
|
718
|
+
[200, {}, ["/profiles/me\n"]]
|
626
719
|
|
627
720
|
GET /profiles/list
|
628
|
-
[200, {}, ["profiles\n"]]
|
721
|
+
[200, {}, ["/profiles/list\n"]]
|
629
722
|
-->
|
630
723
|
|
631
724
|
This way, we would rewrite `/users/me` to `/profiles/me` and serve it with
|
@@ -639,11 +732,11 @@ Note that you could also use `map path, :to` if you prefer this API more:
|
|
639
732
|
``` ruby
|
640
733
|
require 'jellyfish'
|
641
734
|
|
642
|
-
users_api = lambda{ |env| [200, {}, ["users\n"]] }
|
643
|
-
profiles_api = lambda{ |env| [200, {}, ["profiles\n"]] }
|
735
|
+
users_api = lambda{ |env| [200, {}, ["/users#{env['PATH_INFO']}\n"]] }
|
736
|
+
profiles_api = lambda{ |env| [200, {}, ["/profiles#{env['PATH_INFO']}\n"]] }
|
644
737
|
|
645
738
|
run Jellyfish::Builder.app{
|
646
|
-
map '/users/me', to: '/
|
739
|
+
map '/users/me', to: '/me' do
|
647
740
|
run profiles_api
|
648
741
|
end
|
649
742
|
map '/profiles' do
|
@@ -657,16 +750,16 @@ run Jellyfish::Builder.app{
|
|
657
750
|
|
658
751
|
<!---
|
659
752
|
GET /users/me
|
660
|
-
[200, {}, ["profiles\n"]]
|
753
|
+
[200, {}, ["/profiles/me\n"]]
|
661
754
|
|
662
755
|
GET /users/list
|
663
|
-
[200, {}, ["users\n"]]
|
756
|
+
[200, {}, ["/users/list\n"]]
|
664
757
|
|
665
758
|
GET /profiles/me
|
666
|
-
[200, {}, ["profiles\n"]]
|
759
|
+
[200, {}, ["/profiles/me\n"]]
|
667
760
|
|
668
761
|
GET /profiles/list
|
669
|
-
[200, {}, ["profiles\n"]]
|
762
|
+
[200, {}, ["/profiles/list\n"]]
|
670
763
|
-->
|
671
764
|
|
672
765
|
##### Extension: Jellyfish::Rewrite (`rewrite rules`)
|
@@ -676,11 +769,11 @@ Note that `rewrite` takes a hash which could contain more than one rule:
|
|
676
769
|
``` ruby
|
677
770
|
require 'jellyfish'
|
678
771
|
|
679
|
-
profiles_api = lambda{ |env| [200, {}, ["profiles\n"]] }
|
772
|
+
profiles_api = lambda{ |env| [200, {}, ["/profiles#{env['PATH_INFO']}\n"]] }
|
680
773
|
|
681
774
|
run Jellyfish::Builder.app{
|
682
|
-
rewrite '/users/me' => '/
|
683
|
-
'/users/fa' => '/
|
775
|
+
rewrite '/users/me' => '/me',
|
776
|
+
'/users/fa' => '/fa' do
|
684
777
|
run profiles_api
|
685
778
|
end
|
686
779
|
}
|
@@ -688,10 +781,10 @@ run Jellyfish::Builder.app{
|
|
688
781
|
|
689
782
|
<!---
|
690
783
|
GET /users/me
|
691
|
-
[200, {}, ["profiles\n"]]
|
784
|
+
[200, {}, ["/profiles/me\n"]]
|
692
785
|
|
693
786
|
GET /users/fa
|
694
|
-
[200, {}, ["profiles\n"]]
|
787
|
+
[200, {}, ["/profiles/fa\n"]]
|
695
788
|
-->
|
696
789
|
|
697
790
|
### Extension: NormalizedParams (with force_encoding)
|
@@ -742,34 +835,6 @@ GET /%E5%9B%A7
|
|
742
835
|
["/%E5%9B%A7=/\u{56e7}\n"]]
|
743
836
|
-->
|
744
837
|
|
745
|
-
### Extension: NewRelic
|
746
|
-
|
747
|
-
``` ruby
|
748
|
-
require 'jellyfish'
|
749
|
-
class Tank
|
750
|
-
include Jellyfish
|
751
|
-
controller_include Jellyfish::NewRelic
|
752
|
-
|
753
|
-
get '/' do
|
754
|
-
"OK\n"
|
755
|
-
end
|
756
|
-
end
|
757
|
-
use Rack::ContentLength
|
758
|
-
use Rack::ContentType, 'text/plain'
|
759
|
-
require 'cgi' # newrelic dev mode needs this and it won't require it itself
|
760
|
-
require 'new_relic/rack/developer_mode'
|
761
|
-
use NewRelic::Rack::DeveloperMode # GET /newrelic to read stats
|
762
|
-
run Tank.new
|
763
|
-
NewRelic::Agent.manual_start(:developer_mode => true)
|
764
|
-
```
|
765
|
-
|
766
|
-
<!---
|
767
|
-
GET /
|
768
|
-
[200,
|
769
|
-
{'Content-Length' => '3', 'Content-Type' => 'text/plain'},
|
770
|
-
["OK\n"]]
|
771
|
-
-->
|
772
|
-
|
773
838
|
### Extension: Using multiple extensions with custom controller
|
774
839
|
|
775
840
|
Note that the controller should be assigned lastly in order to include
|
@@ -1158,13 +1223,13 @@ run Tank.new
|
|
1158
1223
|
|
1159
1224
|
<!---
|
1160
1225
|
GET /echo
|
1161
|
-
sock.string.should.eq <<-HTTP.chomp
|
1226
|
+
sock.string.should.eq <<-HTTP.chomp.force_encoding('ASCII-8BIT')
|
1162
1227
|
HTTP/1.1 101 Switching Protocols\r
|
1163
1228
|
Upgrade: websocket\r
|
1164
1229
|
Connection: Upgrade\r
|
1165
1230
|
Sec-WebSocket-Accept: Kfh9QIsMVZcl6xEPYxPHzW8SZ8w=\r
|
1166
1231
|
\r
|
1167
|
-
\x81\
|
1232
|
+
\x81\x03Hi!
|
1168
1233
|
HTTP
|
1169
1234
|
[200, {}, ['']]
|
1170
1235
|
-->
|
@@ -1177,9 +1242,9 @@ HTTP
|
|
1177
1242
|
|
1178
1243
|
## LICENSE:
|
1179
1244
|
|
1180
|
-
Apache License 2.0
|
1245
|
+
Apache License 2.0 (Apache-2.0)
|
1181
1246
|
|
1182
|
-
Copyright (c) 2012-
|
1247
|
+
Copyright (c) 2012-2018, Lin Jen-Shin (godfat)
|
1183
1248
|
|
1184
1249
|
Licensed under the Apache License, Version 2.0 (the "License");
|
1185
1250
|
you may not use this file except in compliance with the License.
|
data/Rakefile
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
|
2
2
|
begin
|
3
|
-
require "#{
|
3
|
+
require "#{__dir__}/task/gemgem"
|
4
4
|
rescue LoadError
|
5
|
-
sh 'git submodule update --init'
|
5
|
+
sh 'git submodule update --init --recursive'
|
6
6
|
exec Gem.ruby, '-S', $PROGRAM_NAME, *ARGV
|
7
7
|
end
|
8
8
|
|
9
|
-
Gemgem.init(
|
9
|
+
Gemgem.init(__dir__) do |s|
|
10
10
|
require 'jellyfish/version'
|
11
11
|
s.name = 'jellyfish'
|
12
12
|
s.version = Jellyfish::VERSION
|
13
|
-
|
13
|
+
s.files.delete('jellyfish.png')
|
14
14
|
end
|
data/TODO.md
CHANGED
data/jellyfish.gemspec
CHANGED
@@ -1,76 +1,76 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: jellyfish 1.
|
2
|
+
# stub: jellyfish 1.2.0 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
|
-
s.name = "jellyfish"
|
6
|
-
s.version = "1.
|
5
|
+
s.name = "jellyfish".freeze
|
6
|
+
s.version = "1.2.0"
|
7
7
|
|
8
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
9
|
-
s.require_paths = ["lib"]
|
10
|
-
s.authors = ["Lin Jen-Shin (godfat)"]
|
11
|
-
s.date = "
|
12
|
-
s.description = "Pico web framework for building API-centric web applications.\nFor Rack applications or Rack middleware. Around 250 lines of code.\n\nCheck [jellyfish-contrib][] for extra extensions.\n\n[jellyfish-contrib]: https://github.com/godfat/jellyfish-contrib"
|
13
|
-
s.email = ["godfat (XD) godfat.org"]
|
8
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
9
|
+
s.require_paths = ["lib".freeze]
|
10
|
+
s.authors = ["Lin Jen-Shin (godfat)".freeze]
|
11
|
+
s.date = "2018-07-14"
|
12
|
+
s.description = "Pico web framework for building API-centric web applications.\nFor Rack applications or Rack middleware. Around 250 lines of code.\n\nCheck [jellyfish-contrib][] for extra extensions.\n\n[jellyfish-contrib]: https://github.com/godfat/jellyfish-contrib".freeze
|
13
|
+
s.email = ["godfat (XD) godfat.org".freeze]
|
14
14
|
s.files = [
|
15
|
-
".gitignore",
|
16
|
-
".gitmodules",
|
17
|
-
".travis.yml",
|
18
|
-
"CHANGES.md",
|
19
|
-
"Gemfile",
|
20
|
-
"LICENSE",
|
21
|
-
"README.md",
|
22
|
-
"Rakefile",
|
23
|
-
"TODO.md",
|
24
|
-
"bench/bench_builder.rb",
|
25
|
-
"config.ru",
|
26
|
-
"jellyfish.gemspec",
|
27
|
-
"jellyfish.
|
28
|
-
"lib/jellyfish.rb",
|
29
|
-
"lib/jellyfish/
|
30
|
-
"lib/jellyfish/
|
31
|
-
"lib/jellyfish/
|
32
|
-
"lib/jellyfish/
|
33
|
-
"lib/jellyfish/
|
34
|
-
"lib/jellyfish/
|
35
|
-
"lib/jellyfish/public/
|
36
|
-
"lib/jellyfish/
|
37
|
-
"lib/jellyfish/
|
38
|
-
"lib/jellyfish/
|
39
|
-
"lib/jellyfish/
|
40
|
-
"lib/jellyfish/
|
41
|
-
"
|
42
|
-
"
|
43
|
-
"
|
44
|
-
"
|
45
|
-
"test/
|
46
|
-
"test/
|
47
|
-
"test/sinatra/
|
48
|
-
"test/sinatra/
|
49
|
-
"test/
|
50
|
-
"test/
|
51
|
-
"test/
|
52
|
-
"test/
|
53
|
-
"test/
|
54
|
-
"test/
|
55
|
-
"test/
|
56
|
-
"test/
|
57
|
-
"
|
58
|
-
s.
|
59
|
-
s.
|
60
|
-
s.
|
61
|
-
s.summary = "Pico web framework for building API-centric web applications."
|
15
|
+
".gitignore".freeze,
|
16
|
+
".gitmodules".freeze,
|
17
|
+
".travis.yml".freeze,
|
18
|
+
"CHANGES.md".freeze,
|
19
|
+
"Gemfile".freeze,
|
20
|
+
"LICENSE".freeze,
|
21
|
+
"README.md".freeze,
|
22
|
+
"Rakefile".freeze,
|
23
|
+
"TODO.md".freeze,
|
24
|
+
"bench/bench_builder.rb".freeze,
|
25
|
+
"config.ru".freeze,
|
26
|
+
"jellyfish.gemspec".freeze,
|
27
|
+
"lib/jellyfish.rb".freeze,
|
28
|
+
"lib/jellyfish/builder.rb".freeze,
|
29
|
+
"lib/jellyfish/chunked_body.rb".freeze,
|
30
|
+
"lib/jellyfish/json.rb".freeze,
|
31
|
+
"lib/jellyfish/normalized_params.rb".freeze,
|
32
|
+
"lib/jellyfish/normalized_path.rb".freeze,
|
33
|
+
"lib/jellyfish/public/302.html".freeze,
|
34
|
+
"lib/jellyfish/public/404.html".freeze,
|
35
|
+
"lib/jellyfish/public/500.html".freeze,
|
36
|
+
"lib/jellyfish/rewrite.rb".freeze,
|
37
|
+
"lib/jellyfish/test.rb".freeze,
|
38
|
+
"lib/jellyfish/urlmap.rb".freeze,
|
39
|
+
"lib/jellyfish/version.rb".freeze,
|
40
|
+
"lib/jellyfish/websocket.rb".freeze,
|
41
|
+
"task/README.md".freeze,
|
42
|
+
"task/gemgem.rb".freeze,
|
43
|
+
"test/rack/test_builder.rb".freeze,
|
44
|
+
"test/rack/test_urlmap.rb".freeze,
|
45
|
+
"test/sinatra/test_base.rb".freeze,
|
46
|
+
"test/sinatra/test_chunked_body.rb".freeze,
|
47
|
+
"test/sinatra/test_error.rb".freeze,
|
48
|
+
"test/sinatra/test_routing.rb".freeze,
|
49
|
+
"test/test_from_readme.rb".freeze,
|
50
|
+
"test/test_inheritance.rb".freeze,
|
51
|
+
"test/test_listen.rb".freeze,
|
52
|
+
"test/test_log.rb".freeze,
|
53
|
+
"test/test_misc.rb".freeze,
|
54
|
+
"test/test_rewrite.rb".freeze,
|
55
|
+
"test/test_threads.rb".freeze,
|
56
|
+
"test/test_websocket.rb".freeze]
|
57
|
+
s.homepage = "https://github.com/godfat/jellyfish".freeze
|
58
|
+
s.licenses = ["Apache-2.0".freeze]
|
59
|
+
s.rubygems_version = "2.7.7".freeze
|
60
|
+
s.summary = "Pico web framework for building API-centric web applications.".freeze
|
62
61
|
s.test_files = [
|
63
|
-
"test/rack/test_builder.rb",
|
64
|
-
"test/rack/test_urlmap.rb",
|
65
|
-
"test/sinatra/test_base.rb",
|
66
|
-
"test/sinatra/test_chunked_body.rb",
|
67
|
-
"test/sinatra/test_error.rb",
|
68
|
-
"test/sinatra/test_routing.rb",
|
69
|
-
"test/test_from_readme.rb",
|
70
|
-
"test/test_inheritance.rb",
|
71
|
-
"test/
|
72
|
-
"test/
|
73
|
-
"test/
|
74
|
-
"test/
|
75
|
-
"test/
|
62
|
+
"test/rack/test_builder.rb".freeze,
|
63
|
+
"test/rack/test_urlmap.rb".freeze,
|
64
|
+
"test/sinatra/test_base.rb".freeze,
|
65
|
+
"test/sinatra/test_chunked_body.rb".freeze,
|
66
|
+
"test/sinatra/test_error.rb".freeze,
|
67
|
+
"test/sinatra/test_routing.rb".freeze,
|
68
|
+
"test/test_from_readme.rb".freeze,
|
69
|
+
"test/test_inheritance.rb".freeze,
|
70
|
+
"test/test_listen.rb".freeze,
|
71
|
+
"test/test_log.rb".freeze,
|
72
|
+
"test/test_misc.rb".freeze,
|
73
|
+
"test/test_rewrite.rb".freeze,
|
74
|
+
"test/test_threads.rb".freeze,
|
75
|
+
"test/test_websocket.rb".freeze]
|
76
76
|
end
|