2012-01-26 13 views
0

私はHAppStackを試しています。私はHAppStackをインストールし、プロジェクト:happstack new project webを作成しました。その下にプロジェクトのゲストブックが作成された新しいフォルダ 'web'。だから私はそれを実行したい。私がそれを行うことができる唯一の方法は、cabal installです。しかし私はキャバールをインストールせずに私のアプリを実行したい! run.shエラーの実行: 'Paths_guestbook'モジュールが見つかりませんでした。どうしたらいいですか?HAppStackアプリを実行しないでください

編集: 一般に、スナップのように再構築せずにHAppStackアプリを実行する方法はありますか?

答えて

0

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

+0

ロングバージョンの2番目のバージョンは動作しますが、最初のバージョンは動作しません。ありがとうございました。おめでとう! – demi

1

一般的に、あなたはいつもやってするだけでインストールすることなく、派閥のプロジェクトをビルドすることができます:結果の実行可能ファイルは通常、dist/build/<project>/<project>

$ cabal configure 
$ cabal build 

と呼ばれます。

具体的なエラーは、Paths_guestbookモジュールを入手するためにコードをCabalで構築する必要があるためです。このモジュールには、使用するデータファイルの場所に関する情報が含まれています。 (インストールしないで実行可能ファイルを実行すると、これらのデータファイルを見つけることができない場合があります。その場合は、cabal-devのようなもっと精巧な解決策が必要です)

これを達成するための正式な方法があるのか​​どうかは分かりませんが、基本的にCabalベースの一般的なプロジェクトではうまくいきます。run.shが最終的にin 2009に変更されたことをリポジトリが示しているので、 。-rottenこれは、しかし、特別何もしないので、cabal buildはうまく動作するはずです)

+0

ですから、これは編集後に更新を取得するための最速の方法だと思う: '徒党のconfigure &&秘密結社build'、その後、実行ファイルが生成され、サーバーを実行します。動的言語で再構築なしの変更を確認する方法はありますか?私はSnapフレームワークでこのような機能を見ました(ただし、パフォーマンスは高くなります)。 – demi

+0

その後のビルドでは、 'configure'ステップをスキップすることができます:' cabal build && dist/build// '。私が言ったように、私はHappstackのユーザーではないので、Happstackのために自動的にリロードするサーバーがあるかどうかは分かりません。あなたが興味を持っているのであれば、それを別の質問として尋ねることをお勧めします。 – ehird

関連する問題