我最近重新格式化并重新安装了Mountain Lion,新版本的Jekyll和/或Ruby和/或Ant破坏了我的工作流程。我使用Sublime Text 2来调用Ant构建脚本,该脚本(以及其他命令)执行Jekyll来构建博客。
这是我的Sublime Text项目文件:
"build_systems":
[
{
"name": "MyBlog",
"cmd": ["ant"],
"working_dir": "/Users/JordanRoher/Dropbox/Projects/BlogFolder/Web/www",
"variants": [
{ "cmd": ["ant", "local"],
"name": "Local"
},
{ "cmd": ["ant", "remote"],
"name": "Remote"
}
]
}
]
Ant命令如下所示:
<target name="jekyll">
<exec dir="${dir.source}" executable="bash">
<env key="PATH" path="/usr/local/opt/ruby/bin"/>
<env key="LC_ALL" value="en_US.UTF-8"/>
<env key="LANG" value="en_US.UTF-8"/>
<arg value="-c"/>
<arg value="jekyll build"/>
</exec>
</target>
去年曾经工作,但现在它产生了这个输出:
jekyll:
[exec] bash: jekyll: command not found
[exec] Result: 127
此时整个构建脚本都会脱轨。
重要的是要注意,如果我从项目文件夹中运行 ant 命令,则ant和此taget工作正常。这是唯一导致问题的Sublime Text。
我也尝试过不同风格的Ant命令,如下所示:
<target name="jekyll">
<exec dir="${dir.source}" executable="jekyll">
<arg value="build"/>
</exec>
</target>
但是这会产生一种不同的错误:
Execute failed: java.io.IOException: Cannot run program "jekyll": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:470)
关于我的系统:
$ echo $PATH
/Users/JordanRoher/.rvm/gems/ruby-1.9.3-p429/bin:/Users/JordanRoher/.rvm/gems/ruby-1.9.3-p429@global/bin:/Users/JordanRoher/.rvm/rubies/ruby-1.9.3-p429/bin:/Users/JordanRoher/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
我应该将PATH变量添加到Sublime Text构建脚本吗?如果是的话,哪些?
答案 0 :(得分:1)
解决!谢谢马丁克莱顿指出我正确的方向。 Sublime Text 2确实缺少.bash_profile或其他地方的路径信息。
解决方案是通过进入终端并输入
来获取我的路径echo $PATH
将其复制并将其放入我的.sublime-project文件中的“path”条目
"name": "MyBlog",
"cmd": ["ant"],
"working_dir": "/Users/JordanRoher/Dropbox/Projects/BlogFolder/Web/www",
"path": "/Users/JordanRoher/.rvm/gems/ruby-1.9.3-p429/bin:/Users/JordanRoher/.rvm/gems/ruby-1.9.3-p429@global/bin:/Users/JordanRoher/.rvm/rubies/ruby-1.9.3-p429/bin:/Users/JordanRoher/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin",
我也在使用Jekyll目标的简短版本,如下所示:
<target name="jekyll">
<exec dir="${dir.source}" executable="bash">
<arg value="-c"/>
<arg value="jekyll build"/>
</exec>
</target>