問題タブ [pedestal]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
deployment - Jetty への WAR としてデプロイされた Clojure アプリのログが記録されない
私は WAR ファイルを作成し、これらの WAR の作成とデプロイの手順に従って Jetty 9 にデプロイしました。これは、Pedestal の提案から適応したものです。このプロセスは過去にうまくいきましたが、現在、Jetty はアプリケーションを起動しません。
有用なログも見つかりません。これが私の主な問題です。私はこれらの場所を見てきました:
/var/log/jetty/current
これだけを教えてくれます:
/opt/jetty/logs
- ファイルがまったく含まれていません/opt/myapp
- ログを含むmyapp.war
がログを含まない
-DDEBUG=true -Dorg.eclipse.jetty.LEVEL=DEBUG
また、起動時に Jetty JVM オプションを追加しようとしましたが、追加のログインで/var/log/jetty/current
は、WAR ファイルの起動で何が問題になったのかわかりませんでした。
ロギングは開発中 (たとえばlein run-dev
) で機能しますが、ロギング構成で何らかの間違いを犯しても驚かないでしょう。Pedestal サービス テンプレートによって提供される標準のlogback.xmlを使用しています。
根本的なアプリケーション エラーに関しては、私も推測しています。これは、アプリケーションの依存関係の最近の変更 (Datomic を追加した) または起動時の Datomic への接続が原因である可能性が最も高いです。
ここに私の project.cljがあります:
では、私の主な質問を言い換えると、ログを機能させるにはどうすればよいですか? 他のすべてはそこから続きます。
clojure - :constraints を使用するときにすべてにアクセスできるように、兄弟の Pedestal ルートを構成するにはどうすればよいですか?
次のリソースを持つことを目的としたおもちゃの台座サービスを作成しています。
/
/movies
/movies/today
/movies/:iso-date
ここで、:iso-date
####-##-## に一致します
最後のルートの制約は、次のスニペットで定義されます。
この制約を含むルートがルート テーブルに存在する場合は常に、その兄弟ルートを取得できません/movies/today
。代わりに、「見つかりません」という応答が返されます。ただし、制約のあるルートが削除されると、GET は/movies/today
成功します。
簡潔な形式を使用して定義したペデスタル ルートは次のようになります。
必要なルーティング動作を実現するために、このルート テーブルを正しく構築しましたか?
注意: コンパイルされたルートを出力すると、すべてのルートが存在し、生成さ:path-re
れた正規表現が REPL で期待どおりに一致するという期待どおりの結果が得られます。
clojure - ペデスタル、ホプロン、ビディ、ルートワンを使用する場合は?
どれ (Pedestal、Hoplon、Bidi) を使用する必要があるかを考えています。この選択に役立つ良い記事をインターネットで見つけられませんでした。
https://github.com/juxt/bidiから、Pedestal は同型ですが、Bidi も cljs であることがわかります。それはどういう意味ですか?違いはなんですか?
compojure は単純すぎることがわかりました。HTML テンプレートで URL を生成することさえできません。私は何か他のものを探し始めました。route-one (compojure で動作する URL を生成するためのライブラリ) も見つけましたが、すぐに compojure が再び必要とするものよりも多くのものが必要であることを発見するでしょう。
私の直感は、ペデスタル、ホプロン、ビディのいずれかを選択するように言っています。
必要なもの: 次のような独立したビジネス モデル アーキテクチャが必要です
http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html
http://blog.find-method.de/index.php?/archives/209-Dependency-inversion-in-Clojure.html
コードのこの部分をフレームワークに依存させたくありません。依存が少ないほど良い。
次の段階では、このモデル ビジネスをブリッジのようなものに注入したいと考えています。ブリッジは、ユーザー インターフェイスとのコネクタになります。フレームワークまたは追加のライブラリの時期になる可能性があります。
少なくとも、フロントエンドのユーザー インターフェイスを Web サイトとして作成したいと考えています。それは、ClojureScript または mayby static を使用した動的コンテンツになります。知らない。私は両方について考えなければなりません。
Clojureで発見したことは、自分の好みに基づいて独自のライブラリ セットを構築するという概念が本当に気に入っています。しかし、ルートの URL を生成するようなものを使用するために独自のコードを記述したくありません。それで、ルートワンも検討する必要がありますか?
1つを選択するのに役立つ何か賢いものを書いてください。または、選択する他のオプションで私の生活を複雑にします:)
https://github.com/pedestal/pedestal
clojure - 不変サーバーを使用してブラウザからページにアクセスする際のエラー
次に、次のファイルを immutant フォルダーに追加します
その後
その後
nrepl で指定された不変サーバー
しかし、ブラウザでページを開こうとするとエラーがスローされます
immutant 1.1.4 と pedestal-service 0.4.0 を使用しています
エラーのスタックトレース
clojure - Clojure ^名前空間で共有
台座のチュートリアルに従ってい^shared
ますが、コード内に次のような注釈があることに気付きました。
それは何に役立ちますか?
clojure - ペデスタルでオリジンが許可されている場合、「Access-Control-Allow-Origin」ヘッダーは存在しません
cljs アプリ ( http://localhost:3000で実行) から Pedestal サーバー ( http://localhost:8080で実行) にリソースをリクエストしようとすると、以下のエラーが発生します。http://localhost:3000からの CORS を許可したい:
クライアントからのリクエストを送信するためにcljs-httpを使用しています。リクエストは次のようになります。
のルートは/db/query
次のようになります。
これは のハンドラです/db/query
:
サーバーを実行するには、REPL でこの関数を実行します。
Pedestal の CORS に関する情報はあまりないようです。私はcorsの例を見てきましたが、私のものはそうではありませんが、うまくいくようです。ルートに追加する必要がある別のインターセプターや、ここで欠落している何らかの構成設定はありますか?
unit-testing - Clojure - Pedestal ルートをテストする
Pedestal Web サービスのテストを書きたいと思います。
私が持っている場合:
そのためのテストをどのように書くのでしょうか?
編集:これが私が試したことです:
しかし、例外があります:
clojure - Clojure - 台座ルートを組み合わせる
Pedestal でルートを組み合わせるにはどうすればよいですか?
注 : これはCompojure でのルートの結合と同様の質問ですが、台座の場合です。
clojure - Pedestal インターセプターの defbefore はどうなりましたか?
私は、io.pedestal.interceptor -> defbefore を参照するPedestal に関するこのブログ投稿 ( http://www.rkn.io/2014/08/01/async-interceptors/ ) をフォローしています。最新のペデスタルを使用すると、この関数/マクロは存在しません。それはどうなりましたか?ありがとう。