首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过逆时针(或la clojure)运行/调试compojure web应用程序

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

Stack Overflow用户
提问于 2013-03-16 05:26:55
回答 2查看 3.7K关注 0票数 7

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

代码语言:javascript
复制
(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"]]}})

src/asdf/handler.clj如下所示

代码语言:javascript
复制
(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))

我发现我可以从命令行使用lein ring server运行它,但是我不确定如何从eclipse运行它。当然,我不仅希望能够运行它,还希望能够调试它并设置断点等。在eclipse中有什么方法可以做到这一点吗?或者,如果不是,IntelliJ/La-Clojure怎么样?(目前,我有点害怕emacs,但如果它非常简单,我可能会试一试)。

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

如果有什么不同的话,那就是在Win7上。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-16 17:26:38

以下是一个在开发Ring应用程序时对我非常有用的食谱:

确保为您的项目正确配置了leiningen支持(如果有疑问,请执行一次操作):在包资源管理器中选择项目,然后调用上下文命令Leiningen > Reset configuration

  • then
    • 您应该会在项目中看到一个引用项目的直接和可传递依赖项的Leiningen Dependencies虚拟节点

  • 选择asdf.handler文件,右键单击asdf.handler命名空间,然后在编辑器
  • 中输入Ctrl+Alt+N以跳转到REPL并将REPL的当前命名空间切换为asdf.handler,同时
  • 通过键入(app) + Enter (或Ctrl+Enter如果光标不在行尾)

启动应用程序

现在,您可以在编辑器和REPL之间导航。

要将编辑器内容发送到REPL,选择它,然后点击Ctrl+Enter

  • If未选择的情况下点击

  • ,整个“顶级表达式”(例如,Ctrl+Enter )将被发送到REPL

  • 要将整个文件重新发送到REPL,请键入Ctrl+Alt+S

  • the特定于CCW的键盘快捷键的完整列表:http://code.google.com/p/counterclockwise/wiki/EditorKeyBindingsFeatures

请注意,逆时针的未来版本将更多地与Leiningen2集成,但就目前而言,开发ring应用程序的本质使得引导上面描述的东西不是那么痛苦。

票数 5
EN

Stack Overflow用户

发布于 2013-04-05 09:05:37

你可以在IntelliJ IDEA和La Clojure上运行Compojure/Ring应用程序,步骤如下:

  1. 像往常一样使用IntelliJ IDEA的maven项目从leiningen的project.clj生成lein pom。您可能希望确保项目已加载到Clojure jar中,您可以使用Tools -> start Clojure Console启动Clojure REPL。
  2. 要将Clojure文件加载到REPL,请选择Tools -> Clojure REPL -> load file to REPL。

在此之后,要启动Ring应用程序,您只需加载一个调用ring.adapter.jetty/run-jetty的Clojure文件。

http://localhost:4004/上运行简单路由的代码如下所示:

代码语言:javascript
复制
(require 'compojure.core)
(require 'ring.adapter.jetty)

(ring.adapter.jetty/run-jetty
  (compojure.core/routes (compojure.core/ANY "/" [] "Hello world!"))
  {:port 4004 :join? false})

:join?选项很重要,如果将其设置为true (默认值),则REPL将不会接受更多命令。您的路由通常会更复杂,应该使用compojure.core/defroutes或其他方法。

您可以将这样的文件放在test路径中,这样在IDEA之外运行项目时就不会加载它。如果Clojure facet没有添加到您的模块中,您可以将其添加到文件->项目结构->模块中。

这里提供了一个完整的示例(包含jetty重新加载):https://github.com/tlipski/ganelon-demo -开发是使用IDEA完成的,真正的站点运行在Heroku:http://ganelon.herokuapp.com上。

调试使用上述技术运行的Clojure应用程序也是可能的-您只需:

  1. 在IntelliJ IDEA中创建远程调试运行配置文件
  2. 将上述配置文件(例如agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005)中适当的JVM选项添加到文件->项目结构->模块->您的模块-> Clojure facet -> JVM参数字段中的REPL设置中。
  3. Start REPL with Tools -> Start Clojure JVM#en0#。

在此之后,您可以添加断点、检查变量等。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15442367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档