vagrant-parallels 1.4.2 → 1.4.3
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/README.md +7 -8
- data/Rakefile +2 -2
- data/lib/vagrant-parallels.rb +7 -44
- data/lib/vagrant-parallels/action.rb +45 -45
- data/lib/vagrant-parallels/action/boot.rb +1 -2
- data/lib/vagrant-parallels/action/clear_network_interfaces.rb +1 -1
- data/lib/vagrant-parallels/action/customize.rb +1 -1
- data/lib/vagrant-parallels/action/destroy.rb +1 -1
- data/lib/vagrant-parallels/action/destroy_unused_network_interfaces.rb +2 -2
- data/lib/vagrant-parallels/action/forced_halt.rb +1 -1
- data/lib/vagrant-parallels/action/forward_ports.rb +2 -2
- data/lib/vagrant-parallels/action/handle_guest_tools.rb +9 -10
- data/lib/vagrant-parallels/action/import.rb +36 -24
- data/lib/vagrant-parallels/action/network.rb +37 -37
- data/lib/vagrant-parallels/action/package.rb +3 -3
- data/lib/vagrant-parallels/action/package_config_files.rb +3 -2
- data/lib/vagrant-parallels/action/prepare_nfs_settings.rb +2 -2
- data/lib/vagrant-parallels/action/resume.rb +1 -1
- data/lib/vagrant-parallels/action/sane_defaults.rb +0 -1
- data/lib/vagrant-parallels/action/set_name.rb +7 -7
- data/lib/vagrant-parallels/action/setup_package_files.rb +6 -6
- data/lib/vagrant-parallels/action/suspend.rb +1 -1
- data/lib/vagrant-parallels/config.rb +9 -11
- data/lib/vagrant-parallels/driver/meta.rb +1 -1
- data/lib/vagrant-parallels/driver/pd_10.rb +1 -1
- data/lib/vagrant-parallels/driver/pd_11.rb +1 -1
- data/lib/vagrant-parallels/driver/pd_8.rb +19 -19
- data/lib/vagrant-parallels/driver/pd_9.rb +1 -1
- data/lib/vagrant-parallels/errors.rb +2 -2
- data/lib/vagrant-parallels/guest_cap/linux/install_parallels_tools.rb +5 -5
- data/lib/vagrant-parallels/guest_cap/linux/mount_parallels_shared_folder.rb +3 -3
- data/lib/vagrant-parallels/model/forwarded_port.rb +1 -1
- data/lib/vagrant-parallels/plugin.rb +65 -30
- data/lib/vagrant-parallels/provider.rb +8 -8
- data/lib/vagrant-parallels/synced_folder.rb +6 -6
- data/lib/vagrant-parallels/util/compile_forwarded_ports.rb +1 -1
- data/lib/vagrant-parallels/version.rb +1 -1
- data/tasks/acceptance.rake +4 -4
- data/tasks/test.rake +1 -1
- data/test/acceptance/base.rb +2 -2
- data/test/acceptance/provider/linked_clone_spec.rb +2 -2
- data/test/acceptance/shared/context_parallels.rb +1 -1
- data/test/acceptance/skeletons/linked_clone/Vagrantfile +3 -3
- data/test/unit/base.rb +6 -6
- data/test/unit/config_test.rb +22 -22
- data/test/unit/driver/pd_10_test.rb +7 -7
- data/test/unit/driver/pd_8_test.rb +4 -4
- data/test/unit/driver/pd_9_test.rb +6 -6
- data/test/unit/support/shared/pd_driver_examples.rb +97 -97
- data/test/unit/synced_folder_test.rb +11 -11
- data/vagrant-parallels.gemspec +17 -19
- metadata +2 -32
- data/config/i18n-tasks.yml.erb +0 -18
- data/test/unit/locales/locales_test.rb +0 -14
@@ -5,13 +5,13 @@ module VagrantPlugins
|
|
5
5
|
def initialize(app, env)
|
6
6
|
@app = app
|
7
7
|
|
8
|
-
env[
|
9
|
-
env[
|
8
|
+
env['package.include'] ||= []
|
9
|
+
env['package.vagrantfile'] ||= nil
|
10
10
|
end
|
11
11
|
|
12
12
|
def call(env)
|
13
13
|
files = {}
|
14
|
-
env[
|
14
|
+
env['package.include'].each do |file|
|
15
15
|
source = Pathname.new(file)
|
16
16
|
|
17
17
|
# If the source is relative then we add the file as-is to the include
|
@@ -28,9 +28,9 @@ module VagrantPlugins
|
|
28
28
|
files[file] = dest
|
29
29
|
end
|
30
30
|
|
31
|
-
if env[
|
31
|
+
if env['package.vagrantfile']
|
32
32
|
# Vagrantfiles are treated special and mapped to a specific file
|
33
|
-
files[env[
|
33
|
+
files[env['package.vagrantfile']] = '_Vagrantfile'
|
34
34
|
end
|
35
35
|
|
36
36
|
# Verify the mapping
|
@@ -40,7 +40,7 @@ module VagrantPlugins
|
|
40
40
|
end
|
41
41
|
|
42
42
|
# Save the mapping
|
43
|
-
env[
|
43
|
+
env['package.files'] = files
|
44
44
|
|
45
45
|
@app.call(env)
|
46
46
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module VagrantPlugins
|
2
2
|
module Parallels
|
3
|
-
class Config < Vagrant.plugin(
|
3
|
+
class Config < Vagrant.plugin('2', :config)
|
4
4
|
attr_accessor :check_guest_tools
|
5
5
|
attr_reader :customizations
|
6
6
|
attr_accessor :destroy_unused_network_interfaces
|
@@ -34,7 +34,7 @@ module VagrantPlugins
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def customize(*command)
|
37
|
-
event = command.first.is_a?(String) ? command.shift :
|
37
|
+
event = command.first.is_a?(String) ? command.shift : 'pre-boot'
|
38
38
|
command = command[0]
|
39
39
|
@customizations << [event, command]
|
40
40
|
end
|
@@ -45,11 +45,11 @@ module VagrantPlugins
|
|
45
45
|
|
46
46
|
# @param size [Integer, String] the memory size in MB
|
47
47
|
def memory=(size)
|
48
|
-
customize(
|
48
|
+
customize('pre-boot', ['set', :id, '--memsize', size.to_s])
|
49
49
|
end
|
50
50
|
|
51
51
|
def cpus=(count)
|
52
|
-
customize(
|
52
|
+
customize('pre-boot', ['set', :id, '--cpus', count.to_i])
|
53
53
|
end
|
54
54
|
|
55
55
|
def regen_box_uuid=(value)
|
@@ -97,21 +97,19 @@ module VagrantPlugins
|
|
97
97
|
valid_events = ['pre-import', 'post-import', 'pre-boot', 'post-boot', 'post-comm']
|
98
98
|
@customizations.each do |event, _|
|
99
99
|
if !valid_events.include?(event)
|
100
|
-
errors << I18n.t(
|
100
|
+
errors << I18n.t('vagrant_parallels.config.invalid_event',
|
101
101
|
event: event.to_s,
|
102
|
-
valid_events: valid_events.join(
|
102
|
+
valid_events: valid_events.join(', '))
|
103
103
|
end
|
104
104
|
end
|
105
105
|
@customizations.each do |event, command|
|
106
|
-
if event ==
|
107
|
-
errors << I18n.t(
|
106
|
+
if event == 'pre-import' && command.index(:id)
|
107
|
+
errors << I18n.t('vagrant_parallels.config.id_in_pre_import')
|
108
108
|
end
|
109
109
|
end
|
110
110
|
|
111
|
-
{
|
112
|
-
|
111
|
+
{ 'Parallels Provider' => errors }
|
113
112
|
end
|
114
|
-
|
115
113
|
end
|
116
114
|
end
|
117
115
|
end
|
@@ -4,7 +4,7 @@ require 'securerandom'
|
|
4
4
|
|
5
5
|
require 'vagrant/util/platform'
|
6
6
|
|
7
|
-
|
7
|
+
require_relative 'base'
|
8
8
|
|
9
9
|
module VagrantPlugins
|
10
10
|
module Parallels
|
@@ -23,7 +23,7 @@ module VagrantPlugins
|
|
23
23
|
# 'Shared'(vnic0) and 'Host-Only'(vnic1) are default in Parallels Desktop
|
24
24
|
# They should not be deleted anyway.
|
25
25
|
networks.keep_if do |net|
|
26
|
-
net['Type'] ==
|
26
|
+
net['Type'] == 'host-only' &&
|
27
27
|
net['Bound To'].match(/^(?>vnic|Parallels Host-Only #)(\d+)$/)[1].to_i >= 2
|
28
28
|
end
|
29
29
|
|
@@ -58,9 +58,9 @@ module VagrantPlugins
|
|
58
58
|
adapters.each do |adapter|
|
59
59
|
args = []
|
60
60
|
if existing_adapters.include? "net#{adapter[:adapter]}"
|
61
|
-
args.concat([
|
61
|
+
args.concat(['--device-set',"net#{adapter[:adapter]}", '--enable'])
|
62
62
|
else
|
63
|
-
args.concat([
|
63
|
+
args.concat(['--device-add', 'net'])
|
64
64
|
end
|
65
65
|
|
66
66
|
if adapter[:type] == :hostonly
|
@@ -73,28 +73,28 @@ module VagrantPlugins
|
|
73
73
|
# The only difference is the destination interface:
|
74
74
|
# - in host-only (private) network it will be bridged to the 'vnicX' device
|
75
75
|
# - in real bridge (public) network it will be bridged to the assigned device
|
76
|
-
args.concat([
|
76
|
+
args.concat(['--type', 'bridged', '--iface', net_info['Bound To']])
|
77
77
|
elsif adapter[:type] == :bridged
|
78
|
-
args.concat([
|
78
|
+
args.concat(['--type', 'bridged', '--iface', adapter[:bridge]])
|
79
79
|
elsif adapter[:type] == :shared
|
80
|
-
args.concat([
|
80
|
+
args.concat(['--type', 'shared'])
|
81
81
|
end
|
82
82
|
|
83
83
|
if adapter[:mac_address]
|
84
|
-
args.concat([
|
84
|
+
args.concat(['--mac', adapter[:mac_address]])
|
85
85
|
end
|
86
86
|
|
87
87
|
if adapter[:nic_type]
|
88
|
-
args.concat([
|
88
|
+
args.concat(['--adapter-type', adapter[:nic_type].to_s])
|
89
89
|
end
|
90
90
|
|
91
|
-
execute_prlctl(
|
91
|
+
execute_prlctl('set', @uuid, *args)
|
92
92
|
end
|
93
93
|
end
|
94
94
|
|
95
95
|
def read_host_only_interfaces
|
96
96
|
net_list = read_virtual_networks
|
97
|
-
net_list.keep_if { |net| net['Type'] ==
|
97
|
+
net_list.keep_if { |net| net['Type'] == 'host-only' }
|
98
98
|
|
99
99
|
hostonly_ifaces = []
|
100
100
|
net_list.each do |iface|
|
@@ -105,7 +105,7 @@ module VagrantPlugins
|
|
105
105
|
info[:ip] = net_info['Parallels adapter']['IP address']
|
106
106
|
info[:netmask] = net_info['Parallels adapter']['Subnet mask']
|
107
107
|
# Such interfaces are always in 'Up'
|
108
|
-
info[:status] =
|
108
|
+
info[:status] = 'Up'
|
109
109
|
|
110
110
|
# There may be a fake DHCPv4 parameters
|
111
111
|
# We can trust them only if adapter IP and DHCP IP are in the same subnet
|
@@ -128,23 +128,23 @@ module VagrantPlugins
|
|
128
128
|
|
129
129
|
# Get enabled VM's network interfaces
|
130
130
|
ifaces = read_settings.fetch('Hardware', {}).keep_if do |dev, params|
|
131
|
-
dev.start_with?('net') and params.fetch(
|
131
|
+
dev.start_with?('net') and params.fetch('enabled', true)
|
132
132
|
end
|
133
133
|
ifaces.each do |name, params|
|
134
134
|
adapter = name.match(/^net(\d+)$/)[1].to_i
|
135
135
|
nics[adapter] ||= {}
|
136
136
|
|
137
|
-
if params['type'] ==
|
137
|
+
if params['type'] == 'shared'
|
138
138
|
nics[adapter][:type] = :shared
|
139
|
-
elsif params['type'] ==
|
139
|
+
elsif params['type'] == 'host'
|
140
140
|
# It is PD internal host-only network and it is bounded to 'vnic1'
|
141
141
|
nics[adapter][:type] = :hostonly
|
142
|
-
nics[adapter][:hostonly] =
|
143
|
-
elsif params['type'] ==
|
142
|
+
nics[adapter][:hostonly] = 'vnic1'
|
143
|
+
elsif params['type'] == 'bridged' and params.fetch('iface','').start_with?('vnic')
|
144
144
|
# Bridged to the 'vnicXX'? Then it is a host-only, actually.
|
145
145
|
nics[adapter][:type] = :hostonly
|
146
146
|
nics[adapter][:hostonly] = params.fetch('iface','')
|
147
|
-
elsif params['type'] ==
|
147
|
+
elsif params['type'] == 'bridged'
|
148
148
|
nics[adapter][:type] = :bridged
|
149
149
|
nics[adapter][:bridge] = params.fetch('iface','')
|
150
150
|
end
|
@@ -160,7 +160,7 @@ module VagrantPlugins
|
|
160
160
|
name: net_info['Bound To'],
|
161
161
|
ip: net_info['Parallels adapter']['IP address'],
|
162
162
|
netmask: net_info['Parallels adapter']['Subnet mask'],
|
163
|
-
status:
|
163
|
+
status: 'Up'
|
164
164
|
}
|
165
165
|
|
166
166
|
if net_info.key?('DHCPv4 server')
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require
|
1
|
+
require 'vagrant'
|
2
2
|
|
3
3
|
module VagrantPlugins
|
4
4
|
module Parallels
|
5
5
|
module Errors
|
6
6
|
class VagrantParallelsError < Vagrant::Errors::VagrantError
|
7
|
-
error_namespace(
|
7
|
+
error_namespace('vagrant_parallels.errors')
|
8
8
|
end
|
9
9
|
|
10
10
|
class DhcpLeasesNotAccessible < VagrantParallelsError
|
@@ -7,14 +7,14 @@ module VagrantPlugins
|
|
7
7
|
if ptiagent_usable?(machine)
|
8
8
|
# Argument '--info' means that Parallels Tools version will be
|
9
9
|
# checked before the installing.
|
10
|
-
machine.communicate.sudo(
|
10
|
+
machine.communicate.sudo('ptiagent-cmd --info')
|
11
11
|
else
|
12
12
|
machine.communicate.tap do |comm|
|
13
13
|
tools_iso_path = File.expand_path(
|
14
|
-
machine.provider.driver.read_guest_tools_iso_path(
|
14
|
+
machine.provider.driver.read_guest_tools_iso_path('linux'),
|
15
15
|
machine.env.root_path
|
16
16
|
)
|
17
|
-
remote_file =
|
17
|
+
remote_file = '/tmp/prl-tools-lin.iso'
|
18
18
|
mount_point = "/media/prl-tools-lin_#{rand(100000)}/"
|
19
19
|
|
20
20
|
comm.upload(tools_iso_path, remote_file)
|
@@ -44,8 +44,8 @@ module VagrantPlugins
|
|
44
44
|
# 'ptiagent-cmd' binary should be available on the guest
|
45
45
|
|
46
46
|
machine.provider_name == :parallels &&
|
47
|
-
Gem::Version.new(machine.provider.driver.version) >= Gem::Version.new(
|
48
|
-
machine.communicate.test(
|
47
|
+
Gem::Version.new(machine.provider.driver.version) >= Gem::Version.new('9') &&
|
48
|
+
machine.communicate.test('which ptiagent-cmd', :sudo => true)
|
49
49
|
end
|
50
50
|
end
|
51
51
|
end
|
@@ -36,12 +36,12 @@ module VagrantPlugins
|
|
36
36
|
|
37
37
|
# First mount command uses getent to get the group
|
38
38
|
mount_options = "-o uid=#{mount_uid},gid=#{mount_gid}"
|
39
|
-
mount_options += ",#{options[:mount_options].join(
|
39
|
+
mount_options += ",#{options[:mount_options].join(',')}" if options[:mount_options]
|
40
40
|
mount_commands << "mount -t prl_fs #{mount_options} #{name} #{expanded_guest_path}"
|
41
41
|
|
42
42
|
# Second mount command uses the old style `id -g`
|
43
43
|
mount_options = "-o uid=#{mount_uid},gid=#{mount_gid_old}"
|
44
|
-
mount_options += ",#{options[:mount_options].join(
|
44
|
+
mount_options += ",#{options[:mount_options].join(',')}" if options[:mount_options]
|
45
45
|
mount_commands << "mount -t prl_fs #{mount_options} #{name} #{expanded_guest_path}"
|
46
46
|
|
47
47
|
# Clear prior symlink if exists
|
@@ -80,7 +80,7 @@ module VagrantPlugins
|
|
80
80
|
end
|
81
81
|
|
82
82
|
# Emit an upstart event if we can
|
83
|
-
if machine.communicate.test(
|
83
|
+
if machine.communicate.test('test -x /sbin/initctl')
|
84
84
|
machine.communicate.sudo(
|
85
85
|
"/sbin/initctl emit --no-wait vagrant-mounted MOUNTPOINT=#{expanded_guest_path}")
|
86
86
|
end
|
@@ -37,7 +37,7 @@ module VagrantPlugins
|
|
37
37
|
options ||= {}
|
38
38
|
@auto_correct = false
|
39
39
|
@auto_correct = options[:auto_correct] if options.has_key?(:auto_correct)
|
40
|
-
@protocol = options[:protocol] ||
|
40
|
+
@protocol = options[:protocol] || 'tcp'
|
41
41
|
end
|
42
42
|
|
43
43
|
# This corrects the host port and changes it to the given new port.
|
@@ -1,105 +1,140 @@
|
|
1
1
|
begin
|
2
|
-
require
|
2
|
+
require 'vagrant'
|
3
3
|
rescue LoadError
|
4
|
-
raise
|
4
|
+
raise 'The Vagrant Parallels plugin must be run within Vagrant.'
|
5
5
|
end
|
6
6
|
|
7
7
|
# This is a sanity check to make sure no one is attempting to install
|
8
8
|
# this into an early Vagrant version.
|
9
|
-
if Vagrant::VERSION <
|
10
|
-
raise
|
9
|
+
if Vagrant::VERSION < '1.5.0'
|
10
|
+
raise 'The Vagrant Parallels plugin is only compatible with Vagrant 1.5+'
|
11
11
|
end
|
12
12
|
|
13
13
|
module VagrantPlugins
|
14
14
|
module Parallels
|
15
|
-
|
16
|
-
|
17
|
-
name "vagrant-parallels"
|
15
|
+
class Plugin < Vagrant.plugin('2')
|
16
|
+
name 'vagrant-parallels'
|
18
17
|
description <<-EOF
|
19
18
|
The Parallels provider allows Vagrant to manage and control
|
20
|
-
Parallels
|
19
|
+
Parallels Desktop virtual machines.
|
21
20
|
EOF
|
22
21
|
|
23
22
|
provider(:parallels, parallel: true, priority: 7) do
|
24
|
-
|
23
|
+
# Setup logging and i18n
|
24
|
+
setup_logging
|
25
|
+
setup_i18n
|
26
|
+
|
27
|
+
require_relative 'provider'
|
25
28
|
Provider
|
26
29
|
end
|
27
30
|
|
28
31
|
config(:parallels, :provider) do
|
29
|
-
|
32
|
+
require_relative 'config'
|
30
33
|
Config
|
31
34
|
end
|
32
35
|
|
33
36
|
guest_capability(:darwin, :mount_parallels_shared_folder) do
|
34
|
-
require_relative
|
37
|
+
require_relative 'guest_cap/darwin/mount_parallels_shared_folder'
|
35
38
|
GuestDarwinCap::MountParallelsSharedFolder
|
36
39
|
end
|
37
40
|
|
38
41
|
guest_capability(:darwin, :unmount_parallels_shared_folder) do
|
39
|
-
require_relative
|
42
|
+
require_relative 'guest_cap/darwin/mount_parallels_shared_folder'
|
40
43
|
GuestDarwinCap::MountParallelsSharedFolder
|
41
44
|
end
|
42
45
|
|
43
46
|
guest_capability(:linux, :mount_parallels_shared_folder) do
|
44
|
-
require_relative
|
47
|
+
require_relative 'guest_cap/linux/mount_parallels_shared_folder'
|
45
48
|
GuestLinuxCap::MountParallelsSharedFolder
|
46
49
|
end
|
47
50
|
|
48
51
|
guest_capability(:linux, :unmount_parallels_shared_folder) do
|
49
|
-
require_relative
|
52
|
+
require_relative 'guest_cap/linux/mount_parallels_shared_folder'
|
50
53
|
GuestLinuxCap::MountParallelsSharedFolder
|
51
54
|
end
|
52
55
|
|
53
56
|
guest_capability(:linux, :prepare_psf_services) do
|
54
|
-
require_relative
|
57
|
+
require_relative 'guest_cap/linux/mount_parallels_shared_folder'
|
55
58
|
GuestLinuxCap::MountParallelsSharedFolder
|
56
59
|
end
|
57
60
|
|
58
61
|
guest_capability(:linux, :install_parallels_tools) do
|
59
|
-
require_relative
|
62
|
+
require_relative 'guest_cap/linux/install_parallels_tools'
|
60
63
|
GuestLinuxCap::InstallParallelsTools
|
61
64
|
end
|
62
65
|
|
63
66
|
provider_capability(:parallels, :public_address) do
|
64
|
-
require_relative
|
67
|
+
require_relative 'cap/public_address'
|
65
68
|
Cap::PublicAddress
|
66
69
|
end
|
67
70
|
|
68
71
|
provider_capability(:parallels, :host_address) do
|
69
|
-
require_relative
|
72
|
+
require_relative 'cap/host_address'
|
70
73
|
Cap::HostAddress
|
71
74
|
end
|
72
75
|
|
73
76
|
provider_capability(:parallels, :nic_mac_addresses) do
|
74
|
-
require_relative
|
77
|
+
require_relative 'cap/nic_mac_addresses'
|
75
78
|
Cap::NicMacAddresses
|
76
79
|
end
|
77
80
|
|
78
81
|
synced_folder(:parallels) do
|
79
|
-
|
82
|
+
require_relative 'synced_folder'
|
80
83
|
SyncedFolder
|
81
84
|
end
|
82
85
|
|
83
|
-
|
86
|
+
# This initializes the internationalization strings.
|
87
|
+
def self.setup_i18n
|
88
|
+
I18n.load_path << File.expand_path('locales/en.yml', Parallels.source_root)
|
89
|
+
I18n.reload!
|
90
|
+
end
|
84
91
|
|
85
|
-
|
92
|
+
# This sets up our log level to be whatever VAGRANT_LOG is.
|
93
|
+
def self.setup_logging
|
94
|
+
require 'log4r'
|
95
|
+
|
96
|
+
level = nil
|
97
|
+
begin
|
98
|
+
level = Log4r.const_get(ENV['VAGRANT_LOG'].upcase)
|
99
|
+
rescue NameError
|
100
|
+
# This means that the logging constant wasn't found,
|
101
|
+
# which is fine. We just keep `level` as `nil`. But
|
102
|
+
# we tell the user.
|
103
|
+
level = nil
|
104
|
+
end
|
105
|
+
|
106
|
+
# Some constants, such as "true" resolve to booleans, so the
|
107
|
+
# above error checking doesn't catch it. This will check to make
|
108
|
+
# sure that the log level is an integer, as Log4r requires.
|
109
|
+
level = nil if !level.is_a?(Integer)
|
110
|
+
|
111
|
+
# Set the logging level on all "vagrant" namespaced
|
112
|
+
# logs as long as we have a valid level.
|
113
|
+
if level
|
114
|
+
logger = Log4r::Logger.new('vagrant_parallels')
|
115
|
+
logger.outputters = Log4r::Outputter.stderr
|
116
|
+
logger.level = level
|
117
|
+
logger = nil
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
86
121
|
|
87
122
|
# Drop some autoloads in here to optimize the performance of loading
|
88
123
|
# our drivers only when they are needed.
|
89
124
|
module Driver
|
90
|
-
autoload :Meta, File.expand_path(
|
91
|
-
autoload :PD_8, File.expand_path(
|
92
|
-
autoload :PD_9, File.expand_path(
|
93
|
-
autoload :PD_10, File.expand_path(
|
94
|
-
autoload :PD_11, File.expand_path(
|
125
|
+
autoload :Meta, File.expand_path('../driver/meta', __FILE__)
|
126
|
+
autoload :PD_8, File.expand_path('../driver/pd_8', __FILE__)
|
127
|
+
autoload :PD_9, File.expand_path('../driver/pd_9', __FILE__)
|
128
|
+
autoload :PD_10, File.expand_path('../driver/pd_10', __FILE__)
|
129
|
+
autoload :PD_11, File.expand_path('../driver/pd_11', __FILE__)
|
95
130
|
end
|
96
131
|
|
97
132
|
module Model
|
98
|
-
autoload :ForwardedPort, File.expand_path(
|
133
|
+
autoload :ForwardedPort, File.expand_path('../model/forwarded_port', __FILE__)
|
99
134
|
end
|
100
135
|
|
101
136
|
module Util
|
102
|
-
autoload :CompileForwardedPorts, File.expand_path(
|
137
|
+
autoload :CompileForwardedPorts, File.expand_path('../util/compile_forwarded_ports', __FILE__)
|
103
138
|
end
|
104
139
|
end
|
105
|
-
end
|
140
|
+
end
|