vagrant-listen-server 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|