vader 0.0.1 → 0.0.2
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.
- 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
|