SHORT VERSION:。
run.shは思わインクルードパラメーターが欠けている。
この変更を含めるには、run.shをdarcsで更新しました。
LONG VERSION:
は通常、そのフラグがHappstackアプリケーションは必要ありません。通常は、runhaskell Main.hs
とするだけです。しかし、その特定の例ではMain.hsは明示的にインポート:サーバーは、独自のバージョン番号を報告できるようにversionInfo
関数で使用されて
import Paths_guestbook (version)
。 src-interactive-only
のバージョン番号はハードコードされていますが、一般に古くなっています。実際にカバールを使ってビルドするのは正しいことです。
Paths_guestbook
モジュールは通常、cabal build
を実行すると自動的に作成されます。
#!/bin/sh
runghc -isrc -idist/build/autogen src/Main.hs
一度cabal configure && cabal build
を実行しますので、他の修正はにrun.shを変更することです。その後、run.sh
を使用することができます(cabal clean
まで)。
別のオプションは、.cabalファイルにCPPフラグを設定し、アプリケーションがcabal経由でビルドされている場合にのみPaths_guestbook
をインポートすることです。
たとえば、happstackにあります。comのソースコード:行40(またはそう)で
http://patch-tag.com/r/stepcut/happstackDotCom/snapshot/current/content/pretty/Main.hs
あなたは#ifdef __CABAL__
が表示されます。 happstack.comでは、.cssファイルなどの静的コンテンツの場所を知る必要があります。 runhaskell Main.hs
をローカルディレクトリで実行すると、ローカルディレクトリのサブディレクトリ内のファイルが検索されます。 cabal install
を実行すると、代わりにcabal
が表示され、データファイルがインストールされます。または、コマンドライン引数でデフォルトの場所を上書きすることもできます。 (これは、そのアプリケーションのためのdebianのパッケージ化が何をしているのか)。
残念ながら、happstack new project
コマンドは、作成者が親になり、長時間に亘って作業する時間がなかったため、多少のビットロトテンになりました。それは混乱を減らすために、今後のHappstackリリースから削除される可能性が高いです。
本当に便利であるためには、一連の値を入力してから、一連のテンプレートから新しいプロジェクトを生成する必要があります。 'cabal init'の仕組みと似ています。しかし、現在、誰もそれを実現するための時間をボランティアしていません。
ソースを変更したことを確認するには、サーバを再起動して、happstack-plugins
ライブラリを使用することができます。ここでのスクリーンキャストがあります:
http://happstack.blogspot.com/2010/10/recompile-your-haskell-based-templates.html
ロングバージョンの2番目のバージョンは動作しますが、最初のバージョンは動作しません。ありがとうございました。おめでとう! – demi