1

クライアント側のみの Web アプリケーションを作成することもあり、シンプルで高速な開発サイクルが好きです。これにより、明示的にビルド ステップを持たないプロジェクト レイアウトが作成されるため、ソース ファイルを編集してから Web ブラウザーでリロードすることができます。これは、設計に適用するのが常に健全な制約であるとは限りません。したがって、開発環境で次の機能を使用したいと考えています。

GET /foo/barサーバーがリクエストを受信して​​ファイルに変換するときはいつでも、ファイルを読み取る前/whatever/foo/barに実行されます。cd /whatever && make foo/bar

これを達成する最も簡単な方法は何ですか?

最良の解決策は Apache 構成であり、できれば完全に.htaccessファイル内に構成することです。それができない場合は、すでにそのような機能を備えた軽量の Web サーバー。またはそうするようにプログラムできるもの。


私はかなり多くの「それをしないでください」という反応を集めたので、いくつかの点であなたを安心させてください:

  • これはクライアント側のみの開発です — 提供されるファイルがすべて重要であり、ビルドは非常に軽量になる可能性があります (たとえば、ファイルのグループをターゲット ディレクトリ レイアウトにコピーするか、いくつかの .js ファイルを 1 つのファイルにパックします)。 . さらに、ファイルは通常、編集と再読み込みのサイクルごとに 1 回読み込まれるため、インタラクティブな応答時間は優先事項ではありません。
  • ビルド システムが関連する依存関係を完全に認識していると仮定します。何も変更されていない場合、再構築は行われません。
  • 上記にもかかわらず非現実的なほど遅いことが判明した場合は、このアイデアを断念し、ワークフローを改善する他の方法を見つけることは間違いありませんが、少なくとも試してみたいと思います.
4

3 に答える 3

1

http://aspen.io/を使用できます。

makefile がいくつかの魔法を行うと仮定すると、次のような単純なプレートを作成できます。

import subprocess
RESULTFILE = "/whatever/foo/bar"
^L
subprocess.call(['make'])
response.body = ''.join(open(resultfile).readlines())
^L

しかし、それほど魔法ではない場合は、もちろん、ビルド プロセスを simplate 自体にエンコードし ( https://code.google.com/p/fabricate/などを使用)、makefile を完全に削除することもできます。

于 2012-11-28T16:30:36.687 に答える
0

私は怠惰な切り芝なので、次のようなものを提案します。

Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)\/(.*)(/|)$ /make.php?base=$1&make=$2 [L,NC]

そのような正規表現パターンは、2つの必須パラメーターを提供します-

次に、PHP関数exec()によってシェルスクリプトに渡すことができます。

パターンの上に除外を追加したり、パターンに包含を追加したりする必要がある場合があります。たとえば、最初の後方参照を単語で定義します。そうしないと、他のリクエストにも一致します(書き直してはいけません)。

パラメータには、次のようなシェルスクリプトでアクセスできます。

#!/bin/bash
cd /var/www/$1
make $2
于 2013-02-16T16:26:27.857 に答える
-1

これは本当に悪い考えのようです。「make」が完了するのを待っている各リクエストに、膨大な量のレイテンシが追加されます。開発環境では問題ありませんが、本番環境ではパフォーマンスが低下します。

つまり、これを処理する単純な apache モジュールを作成できます: http://linuxdocs.org/HOWTOs/Apache-Overview-HOWTO-12.html

これがあなたがやりたいことかどうかを検討することをお勧めします。開発中は、リメイクが必要なファイルを変更したかどうかがわかります。本番環境では、パフォーマンス キラーです。

于 2012-11-28T01:15:29.300 に答える