local_pac 0.2.3 → 0.3.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.
- data/Gemfile +8 -6
- data/Gemfile.lock +10 -1
- data/README.md +5 -1
- data/bin/local_pac +16 -1
- data/lib/local_pac.rb +2 -0
- data/lib/local_pac/server.rb +8 -17
- data/lib/local_pac/server_commands/puma.rb +37 -0
- data/lib/local_pac/server_commands/rackup.rb +44 -0
- data/lib/local_pac/version.rb +1 -1
- data/share/archlinux/Makefile +2 -0
- data/share/archlinux/PKGBUILD +3 -1
- data/share/archlinux/startup.erb +2 -0
- data/spec/server_commands/puma_spec.rb +61 -0
- data/spec/server_commands/rackup_spec.rb +53 -0
- data/spec/server_spec.rb +59 -5
- metadata +8 -2
data/Gemfile
CHANGED
@@ -18,7 +18,6 @@ group :test do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
group :development do
|
21
|
-
gem 'awesome_print', require: false
|
22
21
|
gem 'debugger'
|
23
22
|
gem 'debugger-completion'
|
24
23
|
gem 'foreman', require: false
|
@@ -29,6 +28,7 @@ group :development do
|
|
29
28
|
gem 'redcarpet', require: false
|
30
29
|
gem 'tmrb', require: false
|
31
30
|
gem 'yard', require: false
|
31
|
+
gem 'inch', require: false
|
32
32
|
end
|
33
33
|
|
34
34
|
group :profile do
|
@@ -42,8 +42,10 @@ gem 'erubis', group: [:development, :test]
|
|
42
42
|
gem 'versionomy', group: [:development, :test], require: false
|
43
43
|
gem 'activesupport', '~> 4.0.0', group: [:development, :test], require: false
|
44
44
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
45
|
+
gem 'awesome_print', group: [:development, :test], require: 'ap'
|
46
|
+
|
47
|
+
group :webserver do
|
48
|
+
group :puma do
|
49
|
+
gem 'puma'
|
50
|
+
end
|
51
|
+
end
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
local_pac (0.2.
|
4
|
+
local_pac (0.2.3)
|
5
5
|
activesupport
|
6
6
|
addressable
|
7
7
|
bootstrap-sass
|
@@ -108,6 +108,10 @@ GEM
|
|
108
108
|
tilt
|
109
109
|
hike (1.2.3)
|
110
110
|
i18n (0.6.9)
|
111
|
+
inch (0.3.1)
|
112
|
+
sparkr (>= 0.2.0)
|
113
|
+
term-ansicolor
|
114
|
+
yard (~> 0.8.7)
|
111
115
|
json (1.8.1)
|
112
116
|
libv8 (3.16.14.3)
|
113
117
|
method_source (0.8.2)
|
@@ -139,6 +143,8 @@ GEM
|
|
139
143
|
pry-doc (0.5.1)
|
140
144
|
pry (>= 0.9)
|
141
145
|
yard (>= 0.8)
|
146
|
+
puma (2.7.1)
|
147
|
+
rack (>= 1.1, < 2.0)
|
142
148
|
rack (1.5.2)
|
143
149
|
rack-contrib (1.1.0)
|
144
150
|
rack (>= 0.9.1)
|
@@ -179,6 +185,7 @@ GEM
|
|
179
185
|
rack-protection (~> 1.4)
|
180
186
|
tilt (~> 1.3, >= 1.3.4)
|
181
187
|
slop (3.4.7)
|
188
|
+
sparkr (0.4.1)
|
182
189
|
sprockets (2.10.1)
|
183
190
|
hike (~> 1.2)
|
184
191
|
multi_json (~> 1.0)
|
@@ -232,11 +239,13 @@ DEPENDENCIES
|
|
232
239
|
foreman
|
233
240
|
fuubar
|
234
241
|
github-markup
|
242
|
+
inch
|
235
243
|
local_pac!
|
236
244
|
poltergeist
|
237
245
|
pry
|
238
246
|
pry-debugger
|
239
247
|
pry-doc
|
248
|
+
puma
|
240
249
|
rack-test
|
241
250
|
rake
|
242
251
|
redcarpet
|
data/README.md
CHANGED
@@ -97,7 +97,7 @@ makepkg -is
|
|
97
97
|
% firefox http://localhost:8000/v1/lookup/proxy.pac
|
98
98
|
```
|
99
99
|
|
100
|
-
### Getting started
|
100
|
+
### Getting started (Work in Progress)
|
101
101
|
|
102
102
|
Make sure that you place a config file for `local_pac` in one of the following
|
103
103
|
places or let `local_pac` generate a file on default values (see below).
|
@@ -310,6 +310,10 @@ option | value
|
|
310
310
|
A good website to support you writing proxy.pac-files is:
|
311
311
|
http://findproxyforurl.com.
|
312
312
|
|
313
|
+
## Documentation
|
314
|
+
|
315
|
+
http://www.rubydoc.info/github/dg-vrnetze/local_pac/frames
|
316
|
+
|
313
317
|
## Future
|
314
318
|
|
315
319
|
* Improve API to support further functionality
|
data/bin/local_pac
CHANGED
@@ -18,6 +18,7 @@ module LocalPac
|
|
18
18
|
option :access_log, type: :string, desc: 'File to write access log to'
|
19
19
|
option :listen, type: :string, default: 'tcp://localhost:8000', desc: 'Listen for requests'
|
20
20
|
option :rack_environment, type: :string, default: 'production', desc: 'Rack environment for application'
|
21
|
+
option :with, type: :string, default: 'puma', desc: 'Server used to serve proxy pac'
|
21
22
|
def serve
|
22
23
|
LocalPac.config = LocalPac::Config.new(options[:config_file]) if options[:config_file]
|
23
24
|
LocalPac.config.access_log = options[:access_log] if options[:access_log]
|
@@ -30,7 +31,21 @@ module LocalPac
|
|
30
31
|
LocalPac.ui_logger.debug('Options: ' + options.to_s)
|
31
32
|
LocalPac.ui_logger.debug("Config:\n" + LocalPac.config.to_s)
|
32
33
|
|
33
|
-
|
34
|
+
command_klass = case options[:with].to_sym
|
35
|
+
when :puma
|
36
|
+
ServerCommands::Puma
|
37
|
+
when :rackup
|
38
|
+
ServerCommands::Rackup
|
39
|
+
else
|
40
|
+
ServerCommands::Rackup
|
41
|
+
end
|
42
|
+
|
43
|
+
command = command_klass.new(
|
44
|
+
listen: options[:listen],
|
45
|
+
environment: options[:rack_environment],
|
46
|
+
)
|
47
|
+
|
48
|
+
Server.new(command).start
|
34
49
|
end
|
35
50
|
|
36
51
|
desc 'init', 'Create files/directories to use local_pac in dir or $PWD'
|
data/lib/local_pac.rb
CHANGED
@@ -55,6 +55,8 @@ require 'local_pac/actions/print_title'
|
|
55
55
|
require 'local_pac/actions/reload_configuration'
|
56
56
|
require 'local_pac/actions/reload_local_storage'
|
57
57
|
require 'local_pac/actions/add_examples_to_local_storage'
|
58
|
+
require 'local_pac/server_commands/rackup'
|
59
|
+
require 'local_pac/server_commands/puma'
|
58
60
|
require 'local_pac/cli/helper'
|
59
61
|
require 'local_pac/cli/reload'
|
60
62
|
require 'local_pac/initializer'
|
data/lib/local_pac/server.rb
CHANGED
@@ -1,28 +1,19 @@
|
|
1
1
|
# encoding:utf-8
|
2
2
|
module LocalPac
|
3
3
|
class Server
|
4
|
-
attr_reader :port, :host, :path, :environment
|
5
4
|
|
6
|
-
|
7
|
-
uri = URI.parse(listen)
|
5
|
+
private
|
8
6
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
7
|
+
attr_reader :command
|
8
|
+
|
9
|
+
public
|
10
|
+
|
11
|
+
def initialize(command = ServerCommands::Rackup.new)
|
12
|
+
@command = command
|
14
13
|
end
|
15
14
|
|
16
15
|
def start
|
17
|
-
|
18
|
-
cmd << 'rackup'
|
19
|
-
cmd << "-E #{environment}"
|
20
|
-
cmd << "-P #{LocalPac.config.pid_file}"
|
21
|
-
cmd << "-o #{host}"
|
22
|
-
cmd << "-p #{port}"
|
23
|
-
cmd << ::File.expand_path('../../../config.ru', __FILE__)
|
24
|
-
|
25
|
-
exec(cmd.join(" "))
|
16
|
+
exec command.to_s
|
26
17
|
end
|
27
18
|
end
|
28
19
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module LocalPac
|
3
|
+
module ServerCommands
|
4
|
+
class Puma
|
5
|
+
|
6
|
+
private
|
7
|
+
|
8
|
+
attr_reader :environment, :pid_file, :config_file, :listen, :worker_count
|
9
|
+
|
10
|
+
public
|
11
|
+
|
12
|
+
def initialize(options = {})
|
13
|
+
@environment = options.fetch(:environment, :development)
|
14
|
+
@pid_file = options.fetch(:pid_file, LocalPac.config.pid_file)
|
15
|
+
@config_file = options.fetch(:config_file, ::File.expand_path('../../../../config.ru', __FILE__))
|
16
|
+
@listen = options.fetch(:listen, 'tcp://127.0.0.1:8080')
|
17
|
+
@worker_count = options.fetch(:worker_count, nil)
|
18
|
+
|
19
|
+
rescue KeyError => e
|
20
|
+
raise ArgumentError, e.message
|
21
|
+
end
|
22
|
+
|
23
|
+
def to_s
|
24
|
+
cmd = []
|
25
|
+
|
26
|
+
cmd << 'puma'
|
27
|
+
cmd << "-e #{environment}" if environment
|
28
|
+
cmd << "--pidfile #{pid_file}" if pid_file
|
29
|
+
cmd << "-b #{listen}" if listen
|
30
|
+
cmd << "-w #{worker_count}" if worker_count
|
31
|
+
cmd << config_file if config_file
|
32
|
+
|
33
|
+
cmd.join(" ")
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module LocalPac
|
3
|
+
module ServerCommands
|
4
|
+
class Rackup
|
5
|
+
|
6
|
+
private
|
7
|
+
|
8
|
+
attr_reader :environment, :pid_file, :config_file, :host, :port
|
9
|
+
|
10
|
+
public
|
11
|
+
|
12
|
+
def initialize(options = {})
|
13
|
+
@environment = options.fetch(:environment, :development)
|
14
|
+
@pid_file = options.fetch(:pid_file, LocalPac.config.pid_file)
|
15
|
+
@config_file = options.fetch(:config_file, ::File.expand_path('../../../../config.ru', __FILE__))
|
16
|
+
listen = options.fetch(:listen, '127.0.0.1:8080')
|
17
|
+
|
18
|
+
begin
|
19
|
+
uri = Addressable::URI.heuristic_parse(listen)
|
20
|
+
rescue StandardError => e
|
21
|
+
fail Exceptions::ServerListenStatementInvalid, "I cannot parse the listen statement: #{listen}. It is invalid: #{e.message}"
|
22
|
+
end
|
23
|
+
|
24
|
+
@port = uri.port
|
25
|
+
@host = uri.host
|
26
|
+
rescue KeyError => e
|
27
|
+
raise ArgumentError, e.message
|
28
|
+
end
|
29
|
+
|
30
|
+
def to_s
|
31
|
+
cmd = []
|
32
|
+
|
33
|
+
cmd << 'rackup'
|
34
|
+
cmd << "-E #{environment}" if environment
|
35
|
+
cmd << "-P #{pid_file}" if pid_file
|
36
|
+
cmd << "-o #{host}" if host
|
37
|
+
cmd << "-p #{port}" if port
|
38
|
+
cmd << config_file if config_file
|
39
|
+
|
40
|
+
cmd.join(" ")
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/lib/local_pac/version.rb
CHANGED
data/share/archlinux/Makefile
CHANGED
data/share/archlinux/PKGBUILD
CHANGED
@@ -34,10 +34,12 @@ package() {
|
|
34
34
|
|
35
35
|
msg "Starting download of gems. Don't get alert if the download takes a lot of time. Since rubygems 2.2.0 a new algorithm to resolve dependencies is used. Upgrade to > 2.2.0 via sudo /usr/bin/gem update --system to improve performance."
|
36
36
|
|
37
|
-
GEM_HOME="${pkgdir}${_library_dir}" GEM_ROOT="${pkgdir}${_library_dir}" GEM_PATH="${pkgdir}${_library_dir}" /usr/bin/gem install --env-shebang --wrappers --no-ri --no-rdoc --no-prerelease --install-dir ${pkgdir}${_library_dir} $pkgname
|
37
|
+
GEM_HOME="${pkgdir}${_library_dir}" GEM_ROOT="${pkgdir}${_library_dir}" GEM_PATH="${pkgdir}${_library_dir}" /usr/bin/gem install --env-shebang --wrappers --no-ri --no-rdoc --no-prerelease --install-dir ${pkgdir}${_library_dir} $pkgname -v $pkgver
|
38
|
+
GEM_HOME="${pkgdir}${_library_dir}" GEM_ROOT="${pkgdir}${_library_dir}" GEM_PATH="${pkgdir}${_library_dir}" /usr/bin/gem install --env-shebang --wrappers --no-ri --no-rdoc --no-prerelease --install-dir ${pkgdir}${_library_dir} puma
|
38
39
|
|
39
40
|
install -D -m 644 ${pkgdir}${_share_dir}/archlinux/config.yaml ${pkgdir}${_examples_dir}/config.yaml.example
|
40
41
|
|
42
|
+
set -x
|
41
43
|
SOFTWARE_BINARY=$_library_dir/gems/${pkgname}-${pkgver}/bin/${pkgname} SOFTWARE_LIB=/usr/lib/local_pac filegen ${pkgdir}${_share_dir}/archlinux/startup.erb > ${pkgdir}${_bin_dir}/${pkgname}
|
42
44
|
|
43
45
|
chmod a+x ${pkgdir}/${_bin_dir}/${pkgname}
|
data/share/archlinux/startup.erb
CHANGED
@@ -0,0 +1,61 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
describe ServerCommands::Puma do
|
3
|
+
|
4
|
+
context '#initialize' do
|
5
|
+
it 'requires a listen statement' do
|
6
|
+
pid_file = create_file 'pid', $$
|
7
|
+
config_file = create_file 'config.ru'
|
8
|
+
|
9
|
+
expect {
|
10
|
+
ServerCommands::Puma.new(
|
11
|
+
listen: 'localhost:8080',
|
12
|
+
pid_file: pid_file,
|
13
|
+
config_file: config_file,
|
14
|
+
)
|
15
|
+
}.not_to raise_error
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context '#to_s' do
|
20
|
+
it 'has defaults' do
|
21
|
+
command = ServerCommands::Puma.new
|
22
|
+
expect(command.to_s).to eq("puma -e development --pidfile #{LocalPac.config.pid_file} -b tcp://127.0.0.1:8080 #{File.expand_path('../../../config.ru', __FILE__)}")
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'respects changed environment' do
|
26
|
+
command = ServerCommands::Puma.new(
|
27
|
+
environment: 'super_env'
|
28
|
+
)
|
29
|
+
|
30
|
+
expect(command.to_s).to include('-e super_env')
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'respects changed pid file' do
|
34
|
+
pid_file = create_file 'pid', $$
|
35
|
+
|
36
|
+
command = ServerCommands::Puma.new(
|
37
|
+
pid_file: pid_file,
|
38
|
+
)
|
39
|
+
|
40
|
+
expect(command.to_s).to include("--pidfile #{pid_file}")
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'respects changed config_file' do
|
44
|
+
config_file = create_file 'config.ru'
|
45
|
+
|
46
|
+
command = ServerCommands::Puma.new(
|
47
|
+
config_file: config_file,
|
48
|
+
)
|
49
|
+
|
50
|
+
expect(command.to_s).to include(config_file)
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'respects changed worker count' do
|
54
|
+
command = ServerCommands::Puma.new(
|
55
|
+
worker_count: 20,
|
56
|
+
)
|
57
|
+
|
58
|
+
expect(command.to_s).to include('-w 20')
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
describe ServerCommands::Rackup do
|
3
|
+
|
4
|
+
context '#initialize' do
|
5
|
+
it 'requires a listen statement' do
|
6
|
+
pid_file = create_file 'pid', $$
|
7
|
+
config_file = create_file 'config.ru'
|
8
|
+
|
9
|
+
expect {
|
10
|
+
ServerCommands::Rackup.new(
|
11
|
+
listen: 'localhost:8080',
|
12
|
+
pid_file: pid_file,
|
13
|
+
config_file: config_file,
|
14
|
+
)
|
15
|
+
}.not_to raise_error
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context '#to_s' do
|
20
|
+
it 'has defaults' do
|
21
|
+
command = ServerCommands::Rackup.new
|
22
|
+
expect(command.to_s).to eq("rackup -E development -P #{LocalPac.config.pid_file} -o 127.0.0.1 -p 8080 #{File.expand_path('../../../config.ru', __FILE__)}")
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'respects changed environment' do
|
26
|
+
command = ServerCommands::Rackup.new(
|
27
|
+
environment: '-E super_env'
|
28
|
+
)
|
29
|
+
|
30
|
+
expect(command.to_s).to include('-E super_env')
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'respects changed pid file' do
|
34
|
+
pid_file = create_file 'pid', $$
|
35
|
+
|
36
|
+
command = ServerCommands::Rackup.new(
|
37
|
+
pid_file: pid_file,
|
38
|
+
)
|
39
|
+
|
40
|
+
expect(command.to_s).to include("-P #{pid_file}")
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'respects changed config_file' do
|
44
|
+
config_file = create_file 'config.ru'
|
45
|
+
|
46
|
+
command = ServerCommands::Rackup.new(
|
47
|
+
config_file: config_file,
|
48
|
+
)
|
49
|
+
|
50
|
+
expect(command.to_s).to include(config_file)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/spec/server_spec.rb
CHANGED
@@ -3,16 +3,70 @@ require 'spec_helper'
|
|
3
3
|
|
4
4
|
describe Server do
|
5
5
|
context '#initialize' do
|
6
|
-
it 'requires
|
6
|
+
it 'requires a command' do
|
7
|
+
command = double('Command')
|
8
|
+
|
7
9
|
expect {
|
8
|
-
Server.new(
|
10
|
+
Server.new(command)
|
9
11
|
}.not_to raise_error
|
10
12
|
end
|
11
13
|
|
12
|
-
it '
|
14
|
+
it 'uses rackup by default' do
|
13
15
|
expect {
|
14
|
-
Server.new
|
15
|
-
}.
|
16
|
+
Server.new
|
17
|
+
}.not_to raise_error
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context '#start' do
|
22
|
+
it 'starts the server' do
|
23
|
+
create_file 'app.rb', <<-EOS.strip_heredoc
|
24
|
+
require 'sinatra'
|
25
|
+
|
26
|
+
trap 'USR1' do
|
27
|
+
$stderr.puts "Exit"
|
28
|
+
Kernel.exit!
|
29
|
+
end
|
30
|
+
|
31
|
+
class App < Sinatra::Base
|
32
|
+
get '/' do
|
33
|
+
'Hello World'
|
34
|
+
end
|
35
|
+
end
|
36
|
+
EOS
|
37
|
+
|
38
|
+
config_file = create_file 'config.ru', <<-EOS.strip_heredoc
|
39
|
+
$LOAD_PATH << File.expand_path('..', __FILE__)
|
40
|
+
|
41
|
+
#$stderr = StringIO.new
|
42
|
+
#$stdout = StringIO.new
|
43
|
+
|
44
|
+
require 'app'
|
45
|
+
run App
|
46
|
+
EOS
|
47
|
+
|
48
|
+
command = double('Command')
|
49
|
+
allow(command).to receive(:to_s).and_return("rackup -E development -o 127.0.0.1 -p 9999 #{config_file} 2>/dev/null >&1")
|
50
|
+
|
51
|
+
server = Server.new(command)
|
52
|
+
|
53
|
+
unless child_pid = Kernel.fork
|
54
|
+
server.start
|
55
|
+
end
|
56
|
+
|
57
|
+
begin
|
58
|
+
tries ||= 3
|
59
|
+
|
60
|
+
response = with_environment({}, clear: true) do
|
61
|
+
Excon.get('http://127.0.0.1:9999')
|
62
|
+
end
|
63
|
+
rescue Excon::Errors::SocketError
|
64
|
+
sleep 1
|
65
|
+
retry unless (tries -= 1).zero?
|
66
|
+
end
|
67
|
+
|
68
|
+
Process.kill :USR1, child_pid
|
69
|
+
expect(response.body).to eq('Hello World')
|
16
70
|
end
|
17
71
|
end
|
18
72
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: local_pac
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-03-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
@@ -485,6 +485,8 @@ files:
|
|
485
485
|
- lib/local_pac/router.rb
|
486
486
|
- lib/local_pac/runner.rb
|
487
487
|
- lib/local_pac/server.rb
|
488
|
+
- lib/local_pac/server_commands/puma.rb
|
489
|
+
- lib/local_pac/server_commands/rackup.rb
|
488
490
|
- lib/local_pac/spec_helper.rb
|
489
491
|
- lib/local_pac/spec_helper_file_server.rb
|
490
492
|
- lib/local_pac/template_file.rb
|
@@ -537,6 +539,8 @@ files:
|
|
537
539
|
- spec/proxy_pac/pac_result_spec.rb
|
538
540
|
- spec/proxy_pac_result_parser_spec.rb
|
539
541
|
- spec/runner_spec.rb
|
542
|
+
- spec/server_commands/puma_spec.rb
|
543
|
+
- spec/server_commands/rackup_spec.rb
|
540
544
|
- spec/server_spec.rb
|
541
545
|
- spec/spec_helper.rb
|
542
546
|
- spec/spec_helper_features.rb
|
@@ -617,6 +621,8 @@ test_files:
|
|
617
621
|
- spec/proxy_pac/pac_result_spec.rb
|
618
622
|
- spec/proxy_pac_result_parser_spec.rb
|
619
623
|
- spec/runner_spec.rb
|
624
|
+
- spec/server_commands/puma_spec.rb
|
625
|
+
- spec/server_commands/rackup_spec.rb
|
620
626
|
- spec/server_spec.rb
|
621
627
|
- spec/spec_helper.rb
|
622
628
|
- spec/spec_helper_features.rb
|