标签: compojure

使用Clojure进行GAE应用程序的方式是什么?

我想使用Clojure和Compojure在GAE上开发应用程序,使用Eclipse或Idea,emacs不是一个坏主意:P

那么这是最好的方法呢?我不认为我想使用leiningen,因为我相信如果你通过学习曲线,maven可以非常强大 - 我读了这篇博客http://compojureongae.posterous.com/tag/googleappengine,其中'到现在为止是一个最好的信息来源.

如果你必须这样做,你的方法是什么?或者你会推荐我什么?

这个插件 - > http://code.google.com/p/maven-gae-plugin/好吗?因为如果我使用那个插件我可以在pom.xml中包含clojure.jar,基本上我已经准备好了,对吧?IntelliJ IDEA有类似之处吗?

还有其他建议吗?这是你的方法吗?

google-app-engine clojure compojure

8
推荐指数
1
解决办法
1172
查看次数

没有码头的环/组合

我知道可以使用创建war文件lein ring war,但它似乎仍然包含jetty依赖项.当我构建战争(并在tomcat上部署)时,有没有办法排除jetty依赖项?

如果我不能做到这一点,或者只是额外的罐子/类文件被打包到战争中但从未真正使用过?

clojure compojure ring leiningen

8
推荐指数
1
解决办法
460
查看次数

如何将clojure函数作为字符串返回

有没有办法将clojure函数作为字符串返回?我正在制作一些在线文档,我真的希望能够通过某种方式将函数评估为文本来将代码添加到html中.

谢谢

string clojure compojure hiccup noir

8
推荐指数
1
解决办法
299
查看次数

如何在Compojure中获取重复的请求参数

我可以通过以下方式轻松获取请求参数:

(:foo params)
Run Code Online (Sandbox Code Playgroud)

但是,当我有这样的请求时:

/api?foo=1&foo=2&foo=3
Run Code Online (Sandbox Code Playgroud)

我只是回来,"3"而我期待一个阵列["1","2","3"].

我不确定为什么会这样,因为当我查看代码时:

https://github.com/ring-clojure/ring-codec/blob/master/src/ring/util/codec.clj#L128

它似乎调用assoc-conj哪个应该将同名的多个参数转换为包含值的向量.

我在这里遗漏了什么或这是一个错误吗?

clojure compojure

8
推荐指数
1
解决办法
1301
查看次数

如何访问:compojure函数内的标题

org.clojure/clojure-contrib"1.2.0"ring"1.1.8"compojure"1.1.5"clout"1.1.0"

(defroutes rest-routes
    (GET "/" [] "<p> Hello </p>")
    (POST "/api/v1/:stor/sync" [stor] (start-sync stor))
    (POST ["/api/v1/:stor/:txn/data/:file" :file #".*"] [stor txn file] (txn-add stor txn file))
    (ANY "*" [] "<p>Page not found. </p>"))
Run Code Online (Sandbox Code Playgroud)

在第二个POST中,我还想将所有http-header传递给"txn-add"处理程序.我做了很多谷歌并查看代码,但找不到任何有用的东西.

我知道,我可以使用以下方法来传递标题(但是它不会解析网址请求),

(POST "/api/v1"
  {headers :headers} (txn-add "dummy stor" "dummy txn" headers))
Run Code Online (Sandbox Code Playgroud)

另外,如何将POST请求的内容(即:正文)传递给"txn-add"?

clojure compojure http-headers

8
推荐指数
2
解决办法
3164
查看次数

在单页Clojure Web应用程序中使用Friend进行身份验证和授权

我正在尝试将Friend身份验证和授权集成到Clojure/Compojure单页Web应用程序中.

我有一个由Angular控制器支持的登录表单,该控制器使用AJAX对Web应用程序验证用户名和密码,并获取经过身份验证的用户记录.因此,我不希望Friend基于表单的登录提供默认行为 - 我基本上想要依赖HTTP状态代码,而且我想要任何朋友页面重定向.

例如,制作未经身份验证的请求应该只返回401状态代码,而不应重定向到"/ login".我通过在配置好友时指定自定义的":unauthenticated-handler"(下面包含的代码)来完成此部分.

在成功登录后,我只需要200状态代码,而不是重定向到最初请求的页面.这是我无法工作的.

我根据各种示例编写了一个自定义的朋友身份验证工作流程(我的Clojure技能现在是初学者级别):

(defn my-auth
  [& {:keys [credential-fn]}]
    (routes
      (GET "/logout" req
        (friend/logout* {:status 200}))
      (POST "/login" {{:keys [username password]} :params}
        (if-let [user-record (-> username credential-fn)]
          (if
            (and
              [user-record password]
              (creds/bcrypt-verify password (:password user-record)))
            (let [user-record (dissoc user-record :password)]
              (workflows/make-auth user-record {:cemerick.friend/workflow :my-auth :cemerick.friend/redirect-on-auth? true}))
            {:status 401})
          {:status 401}))))
Run Code Online (Sandbox Code Playgroud)

这是我的中间件声明的处理程序:

(def app
  (-> 
    (handler/site
      (friend/authenticate app-routes
        {:credential-fn (partial creds/bcrypt-credential-fn my-credential-fn)
         :unauthenticated-handler unauthenticated
         :workflows [(my-auth :credential-fn my-credential-fn)]}))
    (session/wrap-session)
    (params/wrap-keyword-params)
    (json/wrap-json-body)
    (json/wrap-json-response {:pretty true})))
Run Code Online (Sandbox Code Playgroud)

以及上面引用的附加处理函数: …

authentication clojure compojure

8
推荐指数
1
解决办法
2122
查看次数

在开发基于组件/环的应用程序时使用emacs/cider的正确方法是什么?

在开发基于组件/环的clojure应用程序时,emacs/cider的正确工作流程/使用途径是什么?

我觉得我可以"附加"到我正在运行的compojure/ring-process,更改其代码,读取/更改其数据,但我无法理解我该如何做到这一点?什么是正确的方法?

我所做的?

lein new compojure my-project
cd my-project
lein ring server-headless
Run Code Online (Sandbox Code Playgroud)

开发服务器现在运行.如果我更改项目中的文件,它们将自动重新加载.那很好.但我想要的是,我直接附加到流程并更改其功能,例如.

我明白这是可能的,但我无法理解.

emacs clojure compojure ring leiningen

8
推荐指数
1
解决办法
1284
查看次数

lein ring server:"那不是任务"

我正在尝试为compojure构建hello-world示例,但它无法启动响铃任务.

$ lein version
Leiningen 1.7.1 on Java 1.7.0_65 OpenJDK 64-Bit Server VM
$ lein new compojure test
Created new project in: /home/myaccount/test
Look over project.clj and start coding in compojure/core.clj
$ cd test/
$ lein ring server
That's not a task. Use "lein help" to list all tasks.
Run Code Online (Sandbox Code Playgroud)

我也试过在发光网站上使用hello-world ,这也说它无法找到那个任务或其他例子,lein抱怨我使用了错误的参数数量,即使我直接从他们的教程.

$ lein new luminus guestbook +h2
Wrong number of arguments to new task. 
Expected ([project-name] [project-name project-dir])
Run Code Online (Sandbox Code Playgroud)

clojure compojure leiningen luminus

8
推荐指数
1
解决办法
2620
查看次数

使用Hiccup和Compojure编写模板

我对Clojure和Compojure Web开发相对较新.在我正在构建的玩具示例中,我注意到的第一个问题是HTML模板.我想支持Rails中的partials或Django使用的模板框架.

目前我有:

(defn index-page []
(html5
    [:head
        [:title "Home | Compojure Docs"]
        (include-css "/css/bootstrap.min.css")
        (include-css "/css/bootstrap-responsive.min.css")]
    [:body
        [:div {:class "container-fluid"}
            [:div {:class "row-fluid"}
                [:div {:class "span2 menu"}]
                [:div {:class "span10 content"}
                    [:h1 "Compojure Docs"]
                    [:ul
                        [:li
                            [:a {:href "/getting-started"} "Getting Started"]]
                        [:li
                            [:a {:href "/routes-in-detail"} "Routes in Detail"]]
                        [:li
                            [:a {:href "/destructuring-syntax"} "Destructuring Syntax"]]
                        [:li
                            [:a {:href "/nesting-routes"} "Nesting Routes"]]
                        [:li
                            [:a {:href "/api-documentation"} "API Documentation"]]
                        [:li
                            [:a {:href "/paas-platforms"} "PaaS Platforms"]]
                        [:li
                            [:a {:href "/example-project"} "Example Project"]]
                        [:li …
Run Code Online (Sandbox Code Playgroud)

clojure compojure hiccup

7
推荐指数
1
解决办法
4182
查看次数

如何通过逆时针(或la clojure)运行/调试compojure web应用程序

我正在尝试用compojure编写我的第一个Web应用程序.我正在使用ccw,而且我File-New-Project, Clojure Project使用"compojure"leiningen模板.最终看起来像project.clj

(defproject asdf "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :dependencies [[org.clojure/clojure "1.4.0"]
                 [compojure "1.1.5"]]
  :plugins [[lein-ring "0.8.2"]]
  :ring {:handler asdf.handler/app}
  :profiles
  {:dev {:dependencies [[ring-mock "0.1.3"]]}})
Run Code Online (Sandbox Code Playgroud)

src/asdf/handler.clj看起来像

(ns asdf.handler
  (:use compojure.core)
  (:require [compojure.handler :as handler]
            [compojure.route :as route]))

(defroutes app-routes
  (GET "/" [] "Hello World")
  (route/not-found "Not Found"))

(def app
  (handler/site app-routes))
Run Code Online (Sandbox Code Playgroud)

我发现我可以从命令行运行它lein ring server,但我不知道如何从eclipse运行它.我当然希望不仅能够运行它,还能调试它并设置断点等.在eclipse中有没有办法做到这一点?或者,如果没有,IntelliJ/La-Clojure怎么样?(我现在有点害怕emacs,但也许如果它超级简单我会尝试一下).

或者,这不是一个compojure应用程序的典型开发过程吗?(如果不是,那是什么?只是跑步lein ring server并祈祷?)

如果它有所作为,这是在Win7上.

clojure compojure counterclockwise la-clojure

7
推荐指数
1
解决办法
3498
查看次数