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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e03240a14c0f4c941b9a061c058d91320e765937
4
- data.tar.gz: 3435b024b83438dc360c1939a6a4871a5a601af2
3
+ metadata.gz: 13c24e2f611edebc519b2427d99a7ce0ecd00582
4
+ data.tar.gz: ea1e2bb22acf892f780b206cfc23a3b0702c9658
5
5
  SHA512:
6
- metadata.gz: 33309382526388905cb0f448e1c9f200f5d2b0d8a376a66b3ac0938711fae6e1ffdfd080b8a460e83d4c4c322c1d01ce71503153c4ff4e699da7f48c4f58c62f
7
- data.tar.gz: 32abc280d0e053e1d702efd0d8a7caadeece0a2a2f6b46f15cbd9bf105e97722af55fea92260bdfe97dc96744a8c4f9377f514e2d7a4b85f594201f735c0bfdb
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
- # Config:
22
- `.vader.yml`:
23
- ```
24
- min_version: 123 # Minimum required vader version
25
- exec_container: app
26
- ```
27
-
46
+ ## Dependencies
28
47
 
29
- # NB: user gem install:
30
- ```
31
- gem install --user-install --bindir /usr/local/bin vader-0.0.1.gem
32
- ```
48
+ - boot2docker (docker, VirtualBox)
49
+ - docker-compose
50
+ - Pow
@@ -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
- case ARGV.shift
15
- when 'sync'
16
- Vader::Sync.new.run
17
- when 'setup'
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
@@ -1,11 +1,9 @@
1
1
  class Vader::Exec
2
2
 
3
3
  def run
4
- command = [
5
- "docker", "exec", "-ti", container,
6
- # Set TERM for colors 🌈
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)
@@ -0,0 +1,6 @@
1
+ class Vader::Setup
2
+
3
+ def run
4
+ exec File.expand_path('../../libexec/setup', File.dirname(__FILE__))
5
+ end
6
+ end
@@ -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
@@ -0,0 +1,6 @@
1
+ class Vader::Up
2
+
3
+ def run
4
+ exec File.expand_path('../../libexec/up', File.dirname(__FILE__))
5
+ end
6
+ end
@@ -1,3 +1,3 @@
1
1
  class Vader
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.2'
3
3
  end
@@ -40,8 +40,16 @@ then
40
40
  rm -f $PKG
41
41
  fi
42
42
 
43
- /usr/local/bin/boot2docker init > /dev/null
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
@@ -0,0 +1,13 @@
1
+ #!/bin/bash -e
2
+
3
+ B2D='/usr/local/bin/boot2docker'
4
+ DC='/usr/local/bin/docker-compose'
5
+
6
+ if [ ! "`$B2D status`" = "running" ]
7
+ then
8
+ $B2D up
9
+ fi
10
+
11
+ $DC up -d
12
+
13
+ exec $DC logs app
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.1
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-08 00:00:00.000000000 Z
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