Ruby 尝试循环创建计算机时,浮动堆栈级别太深(SystemStackError)

Ruby 尝试循环创建计算机时,浮动堆栈级别太深(SystemStackError),ruby,linux,vagrant,Ruby,Linux,Vagrant,因此,我试图创建一个文件,该文件可以循环并为一个学校项目创建多台机器 代码是: def slave() slave{i} end Vagrant.configure(2) do |config| config.vm.box = "minimal/xenial64" config.vm.provision "shell", inline: $ttscript (1..3).each do |i| config.vm.define "slave{i}" do |slave

因此,我试图创建一个文件,该文件可以循环并为一个学校项目创建多台机器

代码是:

def slave()
  slave{i}
end

Vagrant.configure(2) do |config|
  config.vm.box = "minimal/xenial64"
  config.vm.provision "shell", inline: $ttscript

  (1..3).each do |i|
    config.vm.define "slave{i}" do |slave|
      slave{i}.vm.hostname = "slave{i}"
  end
end
结束

我无法将变量
I
放在从机现在所在的位置,因此我尝试为它创建定义,但它只是错误消息:

/home/mestari420/Vagrantfile:14:in `slave': stack level too deep (SystemStackError)
    from /home/mestari420/Vagrantfile:14:in `slave'
    from /home/mestari420/Vagrantfile:14:in `slave'
    from /home/mestari420/Vagrantfile:14:in `slave'
    from /home/mestari420/Vagrantfile:14:in `slave'
    from /home/mestari420/Vagrantfile:14:in `slave'
    from /home/mestari420/Vagrantfile:14:in `slave'
    from /home/mestari420/Vagrantfile:14:in `slave'
    from /home/mestari420/Vagrantfile:14:in `slave'
     ... 11894 levels...
    from /usr/share/vagrant/plugins/commands/up/command.rb:85:in `execute'
    from /usr/lib/ruby/vendor_ruby/vagrant/cli.rb:42:in `execute'
    from /usr/lib/ruby/vendor_ruby/vagrant/environment.rb:268:in `cli'
    from /usr/bin/vagrant:173:in `<main>'
/home/mestari420/Vagrantfile:14:in'slave':堆栈级别太深(SystemStackError)
from/home/mestari420/vagrant文件:14:in“slave”
from/home/mestari420/vagrant文件:14:in“slave”
from/home/mestari420/vagrant文件:14:in“slave”
from/home/mestari420/vagrant文件:14:in“slave”
from/home/mestari420/vagrant文件:14:in“slave”
from/home/mestari420/vagrant文件:14:in“slave”
from/home/mestari420/vagrant文件:14:in“slave”
from/home/mestari420/vagrant文件:14:in“slave”
... 11894级。。。
from/usr/share/vagrant/plugins/commands/up/command.rb:85:in'execute'
from/usr/lib/ruby/vendor_ruby/vagrant/cli.rb:42:in'execute'
from/usr/lib/ruby/vendor_ruby/vagrant/environment.rb:268:in`cli'
from/usr/bin/vagrant:173:in`'
我这样做的方法有什么问题

(1..3).each do |i|
  config.vm.define "node-#{i}" do |node|
    node.vm.provision "shell",
      inline: "echo hello from node #{i}"
  end
end
主要问题是

slave{i}.vm.hostname
换成

slave.vm.hostname

as slave是此处使用的变量名称。

谢谢。似乎这就是问题所在。我去掉了def slave()slave{I}端,像你说的那样修改了代码,它开始运行得很好。