Reveal.js アプリケーションを Heroku にデプロイしようとしています。Reveal.js は、grunt connect
コマンドを介してノード上で実行されます。このアプリでは、オンザフライでアセットをコンパイルするために Ruby も必要です。を使用して、ローカルでアプリを実行できますgrunt serve
。
コンパスは の依存関係であるため、当初、grunt watch
Heroku は Gemfile のみを検出し、Ruby アプリを実行していると想定しました。nodejs カスタム ビルドパックを使用して、Heroku に nodejs アプリとして認識させるようにしました。
プロファイルに含まれるもの
web: grunt serve
ログショー
2013-06-17T13:51:56.187012+00:00 heroku[router]: at=error code=H14 desc="No web processes running"
heroku ps
も何も示しません。「heroku run grunt serve」を正常に実行できます。また、reveal に付属するデフォルトの Gruntfile.js を変更して、process.env ie を受け入れるようにしました。
connect: {
server: {
options: {
port: process.env.PORT || 8000,
base: '.'
}
}
}
最後の試みとして、デプロイ時に Gruntタスクを実行してアセットをコンパイルするHeroku-nodejs-grunt ビルド パック ( https://github.com/mbuchetics/heroku-buildpack-nodejs-grunt ) を使用してみました。まだ運が悪く、heroku logs --tail
まだプロセスが実行されていません。で探索するとheroku run
、grunt が使用可能であることがわかり、grunt serve
コマンドが正常に実行されます。
新しい grunt ビルド パックの使用を開始すると、上記の Gruntfile.js で「プロセス」が未定義であるというエラーが発生しました。ポートを0に切り替えました。
Web サーバーが応答するポート。指定したポートがすでに使用されている場合、タスクは失敗します。特別な値 0 または '?' を使用できます。システムが割り当てたポートを使用します。
動作せず、「?」を試しても動作しませんでした (まだ Web プロセスheroku restart
がなく、何もしません)
Heroku で grunt サーブをメインの Web サーバー プロセスとして使用する方法がわかりません。