vagrant-listen-server 0.0.3 → 0.0.4

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: d6bc4b1dc74d14a2265d218cfd30d1a65a6d21c3
4
- data.tar.gz: 5c2910bca19794cb808df5ba3ec21be5ced9efad
3
+ metadata.gz: 54a4ce449ded50fcc6e74eee8185c87f505f52c6
4
+ data.tar.gz: ccdb1dc74ba61cf0b73020934b795988a936ced6
5
5
  SHA512:
6
- metadata.gz: 66746b24cd27bf4d4a003f6dab284e777266c0714738e9ae3a33ec17ff28cbe8f6c97610b36bdcdca517c52aa8b9cbae0af905e249f62ea8bc219cb9a6988740
7
- data.tar.gz: 54fb1ba72bba130fce0c253e15e47a78f903d3bc38b0fbde36a92f5e1b231c7e02b8fae7c792bc4f6e625d9ebdd8e8f082a1702f0a6056b1cfba5122b4f4921e
6
+ metadata.gz: d34b120570d800c0ef54f7ff55dafcf55321e83ab16ab991a36d6e8b0e54aeb7f6724f0e7dd6109684d065055ccb8ac8958fa3961d92395005f0fe72e13bd34d
7
+ data.tar.gz: d82c5bee25552a3c5f5d7285a035966c47bc41bbd3a02d767f35735842e1f18545369e7f78a7bf3df9bfead96d990ab3105e98f075d21d96652692380c25f0da
data/Gemfile CHANGED
@@ -6,7 +6,4 @@ end
6
6
 
7
7
  group :plugins do
8
8
  gem 'vagrant-listen-server', path: '.'
9
- gem 'listen'
10
- gem 'celluloid'
11
- gem 'celluloid-io'
12
9
  end
data/README.md CHANGED
@@ -64,7 +64,7 @@ Then in your Vagrantfile:
64
64
 
65
65
  Filesystem is shared using rsync-auto protocol instead of vboxsf
66
66
 
67
- * [rsync-mirror](https://github.com/ingenerator/vagrant-mirror/)
67
+ * [vagrant-mirror](https://github.com/ingenerator/vagrant-mirror/)
68
68
 
69
69
  Hasn't been updated to work with vagrant's new plugin system.
70
70
 
@@ -90,3 +90,19 @@ Listen maybe is a bit of a resource hog:
90
90
 
91
91
  There might be some better, native implementations that make this faster. e.g.
92
92
  * https://fsnotify.org/
93
+
94
+ Gemspecs don't allow platform specific requirements, so we have to include all
95
+ the gems for filesystem events. It looks like the only great solution to this
96
+ is to switch to a separate gem for each platform...
97
+ * http://stackoverflow.com/questions/8940271/build-a-ruby-gem-and-conditionally-specify-dependencies
98
+
99
+ You can automate the install pretty easily though:
100
+ * http://stackoverflow.com/questions/4596606/rubygems-how-do-i-add-platform-specific-dependency/10249133#10249133
101
+ * http://en.wikibooks.org/wiki/Ruby_Programming/RubyGems#How_to_install_different_versions_of_gems_depending_on_which_version_of_ruby_the_installee_is_using
102
+
103
+ Fork in a way that will work with windows. Childprocess gem is included with
104
+ vagrant by default - see if it will fit the bill.
105
+ * https://github.com/jarib/childprocess
106
+
107
+ There's also a "subprocess" module under vagrant util
108
+ * https://github.com/mitchellh/vagrant/blob/master/lib/vagrant/util/subprocess.rb
@@ -1,6 +1,18 @@
1
1
  require 'celluloid'
2
2
  require 'listen'
3
3
 
4
+ # No ActiveSupport in vagrant
5
+ def array_wrap object
6
+ if object.nil?
7
+ []
8
+ elsif object.respond_to?(:to_ary)
9
+ object.to_ary || [object]
10
+ else
11
+ [object]
12
+ end
13
+ end
14
+
15
+
4
16
  module VagrantPlugins
5
17
  module ListenServer
6
18
  module Action
@@ -15,7 +27,7 @@ module VagrantPlugins
15
27
  @machine = env[:machine]
16
28
 
17
29
  config = @machine.config.listen_server
18
- folders = config.folders
30
+ folders = array_wrap config.folders
19
31
  host = "#{config.ip}:#{config.port}"
20
32
 
21
33
  @ui.info "Starting listen server - #{host}"
@@ -28,7 +40,7 @@ module VagrantPlugins
28
40
  @ui.info 'Warning - listen server already running'
29
41
  return @app.call(env)
30
42
  rescue Errno::ESRCH
31
- @ui.info 'Warning - stale PID file'
43
+ @ui.info "Warning - stale PID: #{pid}"
32
44
  end
33
45
  end
34
46
 
@@ -40,7 +52,7 @@ module VagrantPlugins
40
52
  # machine to test it out on...
41
53
  pid = fork do
42
54
  $0 = "vagrant-listen-server - #{@machine.name}"
43
- listener = Listen.to folders, forward_to: host do |modified, added, removed|
55
+ listener = Listen.to *folders, forward_to: host do |modified, added, removed|
44
56
  File.open('/tmp/listen.txt', 'a+') do |f|
45
57
  f.puts 'listen fired', modified, added, removed
46
58
  end
@@ -52,7 +64,16 @@ module VagrantPlugins
52
64
  @ui.info "Can't start server - Port in use"
53
65
  exit
54
66
  end
55
- sleep
67
+
68
+ # Uhh... this needs work. Vagrant steals the interrupt from us and
69
+ # there's no way to get it back
70
+ # * https://github.com/mitchellh/vagrant/blob/master/lib/vagrant/action/runner.rb#L49
71
+ # Is there a way to register more callbacks to the busy block?
72
+ # * https://github.com/mitchellh/vagrant/blob/master/lib/vagrant/util/busy.rb
73
+ while not env[:interrupted]
74
+ sleep 1
75
+ end
76
+ @ui.info "Listen sleep finished"
56
77
  end
57
78
 
58
79
  Process.detach pid
@@ -1,5 +1,14 @@
1
1
  require_relative 'action'
2
2
 
3
+ require 'rbconfig'
4
+ os = RbConfig::CONFIG['target_os']
5
+
6
+ require 'rb-fsevent' if os =~ /darwin/i
7
+ require 'rb-kqueue' if os =~ /bsd|dragonfly/i
8
+ require 'rb-inotify' if os =~ /linux/i
9
+ require 'wdm' if Gem.win_platform?
10
+
11
+
3
12
  module VagrantPlugins
4
13
  module ListenServer
5
14
  class Plugin < Vagrant.plugin('2')
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module ListenServer
3
- VERSION = '0.0.3'
3
+ VERSION = '0.0.4'
4
4
  end
5
5
  end
@@ -17,8 +17,14 @@ Gem::Specification.new do |spec|
17
17
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
18
  spec.require_paths = ['lib']
19
19
 
20
- spec.add_runtime_dependency 'celluloid', '~> 0.16'
21
- spec.add_runtime_dependency 'celluloid-io', '~> 0.16', '>= 0.16.2'
20
+ spec.add_dependency 'celluloid', '~> 0.16'
21
+ spec.add_dependency 'celluloid-io', '~> 0.16', '>= 0.16.2'
22
+
23
+ spec.add_dependency 'rb-inotify', '~> 0.9', '>= 0.9.5'
24
+ spec.add_dependency 'rb-fsevent', '~> 0.9', '>= 0.9.4'
25
+ spec.add_dependency 'rb-kqueue', '~> 0.2', '>= 0.2.3'
26
+ # wdm is already included in the vagrant gem spec.
27
+ # spec.add_runtime_dependency 'wdm', '~> 0.10', '>= 0.10.0'
22
28
 
23
29
  spec.add_development_dependency 'bundler', '~> 1.7'
24
30
  spec.add_development_dependency 'rake', '~> 10.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-listen-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Kelso
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-07 00:00:00.000000000 Z
11
+ date: 2015-04-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: celluloid
@@ -44,6 +44,66 @@ dependencies:
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
46
  version: 0.16.2
47
+ - !ruby/object:Gem::Dependency
48
+ name: rb-inotify
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '0.9'
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: 0.9.5
57
+ type: :runtime
58
+ prerelease: false
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '0.9'
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: 0.9.5
67
+ - !ruby/object:Gem::Dependency
68
+ name: rb-fsevent
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '0.9'
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: 0.9.4
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '0.9'
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: 0.9.4
87
+ - !ruby/object:Gem::Dependency
88
+ name: rb-kqueue
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - "~>"
92
+ - !ruby/object:Gem::Version
93
+ version: '0.2'
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: 0.2.3
97
+ type: :runtime
98
+ prerelease: false
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.2'
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: 0.2.3
47
107
  - !ruby/object:Gem::Dependency
48
108
  name: bundler
49
109
  requirement: !ruby/object:Gem::Requirement