【问题标题】:System vs Local Environment in RakefileRakefile 中的系统与本地环境
【发布时间】:2015-09-10 00:50:47
【问题描述】:

我们使用rake 进行一些设置步骤。我们需要确保特定目录位于 PATH 中,并且我们在 Rakefile 中使用了它:

  hasImageMagic =  ENV["Path"] =~ /ImageMagick/
  if not hasImageMagic ...

当在git-bash 下运行Rake 时,这工作正常。

当我们在Powershell 下运行Rake 时,却找不到Path 中的元素。我们发现它正在查看用户的本地路径而不是系统路径。

ruby 有办法查看 system 路径变量吗?

【问题讨论】:

  • 我投票决定将此问题作为离题结束,因为此问题是由无法再重现的问题引起的。
  • 虽然“什么都没有改变”(是的,正确的;但是可以通过 git 验证),同样的代码今天运行良好。 ENV["Path"] 正在结合本地和系统环境变量,一切都很好。

标签: ruby rake


【解决方案1】:

您可以使用GetEnvironmentVariable() 方法指定它是您感兴趣的机器范围的环境变量:

$PathVar = [Environment]::GetEnvironmentVariable("Path",[System.EnvironmentVariableTarget]::Machine)

if($PathVar -notmatch "ImageMagick"){
    # error handling here
}

【讨论】:

  • 那是 Powershell 脚本,对吧?我的问题不清楚 - 我正在寻找 Ruby,成为我们现有 Rakefile 的一部分。
  • @StevenV 是的,这是 PowerShell
【解决方案2】:

@StevenV 对不起,这是我的错。这段代码我最初是写的,只在 gitbash 中测试过:

hasImageMagic =  ENV["Path"] =~ /c:\\Program Files\\ImageMagick-/
if not hasImageMagic ...

虽然这在 gitbash 中运行良好,但后来另一个团队成员提醒我,这在 powershell 中没有按预期工作。然后我推送了您在问题中发布的代码,它似乎确实可以与 powershell 一起使用:

hasImageMagic =  ENV["Path"] =~ /ImageMagick/
if not hasImageMagic ...

我个人仍然不知道为什么 gitbash 喜欢原始的正则表达式,而 powershell 却不喜欢。这是我的第一个 ruby​​ 代码,所以我是罪魁祸首。

【讨论】:

    猜你喜欢
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    相关资源
    最近更新 更多