1

最近、Mountain Lion を再フォーマットして再インストールしましたが、新しいバージョンの Jekyll や Ruby や Ant が私のワークフローを壊してしまいました。Sublime Text 2 を使用して Ant ビルド スクリプトを呼び出します。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 とこのターゲットが正常に動作することに注意してください。問題を引き起こしているのは 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

Sublime Text ビルド スクリプトに PATH 変数を追加する必要がありますか? もしそうなら、どれですか?

4

1 に答える 1

1

解決しました!正しい方向に向けてくれたマーティン・クレイトンに感謝します。Sublime Text 2 には、確かに .bash_profile などからのパス情報がありませんでした。

解決策は、ターミナルに移動して入力してパスを取得することでした

echo $PATH

これをコピーして、.sublime-project ファイルの「パス」エントリに入れました

"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>
于 2013-06-11T05:28:46.560 に答える