brisk 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/bin/brisk +5 -0
- data/lib/brisk.rb +54 -0
- data/lib/brisk/configuration.rb +46 -0
- data/lib/brisk/constants.rb +3 -0
- data/lib/brisk/dnsmasq.rb +52 -0
- data/lib/brisk/rerun.rb +19 -0
- data/lib/brisk/server/brisk_request_helper.rb +21 -0
- data/lib/brisk/server/config.ru +5 -0
- data/lib/brisk/server/pid.rb +18 -0
- data/lib/brisk/server/proxy.rb +63 -0
- data/lib/brisk/server/server.rb +36 -0
- data/lib/brisk/server/server_middleware.rb +31 -0
- data/lib/brisk/server/site.rb +17 -0
- data/lib/brisk/thin.rb +40 -0
- data/lib/brisk/version.rb +3 -0
- data/stubs/daemon.plist +23 -0
- metadata +146 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 7fda12aee0efddd813bc88c4569ffe04cc38e9db
|
4
|
+
data.tar.gz: fb8e0e72095b7af45f7b5265fc345edf5ada054e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0683d83026e1b2f5ee3396e3ac28c5c833eb05763e0b1222e3c811807c26ca9977df895c275ffd4e0b7b66022c8c60c8f069477c09c1abbbbe4eba5df172d8c6
|
7
|
+
data.tar.gz: 3d41ccf08b7112a259d60cc9098dd3bf12c0ec5b5cf6a17cfae259adaa4edca71bc8e4c091f531e869f0337d181b4546c46fe74276cc1fd1a6a4824f0248d791
|
data/bin/brisk
ADDED
data/lib/brisk.rb
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require 'brisk/configuration'
|
3
|
+
require 'brisk/thin'
|
4
|
+
require 'brisk/dnsmasq'
|
5
|
+
require 'brisk/rerun'
|
6
|
+
require 'brisk/constants'
|
7
|
+
require 'brisk/server/server'
|
8
|
+
|
9
|
+
class Valet < Thor
|
10
|
+
|
11
|
+
desc "install", "install Valet"
|
12
|
+
def install
|
13
|
+
Thin.install
|
14
|
+
Configuration.install
|
15
|
+
DnsMasq.install
|
16
|
+
Rerun.install
|
17
|
+
Thin.restart
|
18
|
+
puts "Ruby Valet installed Successfully. Start adding directories by using brisk set".colorize(:green)
|
19
|
+
end
|
20
|
+
|
21
|
+
desc "set", "Set directory"
|
22
|
+
def set
|
23
|
+
Configuration.add_path(Dir.pwd)
|
24
|
+
puts "Successfully added directory".colorize(:green)
|
25
|
+
end
|
26
|
+
|
27
|
+
desc "unset", "Unset directory"
|
28
|
+
def unset
|
29
|
+
Configuration.remove_path(Dir.pwd)
|
30
|
+
puts "Successfully removed directory".colorize(:green)
|
31
|
+
end
|
32
|
+
|
33
|
+
desc "kill", "Kill web server"
|
34
|
+
def kill
|
35
|
+
Server.kill(Constants::VALET_HOME)
|
36
|
+
end
|
37
|
+
|
38
|
+
desc "stop", "Stops the server"
|
39
|
+
def stop
|
40
|
+
Thin.stop
|
41
|
+
end
|
42
|
+
|
43
|
+
desc "start", "Starts the server"
|
44
|
+
def start
|
45
|
+
Thin.stop
|
46
|
+
end
|
47
|
+
|
48
|
+
desc "restart", "Restarts the server"
|
49
|
+
def restart
|
50
|
+
Thin.restart
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
Valet.start(ARGV)
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'brisk/constants'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
class Configuration
|
6
|
+
include Constants
|
7
|
+
def self.install
|
8
|
+
unless File.directory?(directory = Constants::VALET_HOME)
|
9
|
+
FileUtils.mkdir_p(directory, :mode => 0755)
|
10
|
+
end
|
11
|
+
|
12
|
+
unless File.directory?(drivers_directory = Constants::VALET_HOME + '/Drivers')
|
13
|
+
FileUtils.mkdir_p(drivers_directory, :mode => 0755)
|
14
|
+
end
|
15
|
+
|
16
|
+
unless File.directory?(path)
|
17
|
+
write({:domain => 'dev', 'paths' => []})
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.add_path(path)
|
22
|
+
config = read
|
23
|
+
config['paths'].push(path)
|
24
|
+
write(config)
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.remove_path(path)
|
28
|
+
config = read
|
29
|
+
config['paths'].delete_if {|i| i == path}
|
30
|
+
write(config)
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.path
|
34
|
+
return Constants::VALET_HOME + '/config.json'
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.read
|
38
|
+
JSON.parse(File.read(path))
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.write(config)
|
42
|
+
File.open(path, "w+") do |f|
|
43
|
+
f.write(config.to_json)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'colorize'
|
2
|
+
|
3
|
+
class DnsMasq
|
4
|
+
|
5
|
+
def self.install
|
6
|
+
unless is_installed?
|
7
|
+
puts "Installing DnsMasq...".colorize(:green)
|
8
|
+
download
|
9
|
+
end
|
10
|
+
|
11
|
+
create_custom_configuration
|
12
|
+
|
13
|
+
create_resolver
|
14
|
+
|
15
|
+
system "brew services restart dnsmasq > /dev/null"
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.is_installed?
|
19
|
+
system "brew list | grep dnsmasq >> /dev/null"
|
20
|
+
|
21
|
+
$? == 0
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.download
|
25
|
+
system "sudo -u #{ENV['SUDO_USER']} brew install dnsmasq"
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.create_custom_configuration
|
29
|
+
dnsmasq_path = "/Users/#{ENV['SUDO_USER']}/.brisk/dnsmasq.conf"
|
30
|
+
|
31
|
+
unless File.file?('/usr/local/etc/dnsmasq.conf')
|
32
|
+
FileUtils.copy('/usr/local/opt/dnsmasq/dnsmasq.conf.example','/usr/local/etc/dnsmasq.conf')
|
33
|
+
end
|
34
|
+
|
35
|
+
if File.read('/usr/local/etc/dnsmasq.conf').index(dnsmasq_path) == nil
|
36
|
+
File.open('/usr/local/etc/dnsmasq.conf', 'a') { |f| f.puts "conf-file=" + dnsmasq_path }
|
37
|
+
end
|
38
|
+
|
39
|
+
File.write(dnsmasq_path, 'address=/.dev/127.0.0.1')
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.create_resolver
|
43
|
+
unless File.directory?('/etc/resolver')
|
44
|
+
FileUtils.mkdir_p('/etc/resolver')
|
45
|
+
end
|
46
|
+
|
47
|
+
# File.write('etc/resolver/dev', 'nameserver 127.0.0.1')
|
48
|
+
File.open('/etc/resolver/dev', 'w+') do |f|
|
49
|
+
f.write('nameserver 127.0.0.1')
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
data/lib/brisk/rerun.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
class Rerun
|
2
|
+
|
3
|
+
def self.install
|
4
|
+
unless is_installed?
|
5
|
+
puts "Installing rerun...".colorize(:green)
|
6
|
+
download
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.is_installed?
|
11
|
+
system "gem list -i rerun > /dev/null"
|
12
|
+
|
13
|
+
$? == 0
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.download
|
17
|
+
system "gem install rerun >> /dev/null"
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class BriskRequestHelper
|
2
|
+
|
3
|
+
def initialize(env)
|
4
|
+
@env = env
|
5
|
+
@request = Rack::Request.new(env)
|
6
|
+
end
|
7
|
+
|
8
|
+
def get_site
|
9
|
+
@request.host[0..-5]
|
10
|
+
end
|
11
|
+
|
12
|
+
def valet_home_path
|
13
|
+
uid = File.stat(__FILE__).uid
|
14
|
+
home_dir = Etc.getpwuid(uid).dir
|
15
|
+
home_dir + "/.brisk"
|
16
|
+
end
|
17
|
+
|
18
|
+
def get_config
|
19
|
+
config = JSON.parse(File.read(valet_home_path + '/config.json'))
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class Pid
|
2
|
+
|
3
|
+
def self.write(path, pid)
|
4
|
+
File.open("#{path}/pid.txt", 'w') do |f|
|
5
|
+
f.write(pid)
|
6
|
+
end
|
7
|
+
|
8
|
+
sleep(1)
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.read(path)
|
12
|
+
File.read("#{path}/tmp/pids/thin.pid")
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.exists?(path)
|
16
|
+
File.file?("#{path}/tmp/pids/thin.pid")
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'rack-proxy'
|
2
|
+
require 'etc'
|
3
|
+
require 'json'
|
4
|
+
require 'brisk/server/server_middleware'
|
5
|
+
require 'brisk/server/brisk_request_helper'
|
6
|
+
require 'brisk/server/server'
|
7
|
+
require 'brisk/server/site'
|
8
|
+
require 'brisk/server/pid'
|
9
|
+
|
10
|
+
class AppProxy < Rack::Proxy
|
11
|
+
|
12
|
+
|
13
|
+
def rewrite_env(env)
|
14
|
+
# Get all the necessary info
|
15
|
+
request = BriskRequestHelper.new env
|
16
|
+
site = request.get_site
|
17
|
+
valet_home_path = request.valet_home_path
|
18
|
+
|
19
|
+
# Kill existing servers, so we don't get conflitcs
|
20
|
+
if Server.is_running(valet_home_path)
|
21
|
+
|
22
|
+
if Site.read_site(valet_home_path) == site
|
23
|
+
env["HTTP_HOST"] = "localhost:3000"
|
24
|
+
return env
|
25
|
+
end
|
26
|
+
|
27
|
+
existing_pid = Server.read(valet_home_path)
|
28
|
+
Server.shutdown(existing_pid)
|
29
|
+
end
|
30
|
+
|
31
|
+
config = request.get_config
|
32
|
+
|
33
|
+
valet_site_path = nil
|
34
|
+
|
35
|
+
# Check if we can find a folder based on the URL
|
36
|
+
config['paths'].each do |path|
|
37
|
+
if File.directory?("/#{path}/#{site}")
|
38
|
+
if File.file?("/#{path}/#{site}/config.ru")
|
39
|
+
valet_site_path = "/#{path}/#{site}"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# Boot up the server
|
45
|
+
Server.start(valet_site_path)
|
46
|
+
|
47
|
+
started = Server.is_started(valet_site_path)
|
48
|
+
|
49
|
+
# Write the pid to a file so we can delete it later on
|
50
|
+
if started
|
51
|
+
pid = Pid.read(valet_site_path)
|
52
|
+
Pid.write(valet_home_path, pid)
|
53
|
+
Site.write_site(valet_home_path, site)
|
54
|
+
end
|
55
|
+
|
56
|
+
sleep(2)
|
57
|
+
|
58
|
+
# # Set the host to the server we just started
|
59
|
+
env["HTTP_HOST"] = "localhost:3000"
|
60
|
+
|
61
|
+
env
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'brisk/server/pid'
|
2
|
+
|
3
|
+
class Server
|
4
|
+
|
5
|
+
def self.is_running(path)
|
6
|
+
File.file?("#{path}/pid.txt")
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.read(path)
|
10
|
+
File.read("#{path}/pid.txt")
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.kill(path)
|
14
|
+
if is_running(path)
|
15
|
+
pid = read path
|
16
|
+
shutdown pid
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.start(path)
|
21
|
+
spawn "cd #{path} && /usr/local/bin/rerun \"/usr/local/bin/thin -d -R config.ru -a localhost -p 3000 start\""
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.is_started(path, counter = 0)
|
25
|
+
sleep(1)
|
26
|
+
if Pid.exists?(path)
|
27
|
+
return true
|
28
|
+
end
|
29
|
+
|
30
|
+
is_started(path, counter + 1)
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.shutdown(pid)
|
34
|
+
system "sudo kill -9 #{pid}"
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'brisk/server/brisk_request_helper'
|
2
|
+
|
3
|
+
class ServerMiddleware
|
4
|
+
def initialize(app)
|
5
|
+
@app = app
|
6
|
+
end
|
7
|
+
|
8
|
+
def call(env)
|
9
|
+
request = BriskRequestHelper.new env
|
10
|
+
site = request.get_site
|
11
|
+
valet_home_path = request.valet_home_path
|
12
|
+
|
13
|
+
config = request.get_config
|
14
|
+
|
15
|
+
valet_site_path = nil
|
16
|
+
|
17
|
+
config['paths'].each do |path|
|
18
|
+
if File.directory?("/#{path}/#{site}")
|
19
|
+
if File.file?("/#{path}/#{site}/config.ru")
|
20
|
+
valet_site_path = "/#{path}/#{site}"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
if valet_site_path.nil?
|
26
|
+
return [404, {}, ['Not found']]
|
27
|
+
end
|
28
|
+
|
29
|
+
@app.call(env)
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class Site
|
2
|
+
def self.write_site(path, site)
|
3
|
+
File.open("#{path}/site.txt", "w+") do |f|
|
4
|
+
f.write(site)
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.read_site(path)
|
9
|
+
if site_file_exists?(path)
|
10
|
+
return File.read("#{path}/site.txt")
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.site_file_exists?(path)
|
15
|
+
File.file?("#{path}/site.txt")
|
16
|
+
end
|
17
|
+
end
|
data/lib/brisk/thin.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'colorize'
|
2
|
+
|
3
|
+
class Thin
|
4
|
+
|
5
|
+
def self.install
|
6
|
+
unless system "gem list -i thin > /dev/null"
|
7
|
+
system "gem install thin > /dev/null"
|
8
|
+
|
9
|
+
if $? == 0
|
10
|
+
puts "Successfuly installed thin".colorize(:green)
|
11
|
+
else
|
12
|
+
puts "Something went wrong while installing thin. The process gets stopped".colorize(:red)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
path = File.expand_path("../../stubs/daemon.plist", __dir__)
|
17
|
+
server = File.expand_path("server/config.ru", __dir__)
|
18
|
+
|
19
|
+
file = File.read(path)
|
20
|
+
|
21
|
+
new_file = file.gsub("SERVER_PATH", server)
|
22
|
+
File.open("/Library/LaunchDaemons/com.frankleef.briskServer.plist", "w+") do |file|
|
23
|
+
file.write(new_file)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.restart
|
28
|
+
stop
|
29
|
+
|
30
|
+
start
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.start
|
34
|
+
system "launchctl load /Library/LaunchDaemons/com.frankleef.briskServer.plist > /dev/null"
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.stop
|
38
|
+
system "launchctl unload /Library/LaunchDaemons/com.frankleef.briskServer.plist > /dev/null"
|
39
|
+
end
|
40
|
+
end
|
data/stubs/daemon.plist
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
3
|
+
<plist version="1.0">
|
4
|
+
<dict>
|
5
|
+
<key>Label</key>
|
6
|
+
<string>com.frankleef.rubyValetServer</string>
|
7
|
+
<key>ProgramArguments</key>
|
8
|
+
<array>
|
9
|
+
<string>/usr/local/bin/thin</string>
|
10
|
+
<string>start</string>
|
11
|
+
<string>-R</string>
|
12
|
+
<string>SERVER_PATH</string>
|
13
|
+
<string>-p</string>
|
14
|
+
<string>80</string>
|
15
|
+
</array>
|
16
|
+
<key>RunAtLoad</key>
|
17
|
+
<true/>
|
18
|
+
<key>StandardOutput</key>
|
19
|
+
<string>/tmp/com.frankleef.briskServer.out</string>
|
20
|
+
<key>StandardErrorPath</key>
|
21
|
+
<string>/tmp/com.frankleef.briskServer.err</string>
|
22
|
+
</dict>
|
23
|
+
</plist>
|
metadata
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: brisk
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Frank
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-05-14 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.11'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.11'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: thor
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.19.1
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.19.1
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: colorize
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.7.7
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.7.7
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rack-proxy
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.5.17
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.5.17
|
97
|
+
description: A simple gem that maps all folder to a *.dev url
|
98
|
+
email:
|
99
|
+
- fr.levering@gmail.com
|
100
|
+
executables:
|
101
|
+
- brisk
|
102
|
+
extensions: []
|
103
|
+
extra_rdoc_files: []
|
104
|
+
files:
|
105
|
+
- bin/brisk
|
106
|
+
- lib/brisk.rb
|
107
|
+
- lib/brisk/configuration.rb
|
108
|
+
- lib/brisk/constants.rb
|
109
|
+
- lib/brisk/dnsmasq.rb
|
110
|
+
- lib/brisk/rerun.rb
|
111
|
+
- lib/brisk/server/brisk_request_helper.rb
|
112
|
+
- lib/brisk/server/config.ru
|
113
|
+
- lib/brisk/server/pid.rb
|
114
|
+
- lib/brisk/server/proxy.rb
|
115
|
+
- lib/brisk/server/server.rb
|
116
|
+
- lib/brisk/server/server_middleware.rb
|
117
|
+
- lib/brisk/server/site.rb
|
118
|
+
- lib/brisk/thin.rb
|
119
|
+
- lib/brisk/version.rb
|
120
|
+
- stubs/daemon.plist
|
121
|
+
homepage: https://www.github.com/frankieleef/brisk
|
122
|
+
licenses:
|
123
|
+
- MIT
|
124
|
+
metadata:
|
125
|
+
allowed_push_host: https://rubygems.org
|
126
|
+
post_install_message:
|
127
|
+
rdoc_options: []
|
128
|
+
require_paths:
|
129
|
+
- lib
|
130
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
131
|
+
requirements:
|
132
|
+
- - ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: '0'
|
135
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - ">="
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0'
|
140
|
+
requirements: []
|
141
|
+
rubyforge_project:
|
142
|
+
rubygems_version: 2.4.5
|
143
|
+
signing_key:
|
144
|
+
specification_version: 4
|
145
|
+
summary: Brisk
|
146
|
+
test_files: []
|