Бродяга - Сообщение: неопределенный метод `имя ' - PullRequest
0 голосов
/ 16 января 2019

Я использую приведенный ниже код Vagrant для получения IP-адреса.Я использую DHCP для использования частной сети и позволяю назначать IP-адрес через DHCP.

# Vagrantfile
Vagrant.configure(2) do |config|
config.ssh.insert_key = true
config.ssh.username = "vagrant"
config.vm.network "private_network", type: "dhcp"
config.vm.box = "ubuntu/trusty64"
config.vm.define "test-web"
config.trigger.after :up, :stdout => false, :stderr => false do
get_ip_address = %Q(vagrant ssh #{@machine.name} -c 'ifconfig | grep -oP "inet addr:\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}" | grep -oP "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}" | tail -n 2 | head -n 1')
@logger.debug "Running `#{get_ip_address}`"
output = `#{get_ip_address}`
@logger.debug "Output received:\n----\n#{output}\n----"
puts "==> #{@machine.name}: Available on DHCP IP address #{output.strip}"
@logger.debug "Finished running :after trigger"
end
end

Когда я проверяю код, появляется ли ошибка ниже?Похоже, проблема с @ machine.name.

vagrant validate
Vagrant failed to initialize at a very early stage:

There was an error loading a Vagrantfile. The file being loaded 
and the error message are shown below. This is usually caused by 
an invalid or undefined variable.

Path: /Users/Vagrantfile
Line number: 0
Message: undefined method `name'

1 Ответ

0 голосов
/ 17 января 2019

Vagrantfiles - это программы на Ruby. Это помогло бы, если бы вы, по крайней мере, правильно сделали отступ. Как вы и подозревали, есть проблема с @ machine.name; проблема в том, что вы нигде не определили @machine. Если вы puts @machine, вероятно, он покажет, что он не определен. Глядя на этот источник , который, по-видимому, там, где вы его нашли, это может быть из-за того, что плагин триггеров не установлен в вашей версии.

...