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 +4 -4
- data/Gemfile +0 -3
- data/README.md +17 -1
- data/lib/vagrant-listen-server/action.rb +25 -4
- data/lib/vagrant-listen-server/plugin.rb +9 -0
- data/lib/vagrant-listen-server/version.rb +1 -1
- data/vagrant-listen-server.gemspec +8 -2
- metadata +62 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 54a4ce449ded50fcc6e74eee8185c87f505f52c6
|
4
|
+
data.tar.gz: ccdb1dc74ba61cf0b73020934b795988a936ced6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d34b120570d800c0ef54f7ff55dafcf55321e83ab16ab991a36d6e8b0e54aeb7f6724f0e7dd6109684d065055ccb8ac8958fa3961d92395005f0fe72e13bd34d
|
7
|
+
data.tar.gz: d82c5bee25552a3c5f5d7285a035966c47bc41bbd3a02d767f35735842e1f18545369e7f78a7bf3df9bfead96d990ab3105e98f075d21d96652692380c25f0da
|
data/Gemfile
CHANGED
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
|
-
* [
|
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
|
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
|
-
|
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')
|
@@ -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.
|
21
|
-
spec.
|
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.
|
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-
|
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
|