vader 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +33 -15
- data/lib/vader.rb +18 -15
- data/lib/vader/docker_util.rb +48 -0
- data/lib/vader/exec.rb +3 -5
- data/lib/vader/setup.rb +6 -0
- data/lib/vader/sync.rb +6 -0
- data/lib/vader/up.rb +6 -0
- data/lib/vader/version.rb +1 -1
- data/libexec/setup +11 -1
- data/libexec/up +13 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 13c24e2f611edebc519b2427d99a7ce0ecd00582
|
4
|
+
data.tar.gz: ea1e2bb22acf892f780b206cfc23a3b0702c9658
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 005ff69d1d163a009f574868112d1bd6f2fc88ec19d1f009b13273030589a0a66329c21272cde8f53c6b2976d377b5fa808d00256e2295b201430889b9c715e8
|
7
|
+
data.tar.gz: c1fb44ee10abbd3f80974392e99dd23df4e886b5c994f9ed45a9af4e48232ae08c7e60b5b4935a67efb96b27e2196ca28434f2dfbe54f069bf8f5e1632d5ce40
|
data/README.md
CHANGED
@@ -1,32 +1,50 @@
|
|
1
1
|
# vader
|
2
|
-
Vader: Apple Docker Environment for Rails
|
2
|
+
Vader stands for *Vader: Apple Docker Environment for Rails*.
|
3
|
+
|
4
|
+
## Installation
|
5
|
+
|
6
|
+
Clone this repository and run `./install.sh`
|
7
|
+
|
8
|
+
## Usage
|
9
|
+
|
10
|
+
`vader up`
|
11
|
+
|
12
|
+
## Troubleshooting
|
13
|
+
|
14
|
+
Set `VADER_VERBOSE` to debug.
|
15
|
+
|
16
|
+
To debug syncing issues, reinstall with verbose logging enabled.
|
17
|
+
|
18
|
+
```
|
19
|
+
VADER_VERBOSE=1 ./install.sh
|
20
|
+
```
|
21
|
+
|
22
|
+
Then watch the logs with:
|
23
|
+
```
|
24
|
+
tail -f ~/Library/Logs/Vader/*.log
|
25
|
+
```
|
26
|
+
|
27
|
+
|
3
28
|
|
4
29
|
## Commands
|
5
30
|
|
6
31
|
Install vader: `curl get.vader.codes | bash -e`
|
7
32
|
|
8
|
-
`vader init` - configures current directory for vader
|
33
|
+
`vader init` - (TODO) configures current directory for vader
|
9
34
|
|
10
35
|
`vader sync` - starts rsync daemon, usually called by startup script
|
11
36
|
|
12
|
-
`vader sync-back` - called after `rails g`, `bundle`
|
37
|
+
`vader sync-back` - (TODO) called after `rails g`, `bundle`
|
13
38
|
|
14
39
|
`vader exec ...`
|
15
40
|
|
16
41
|
`vader up`
|
17
42
|
|
18
|
-
`vader -v`
|
43
|
+
`vader -v` (TODO)
|
19
44
|
`vader help`
|
20
45
|
|
21
|
-
|
22
|
-
`.vader.yml`:
|
23
|
-
```
|
24
|
-
min_version: 123 # Minimum required vader version
|
25
|
-
exec_container: app
|
26
|
-
```
|
27
|
-
|
46
|
+
## Dependencies
|
28
47
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
```
|
48
|
+
- boot2docker (docker, VirtualBox)
|
49
|
+
- docker-compose
|
50
|
+
- Pow
|
data/lib/vader.rb
CHANGED
@@ -5,26 +5,29 @@ require 'rb-fsevent'
|
|
5
5
|
|
6
6
|
class Vader
|
7
7
|
autoload :VERSION, 'vader/version'
|
8
|
-
autoload :Sync, 'vader/sync'
|
9
8
|
autoload :Exec, 'vader/exec'
|
9
|
+
autoload :Init, 'vader/init'
|
10
|
+
autoload :Setup, 'vader/setup'
|
11
|
+
autoload :Sync, 'vader/sync'
|
12
|
+
autoload :Up, 'vader/up'
|
13
|
+
|
14
|
+
autoload :DockerUtil, 'vader/docker_util'
|
15
|
+
|
16
|
+
COMMANDS = {
|
17
|
+
'exec' => -> { Vader::Exec },
|
18
|
+
'init' => -> { Vader::Init }, #TODO
|
19
|
+
'setup' => -> { Vader::Setup },
|
20
|
+
'sync' => -> { Vader::Sync },
|
21
|
+
'up' => -> { Vader::Up }
|
22
|
+
}
|
10
23
|
|
11
24
|
def run
|
12
25
|
check_version
|
13
26
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
setup_path = File.expand_path('../libexec/setup', File.dirname(__FILE__))
|
19
|
-
exec setup_path
|
20
|
-
when 'init'
|
21
|
-
# Writeme
|
22
|
-
puts 'Not implemented yet. This will configure the current directory as a vader app'
|
23
|
-
when 'exec'
|
24
|
-
Vader::Exec.new.run
|
25
|
-
when 'up'
|
26
|
-
dc = '/usr/local/bin/docker-compose'
|
27
|
-
exec "#{dc} up -d && #{dc} logs app"
|
27
|
+
command = ARGV.shift
|
28
|
+
|
29
|
+
if COMMANDS.key?(command)
|
30
|
+
COMMANDS[command].call.new.run
|
28
31
|
else
|
29
32
|
# TODO: Print help
|
30
33
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
class Vader::DockerUtil
|
2
|
+
require 'socket'
|
3
|
+
require 'uri'
|
4
|
+
|
5
|
+
class << self
|
6
|
+
def ensure_docker_configured
|
7
|
+
# To ensure docker client will work:
|
8
|
+
# Check that ENV['DOCKER'] is set and can connect to the DOCKER_HOST.
|
9
|
+
# Otherwise, check `boot2docker status`.
|
10
|
+
# If b2d isn't running, start it.
|
11
|
+
# Get boot2docker ip address and set DOCKER_* env vars.
|
12
|
+
return if docker_configured?
|
13
|
+
ensure_boot2docker_running
|
14
|
+
set_docker_env
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
def ensure_boot2docker_running
|
19
|
+
if `boot2docker status`.chomp != 'running'
|
20
|
+
puts "Starting boot2docker"
|
21
|
+
`boot2docker up 2>/dev/null >/dev/null`
|
22
|
+
unless $?.success?
|
23
|
+
raise "Failed to start boot2docker. Try running 'boot2docker up'"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def set_docker_env
|
29
|
+
puts "Setting boot2docker environment variables"
|
30
|
+
`boot2docker shellinit 2>/dev/null`.split("\n").each do |line|
|
31
|
+
match = line.match(/(DOCKER\w+)=(.+)\Z/)
|
32
|
+
next unless match
|
33
|
+
ENV[match[1]] = match[2]
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# Can we open a tcp socket to DOCKER_HOST?
|
38
|
+
def docker_configured?
|
39
|
+
return false unless ENV['DOCKER_HOST']
|
40
|
+
uri = URI.parse(ENV['DOCKER_HOST'])
|
41
|
+
TCPSocket.new(uri.host, uri.port).close
|
42
|
+
return true
|
43
|
+
rescue Errno::ECONNREFUSED
|
44
|
+
false
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
data/lib/vader/exec.rb
CHANGED
@@ -1,11 +1,9 @@
|
|
1
1
|
class Vader::Exec
|
2
2
|
|
3
3
|
def run
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
"env", "TERM=#{ENV['TERM']}"
|
8
|
-
] + ARGV
|
4
|
+
DockerUtil.ensure_docker_configured
|
5
|
+
|
6
|
+
command = [ "docker", "exec", "-ti", container ] + ARGV
|
9
7
|
|
10
8
|
puts "Executing #{command.inspect}" if ENV['VADER_VERBOSE']
|
11
9
|
exec(*command)
|
data/lib/vader/setup.rb
ADDED
data/lib/vader/sync.rb
CHANGED
@@ -63,6 +63,12 @@ class Vader::Sync
|
|
63
63
|
exit 1
|
64
64
|
end
|
65
65
|
|
66
|
+
# Do initial sync of each local watch path
|
67
|
+
local_watch_paths.each do |path|
|
68
|
+
puts "Doing initial sync of #{path}"
|
69
|
+
sync(path)
|
70
|
+
end
|
71
|
+
|
66
72
|
# Watch for fs changes
|
67
73
|
puts "Watching #{local_watch_paths.inspect} + #{CONFIG_DIR}" if verbose?
|
68
74
|
fsevent = FSEvent.new
|
data/lib/vader/up.rb
ADDED
data/lib/vader/version.rb
CHANGED
data/libexec/setup
CHANGED
@@ -40,8 +40,16 @@ then
|
|
40
40
|
rm -f $PKG
|
41
41
|
fi
|
42
42
|
|
43
|
-
|
43
|
+
# Increase b2d VM memory to 4GB if the host has 8GB+
|
44
|
+
if [ `sysctl hw.memsize | cut -d' ' -f2` -ge 8589934592 ]
|
45
|
+
then
|
46
|
+
b2d_memory=4096
|
47
|
+
else
|
48
|
+
b2d_memory=2048
|
49
|
+
fi
|
50
|
+
/usr/local/bin/boot2docker init -m $b2d_memory > /dev/null
|
44
51
|
|
52
|
+
##
|
45
53
|
# Install docker-compose
|
46
54
|
if [ ! -x /usr/local/bin/docker-compose ]
|
47
55
|
then
|
@@ -50,6 +58,8 @@ then
|
|
50
58
|
chmod +x /usr/local/bin/docker-compose
|
51
59
|
fi
|
52
60
|
|
61
|
+
##
|
62
|
+
# Configure vader sync agent
|
53
63
|
mkdir -p ~/Library/Logs/Vader
|
54
64
|
/usr/bin/erb < `dirname $0`/../src/launchctl.plist.erb > "$HOME/Library/LaunchAgents/vader.sync.plist"
|
55
65
|
launchctl load -Fw "$HOME/Library/LaunchAgents/vader.sync.plist" 2>/dev/null
|
data/libexec/up
ADDED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Suggs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rb-fsevent
|
@@ -61,8 +61,12 @@ extra_rdoc_files: []
|
|
61
61
|
files:
|
62
62
|
- bin/vader
|
63
63
|
- libexec/setup
|
64
|
+
- libexec/up
|
65
|
+
- lib/vader/docker_util.rb
|
64
66
|
- lib/vader/exec.rb
|
67
|
+
- lib/vader/setup.rb
|
65
68
|
- lib/vader/sync.rb
|
69
|
+
- lib/vader/up.rb
|
66
70
|
- lib/vader/version.rb
|
67
71
|
- lib/vader.rb
|
68
72
|
- src/launchctl.plist.erb
|