【问题标题】:Setting a default value in Vagrantfile if env. variable not set如果是 env,则在 Vagrantfile 中设置默认值。变量未设置
【发布时间】:2018-05-30 10:41:16
【问题描述】:

如果未设置环境变量,我正在尝试执行以下操作来设置默认值:

config.vm.box = ENV['VAGRANT_DEV_BOX'] || "ubuntu/xenial64"

这会导致以下错误:

/opt/vagrant/embedded/lib/ruby/2.4.0/rubygems/version.rb:208:in `initialize': Malformed version number string debian-VAGRANTSLASH-jessie64 (ArgumentError)

此时尚未设置 VAGRANT_DEV_BOX 变量。确认如下:

server ????  echo $VAGRANT_DEV_BOX

server ????

是否可以在 Ruby 和/或 Vagrantfile 中执行此操作?

【问题讨论】:

  • 看起来config.vm.box 需要版本,而ENV['VAGRANT_DEV_BOX'] 包含此"debian-VAGRANTSLASH-jessie64"。它与|| "ubuntu/xenial64" 部分无关,因为它永远不会被执行。
  • ENV['VAGRANT_DEV_BOX'] 在此时为空,因为它尚未设置。 config.vm.box 需要一个字符串,例如 ubuntu/xenial64。已编辑的问题。

标签: ruby vagrant


【解决方案1】:

这要感谢#vagrant, freenode 上的double-p

<double-p> 你不能只内联 ruby​​.. 把它放在 vagrant-configure 上面,比如:

port = ENV["HOST_PORT"] || 8080

Vagrant.configure("2") do |config|
  # Ubuntu 14.04 LTS
  config.vm.box = "ubuntu/trusty64"
  config.vm.network "forwarded_port", guest: 80, host: port
  config.vm.provision "shell", path: "vagrant/provision.sh"
end

【讨论】:

    猜你喜欢
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 2016-09-01
    相关资源
    最近更新 更多