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 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