404-е годы при развертывании нуаровой войны на молу на выжимках - PullRequest
6 голосов
/ 20 февраля 2012

У меня такое ощущение, что я упустил что-то очевидное здесь, но я не знаю, с чего начать.

У меня свежее приложение noir, созданное таким образом:

$ lein noir new hiworld

Я добавляю новый обработчик страниц в src / hiworld / server.clj:

(ns hiworld.server
  (:require [noir.server :as server]))
(server/load-views "src/hiworld/views/")

(def handler (server/gen-handler {:mode :dev
                                  :ns 'hiworld}))

Я устанавливаю project.clj для кольца:

(defproject hiworld "0.1.0-SNAPSHOT"
            :description "FIXME: write this!"
            :dependencies [[org.clojure/clojure "1.3.0"]
                           [noir "1.2.2-SNAPSHOT"]]
            :dev-dependencies [[lein-ring "0.5.4"]]
            :ring {:handler hiworld.server/handler}
            :main hiworld.server)

Проверьте, работает ли он локально:

$ lein deps
$ lein ring server-headless
# elsewhere
$ curl -I localhost:3000/welcome
HTTP/1.1 200 OK
Date: Mon, 20 Feb 2012 08:51:15 GMT
Set-Cookie: ring-session=ef00a7ad-2061-4026-9d94-3ed86ec8c46c;Path=/
Content-Type: text/html; charset=utf-8
Content-Length: 0
Server: Jetty(6.1.25)

Я строю войну:

$ lein ring uberwar
# builds hiworld-0.1.0-SNAPSHOT-standalone.war

Пока все хорошо.Теперь я развернул его на пристани:

$ sudo apt-get install jetty libjetty-extra
$ sudo cp hiworld-0.1.0-SNAPSHOT-standalone.war /usr/share/jetty/webapps/root.war
$ sudo chown jetty:adm /usr/share/jetty/webapps/root.war
$ sudo mv /usr/share/jetty/webapps/root /usr/share/jetty/webapps/root-orig
$ sudo /etc/init.d/jetty restart

Но:

$ curl -I localhost:8080/welcome
HTTP/1.1 404 Not Found
Date: Mon, 20 Feb 2012 08:59:27 GMT
Set-Cookie: ring-session=c255da15-6cbd-4d2c-8e17-9d120918bde9;Path=/
Content-Type: text/html; charset=utf-8
Content-Length: 363
Server: Jetty(6.1.24)

Что я пропустил?Насколько я могу судить, это все, что мне нужно сделать, чтобы развернуть тривиальное веб-приложение на пристани, но, очевидно, у меня здесь что-то не так.Я не против перезапуска, поэтому я не думаю Мне нужно определить свой собственный контекст - или я?

ОБНОВЛЕНИЕ

Я следовал этой последовательности инструкций, чтобы создать простую войну "Привет, мир" , а не , вовлекающую замыкания вообще, и она работает, как и ожидалось, поэтому может показаться, что что-то неСовершенно верно со стеком clojure.

ОБНОВЛЕНО СНОВА

Я создал простейшее из возможных кольцевых приложений как отдельную войну и развернул ее.Это сработало, поэтому похоже, что это что-то специфическое для нуара.

ОБНОВЛЕНИЕ В ТРЕТЬЕ ВРЕМЯ

Я создал и развернул приложение hello-world compojure, которое работало, как и ожидалось.

Ответы [ 2 ]

3 голосов
/ 14 апреля 2012

В файле .war сервер / load-views не работает, поскольку не может найти физические файлы в войне.В hiworld / server.clj просто требуйте все пространства имен, обеспечивающие представления.

Это не объясняется в документации, но я нашел ветку списка рассылки , объясняющую, что не так.

2 голосов
/ 16 апреля 2012

У меня тоже была эта проблема.Я нашел решение в списке рассылки Noir здесь .

В server.clj я сделал две вещи: я удалил вызов (server/loadviews) и добавил свои представления в необходимые пространства имен.

Затем я построил свой проект с помощью команды lein ring uberwar warname.war.

...