Giter Site home page Giter Site logo

luminus-framework / luminus-template Goto Github PK

View Code? Open in Web Editor NEW
645.0 34.0 147.0 2.89 MB

a template project for the Luminus framework

Home Page: http://www.luminusweb.net/

License: MIT License

Clojure 90.65% HTML 8.09% CSS 0.68% Shell 0.20% Gherkin 0.12% Dockerfile 0.10% SCSS 0.09% Procfile 0.08%
webframework clojure

luminus-template's Introduction

Luminus-Template

Clojars Project

A Leiningen template for projects using Luminus.

The template initializes a base Luminus application.

Requirements

Luminus requires Leiningen version 2.5.3+

Usage

The Luminus template ships out of the box with your latest Leiningen. Run the following command to create a new Luminus project which uses the default profile template:

lein new luminus <your project name>

However, if you would like to attach further functionality to your template you can append profile hints for these extended features:

Profile Category Description Compare
+aleph server adds the Aleph server diff
+http-kit server adds the fast HTTP Kit web server to the project diff
+immutant server adds the immutant web server to the project. Note: this project is no longer funded/maintained diff
+jetty server adds the jetty web server to the project diff
+undertow server adds the ring-undertow server. This is a default server. diff
+h2 database adds db.core namespace and H2 database dependencies diff
+postgres database adds db.core namespace and PostgreSQL database dependencies diff
+mysql database adds db.core namespace and MySQL/MariaDB database dependencies diff
+mongodb database adds support for MongoDB using the Monger library diff
+datomic database adds support for the Datomic database diff
+sqlite database adds support for the SQLite database diff
+xtdb database adds support for the XTDB database diff
+graphql service API adds GraphQL support using Lacinia diff
+swagger service API adds support for Swagger-UI diff
+service service API removes static assets and the layout, adds Swagger support diff
+cljs ClojureScript adds ClojureScript support to the project diff
+reagent ClojureScript adds ClojureScript support with Reagent to the project along with an example diff
+re-frame ClojureScript adds ClojureScript support with re-frame to the project along with an example diff
+kee-frame ClojureScript adds kee-frame to the project diff
+shadow-cljs ClojureScript adds shadow-cljs support to the project, replacing the default cljsbuild and figwheel setup diff
+boot misc causes the project to run with Boot instead of Leiningen diff
+auth misc adds Buddy dependency and authentication middleware diff
+auth-jwe misc adds Buddy dependency with the JWE backend diff
+oauth misc adds OAuth dependency diff
+hoplon misc adds ClojureScript support with Hoplon to the project diff
+cucumber misc adds support for browser based UI testing with Cucumber and clj-webdriver diff
+sassc misc adds support for SASS/SCSS files using SassC command line compiler diff
+war misc adds support of building WAR archives for deployment to servers such as Apache Tomcat (should NOT be used for Immutant apps running on WildFly) diff
+site misc creates template for site using the specified database (H2 by default) and ClojureScript diff
+kibit misc adds lein-kibit plugin diff
+servlet misc adds middleware for handling Servlet context diff
+basic misc generates a bare bones luminus project diff
+async misc support for async (= 3 argument) ring handlers

To add a profile simply pass it as an argument after your application name, e.g.:

lein new luminus myapp +cljs

You can also mix multiple profiles when creating the application, e.g.:

lein new luminus myapp +auth +postgres

To build as a executable Java ARchive (JAR) standalone, run the following command:

lein uberjar

Or if using the +boot profile:

boot uberjar

To run the resulting standalone executable .jar file, do as you would with any other:

user$ java -jar target/myapp.jar
15-Sep-14 16:06:21 APc47d.4f39.65e6.uhn.ca INFO [myapp.handler] -
-=[myapp started successfully]=-
16:06:21.685 INFO  [org.projectodd.wunderboss.web.Web] (main) Registered web context /
15-Sep-14 16:06:21 APc47d.4f39.65e6.uhn.ca INFO [myapp.core] - server started on port: 3002

Performance Testing

The app can be stress tested by running the Apache benchmark command:

ab -c 10 -n 1000 http://127.0.0.1:3000/

The memory and CPU usage can be inspected by running either jconsole or jvisualvm and attaching them to a running Luminus server.

Async Ring Handlers

Using async ring handlers is possible but adds another layer of complexity. If things go wrong you'll see a blank screen, possibly without any error message.

The server (undertow, jetty, servlet) and every middleware in the chain has to support async request handling.

To enable: add :async? true to your config maps.

Tested combinations:

Other Templates

There is also a public comparison chart of the common templates.

License

Copyright © 2016 Dmitri Sotnikov

Distributed under the MIT License.

luminus-template's People

Contributors

alguevara7 avatar bitemyapp avatar boechat107 avatar cnly avatar computeremotion avatar dijonkitchen avatar donyorm avatar edtsech avatar haraldkoch avatar humorless avatar ikitommi avatar ingesolvoll avatar matsu911 avatar nfedyashev avatar nikolap avatar nrakochy avatar pez avatar priornix avatar punkisdead avatar pupeno avatar rterbush avatar seabre avatar smee avatar spariev avatar spradnyesh avatar supersym avatar tolitius avatar uhnuser avatar v-kolesnikov avatar yogthos avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

luminus-template's Issues

Loading too many POMs when starting a new project

This is when I tried luminus for the first time.

Oh, and this might be a hint when I asked for help initially ;)

<technomancy_> wink: seems like an aether bug. it should be able to determine the latest version by fetching the metadata.xml file only

But who knows, maybe you got an idea.

$ lein version
Leiningen 2.0.0 on Java 1.6.0_18 OpenJDK Client VM
$ lein new luminus simplex-clj +h2
Retrieving luminus/lein-template/0.1.1/lein-template-0.1.1.pom from clojars
Retrieving leinjacker/leinjacker/0.2.0/leinjacker-0.2.0.pom from clojars
Retrieving trammel/trammel/0.7.0/trammel-0.7.0.pom from clojars
Retrieving thneed/thneed/1.0.0-SNAPSHOT/thneed-1.0.0-20120330.013054-1.pom from clojars
Retrieving luminus/lein-template/0.1.2/lein-template-0.1.2.pom from clojars
Retrieving luminus/lein-template/0.1.5/lein-template-0.1.5.pom from clojars
Retrieving luminus/lein-template/0.1.6/lein-template-0.1.6.pom from clojars
Retrieving luminus/lein-template/0.1.7/lein-template-0.1.7.pom from clojars
Retrieving luminus/lein-template/0.1.8/lein-template-0.1.8.pom from clojars
Retrieving luminus/lein-template/0.2.0/lein-template-0.2.0.pom from clojars
Retrieving luminus/lein-template/0.2.1/lein-template-0.2.1.pom from clojars
Retrieving luminus/lein-template/0.2.2/lein-template-0.2.2.pom from clojars
Retrieving luminus/lein-template/0.2.3/lein-template-0.2.3.pom from clojars
Retrieving luminus/lein-template/0.2.4/lein-template-0.2.4.pom from clojars
Retrieving luminus/lein-template/0.2.5/lein-template-0.2.5.pom from clojars
Retrieving luminus/lein-template/0.2.6/lein-template-0.2.6.pom from clojars
Retrieving luminus/lein-template/0.2.7/lein-template-0.2.7.pom from clojars
Retrieving luminus/lein-template/0.2.8/lein-template-0.2.8.pom from clojars
Retrieving luminus/lein-template/0.2.9/lein-template-0.2.9.pom from clojars
Retrieving luminus/lein-template/0.3.0/lein-template-0.3.0.pom from clojars
Retrieving luminus/lein-template/0.3.1/lein-template-0.3.1.pom from clojars
Retrieving luminus/lein-template/0.3.2/lein-template-0.3.2.pom from clojars
Retrieving luminus/lein-template/0.3.3/lein-template-0.3.3.pom from clojars
Retrieving luminus/lein-template/0.3.4/lein-template-0.3.4.pom from clojars
Retrieving luminus/lein-template/0.3.5/lein-template-0.3.5.pom from clojars
Retrieving luminus/lein-template/0.3.6/lein-template-0.3.6.pom from clojars
Retrieving luminus/lein-template/0.3.7/lein-template-0.3.7.pom from clojars
Retrieving luminus/lein-template/0.3.8/lein-template-0.3.8.pom from clojars
Retrieving luminus/lein-template/0.3.9/lein-template-0.3.9.pom from clojars
Retrieving luminus/lein-template/0.4.0/lein-template-0.4.0.pom from clojars
Retrieving luminus/lein-template/0.4.1/lein-template-0.4.1.pom from clojars
Retrieving luminus/lein-template/0.4.2/lein-template-0.4.2.pom from clojars
Retrieving luminus/lein-template/0.4.3/lein-template-0.4.3.pom from clojars
Retrieving luminus/lein-template/0.4.4/lein-template-0.4.4.pom from clojars
Retrieving luminus/lein-template/0.4.5/lein-template-0.4.5.pom from clojars
Retrieving luminus/lein-template/0.4.6/lein-template-0.4.6.pom from clojars
Retrieving luminus/lein-template/0.5.0/lein-template-0.5.0.pom from clojars
Retrieving luminus/lein-template/0.5.1/lein-template-0.5.1.pom from clojars
Retrieving luminus/lein-template/0.5.2/lein-template-0.5.2.pom from clojars
Retrieving luminus/lein-template/0.5.3/lein-template-0.5.3.pom from clojars
Retrieving thneed/thneed/1.0.0-SNAPSHOT/thneed-1.0.0-20120330.013054-1.jar from clojars
Retrieving luminus/lein-template/0.5.3/lein-template-0.5.3.jar from clojars
Retrieving leinjacker/leinjacker/0.2.0/leinjacker-0.2.0.jar from clojars
Retrieving trammel/trammel/0.7.0/trammel-0.7.0.jar from clojars
Generating a lovely new Luminus project named simplex-clj...

Provide a main method explictly?

Wouldn't it be better to define a main method explicitly instead of relying on lein-ring to implicitly inject it?

First reason is "explicit is better than implicit" and all that. Second reason is it seems with leiningen 2.5.0 there has been an issue with lein ring uberjar weavejester/lein-ring#126.

For the mean time, I've added this to my project:

(ns myproject.core
  (:require [myproject.repl :refer [start-server]])
  (:gen-class))

(defn -main []
  (start-server))

Is this correct? Or is start-server not recommended for production?

cljsbuild clean depricated and clean-tagets

Version 1.0.5 of cljsbuild has depricated lein cljsbuild clean and recommends adding the location of the js files to clean-targets so that you can clean compiled js files with 'lein clean'. While the luminus-templates are still using cljsbuild 1.0.4, when you run lein ancient to identify newer libraries, it will list cljsbuild. Therefore, it is possible users will upgrade cljsbuild and then will see the deprication notice and may not know how to clean out old js files easily. I found adding

:clean-targets ^{:protect false} ["resources/public/js"]

to project.clj seems to work

License question

Since the template inserts bits of itself into my app, does this make my app fall under the luminus-template copyright and the EPL? Or am I free to release apps started with the template under any license I please?

I ask because I'm planning to open-source a little thing I made, and not sure what to put in the License section of the readme. I usually MIT-license my own stuff.

"No such var: clojure.core.cache/through" when compiling handler.clj

When I try to lein repl or lein ring server a project, I'm getting this stacktrace:

I was working on a fork just trying something out, so I lein install my local copy. I proceed to create a test project and everything went well, but when I did lein repl, this error shows up. I thought maybe my changes caused it, so I reverted by removing the template project from ~/.m2/repository and then trying again. Here's the result:

$ lein new luminus test
Retrieving luminus/lein-template/1.11.5/lein-template-1.11.5.jar from clojars
Generating a lovely new Luminus project named test...
$ lein repl
Compiling test.handler
Exception in thread "main" java.lang.RuntimeException: No such var: clojure.core.cache/through, compiling:(clojure/core/memoize.clj:52:3)
        at clojure.lang.Compiler.analyze(Compiler.java:6380)
        at clojure.lang.Compiler.analyze(Compiler.java:6322)
        at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3573)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6562)
        at clojure.lang.Compiler.analyze(Compiler.java:6361)
        at clojure.lang.Compiler.analyze(Compiler.java:6322)
        at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5708)
        at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5139)
        at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3751)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6558)
        at clojure.lang.Compiler.analyze(Compiler.java:6361)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6548)
        at clojure.lang.Compiler.analyze(Compiler.java:6361)
        at clojure.lang.Compiler.access$100(Compiler.java:37)
        at clojure.lang.Compiler$DefExpr$Parser.parse(Compiler.java:529)
        at clojure.lang.Compiler.analyzeSeq(Compiler.java:6560)
        at clojure.lang.Compiler.analyze(Compiler.java:6361)
        at clojure.lang.Compiler.analyze(Compiler.java:6322)
        at clojure.lang.Compiler.compile1(Compiler.java:7148)
        at clojure.lang.Compiler.compile(Compiler.java:7219)
        at clojure.lang.RT.compile(RT.java:398)
        at clojure.lang.RT.load(RT.java:438)
        at clojure.lang.RT.load(RT.java:411)
        at clojure.core$load$fn__5018.invoke(core.clj:5530)
        at clojure.core$load.doInvoke(core.clj:5529)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invoke(core.clj:5336)
        at clojure.core$load_lib$fn__4967.invoke(core.clj:5375)
        at clojure.core$load_lib.doInvoke(core.clj:5374)
        at clojure.lang.RestFn.applyTo(RestFn.java:142)
        at clojure.core$apply.invoke(core.clj:619)
        at clojure.core$load_libs.doInvoke(core.clj:5413)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:621)
        at clojure.core$use.doInvoke(core.clj:5507)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at ring.middleware.format_response$loading__4910__auto__.invoke(format_response.clj:1)
        at clojure.lang.AFn.applyToHelper(AFn.java:159)
        at clojure.lang.AFn.applyTo(AFn.java:151)
        at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3458)
        at clojure.lang.Compiler.compile1(Compiler.java:7153)
        at clojure.lang.Compiler.compile1(Compiler.java:7143)
        at clojure.lang.Compiler.compile(Compiler.java:7219)
        at clojure.lang.RT.compile(RT.java:398)
        at clojure.lang.RT.load(RT.java:438)
        at clojure.lang.RT.load(RT.java:411)
        at clojure.core$load$fn__5018.invoke(core.clj:5530)
        at clojure.core$load.doInvoke(core.clj:5529)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invoke(core.clj:5336)
        at clojure.core$load_lib$fn__4967.invoke(core.clj:5375)
        at clojure.core$load_lib.doInvoke(core.clj:5374)
        at clojure.lang.RestFn.applyTo(RestFn.java:142)
        at clojure.core$apply.invoke(core.clj:619)
        at clojure.core$load_libs.doInvoke(core.clj:5417)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:619)
        at clojure.core$require.doInvoke(core.clj:5496)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at ring.middleware.format$loading__4910__auto__.invoke(format.clj:1)
        at clojure.lang.AFn.applyToHelper(AFn.java:159)
        at clojure.lang.AFn.applyTo(AFn.java:151)
        at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3458)
        at clojure.lang.Compiler.compile1(Compiler.java:7153)
        at clojure.lang.Compiler.compile1(Compiler.java:7143)
        at clojure.lang.Compiler.compile(Compiler.java:7219)
        at clojure.lang.RT.compile(RT.java:398)
        at clojure.lang.RT.load(RT.java:438)
        at clojure.lang.RT.load(RT.java:411)
        at clojure.core$load$fn__5018.invoke(core.clj:5530)
        at clojure.core$load.doInvoke(core.clj:5529)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invoke(core.clj:5336)
        at clojure.core$load_lib$fn__4967.invoke(core.clj:5375)
        at clojure.core$load_lib.doInvoke(core.clj:5374)
        at clojure.lang.RestFn.applyTo(RestFn.java:142)
        at clojure.core$apply.invoke(core.clj:619)
        at clojure.core$load_libs.doInvoke(core.clj:5413)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:621)
        at clojure.core$use.doInvoke(core.clj:5507)
        at clojure.lang.RestFn.invoke(RestFn.java:930)
        at noir.util.middleware$loading__4910__auto__.invoke(middleware.clj:1)
        at clojure.lang.AFn.applyToHelper(AFn.java:159)
        at clojure.lang.AFn.applyTo(AFn.java:151)
        at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3458)
        at clojure.lang.Compiler.compile1(Compiler.java:7153)
        at clojure.lang.Compiler.compile1(Compiler.java:7143)
        at clojure.lang.Compiler.compile(Compiler.java:7219)
        at clojure.lang.RT.compile(RT.java:398)
        at clojure.lang.RT.load(RT.java:438)
        at clojure.lang.RT.load(RT.java:411)
        at clojure.core$load$fn__5018.invoke(core.clj:5530)
        at clojure.core$load.doInvoke(core.clj:5529)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invoke(core.clj:5336)
        at clojure.core$load_lib$fn__4967.invoke(core.clj:5375)
        at clojure.core$load_lib.doInvoke(core.clj:5374)
        at clojure.lang.RestFn.applyTo(RestFn.java:142)
        at clojure.core$apply.invoke(core.clj:619)
        at clojure.core$load_libs.doInvoke(core.clj:5413)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:619)
        at clojure.core$require.doInvoke(core.clj:5496)
        at clojure.lang.RestFn.invoke(RestFn.java:619)
        at test.handler$loading__4910__auto__.invoke(handler.clj:1)
        at clojure.lang.AFn.applyToHelper(AFn.java:159)
        at clojure.lang.AFn.applyTo(AFn.java:151)
        at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3458)
        at clojure.lang.Compiler.compile1(Compiler.java:7153)
        at clojure.lang.Compiler.compile1(Compiler.java:7143)
        at clojure.lang.Compiler.compile(Compiler.java:7219)
        at clojure.lang.RT.compile(RT.java:398)
        at clojure.lang.RT.load(RT.java:438)
        at clojure.lang.RT.load(RT.java:411)
        at clojure.core$load$fn__5018.invoke(core.clj:5530)
        at clojure.core$load.doInvoke(core.clj:5529)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invoke(core.clj:5336)
        at clojure.core$compile$fn__5023.invoke(core.clj:5541)
        at clojure.core$compile.invoke(core.clj:5540)
        at user$eval1909.invoke(form-init8504690878451559471.clj:1)
        at clojure.lang.Compiler.eval(Compiler.java:6619)
        at clojure.lang.Compiler.eval(Compiler.java:6609)
        at clojure.lang.Compiler.load(Compiler.java:7064)
        at clojure.lang.Compiler.loadFile(Compiler.java:7020)
        at clojure.main$load_script.invoke(main.clj:294)
        at clojure.main$init_opt.invoke(main.clj:299)
        at clojure.main$initialize.invoke(main.clj:327)
        at clojure.main$null_opt.invoke(main.clj:362)
        at clojure.main$main.doInvoke(main.clj:440)
        at clojure.lang.RestFn.invoke(RestFn.java:421)
        at clojure.lang.Var.invoke(Var.java:419)
        at clojure.lang.AFn.applyToHelper(AFn.java:163)
        at clojure.lang.Var.applyTo(Var.java:532)
        at clojure.main.main(main.java:37)
Caused by: java.lang.RuntimeException: No such var: clojure.core.cache/through
        at clojure.lang.Util.runtimeException(Util.java:219)
        at clojure.lang.Compiler.resolveIn(Compiler.java:6848)
        at clojure.lang.Compiler.resolve(Compiler.java:6818)
        at clojure.lang.Compiler.analyzeSymbol(Compiler.java:6779)
        at clojure.lang.Compiler.analyze(Compiler.java:6343)
        ... 135 more
Compilation failed: Subprocess failed

With some digging, it seems it's lib-noir that depends on ring-middleware-format which in turn depends on clojure.core.memoize which in turn depends on clojure.core.cache. Adding org.clojure/core.cache to project.clj doesn't seem to fix the issue.

Note that prior to trying out my fork, everything was working fine. Maybe an old version of some dependency got installed when I tried out my fork?

Warnings in cljsbuild due to old core.async

Running with template based on latest luminus-template repo installed locally.

When doing lein cljsbuild, you get the following warnings

WARNING: Use of undeclared Var cljs.core.async/do-alts at line 62 file:/home/tcross/.m2/repository/org/clojure/core.async/0.1.303.0-886421-alpha/core.async-0.1.303.0-886421-alpha.jar!/cljs/core/async/impl/ioc_helpers.cljs
WARNING: Bad method signature in protocol implementation, impl/Handler does not declare method called lock-id at line 214 file:/home/tcross/.m2/repository/org/clojure/core.async/0.1.303.0-886421-alpha/core.async-0.1.303.0-886421-alpha.jar!/cljs/core/async.cljs
WARNING: Use of undeclared Var cljs.core.async.impl.protocols/lock-id at line 217 file:/home/tcross/.m2/repository/org/clojure/core.async/0.1.303.0-886421-alpha/core.async-0.1.303.0-886421-alpha.jar!/cljs/core/async.cljs
WARNING: Bad method signature in protocol implementation, impl/Handler does not declare method called lock-id at line 214 resources/public/js/out/cljs/core/async.cljs
WARNING: Use of undeclared Var cljs.core.async.impl.protocols/lock-id at line 217 resources/public/js/out/cljs/core/async.cljs

It seems (guess) that one of the dependencies is pulling in an older version of core.async. Adding

[org.clojure/core.async "0.1.346.0-17112a-alpha"]

to project.clj dependencies seems to fix this.

Various whitespace issues

Some files are suffering from:

  1. Windows line endings
  2. Trailing whitespace
  3. Inconsistent use of spaces and tabs

Zip File is Empty

This is probably something stupid, so i apologize ahead of time...

Using oracle java 1.7.0_55

I ran lein new luminus myapp
i then cd'd to the myapp subdirectory and ran lein ring server

it gave me the following:

java.util.zip.ZipException: zip file is empty
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.(ZipFile.java:215)
at java.util.zip.ZipFile.(ZipFile.java:145)
at java.util.jar.JarFile.(JarFile.java:153)
at java.util.jar.JarFile.(JarFile.java:117)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at clojure.lang.Reflector.invokeConstructor(Reflector.java:180)
at leiningen.core.classpath$extract_native_deps.invoke(classpath.clj:43)
at clojure.lang.AFn.applyToHelper(AFn.java:167)
at clojure.lang.AFn.applyTo(AFn.java:151)
at clojure.core$apply.invoke(core.clj:617)
at leiningen.core.classpath$when_stale.doInvoke(classpath.clj:66)
at clojure.lang.RestFn.invoke(RestFn.java:580)
at leiningen.core.classpath$resolve_dependencies.doInvoke(classpath.clj:231)
at clojure.lang.RestFn.invoke(RestFn.java:425)
at leiningen.core.classpath$get_classpath.invoke(classpath.clj:274)
at leiningen.ring.server$classpath_dirs.invoke(server.clj:13)
at leiningen.ring.server$reload_paths.invoke(server.clj:27)
at leiningen.ring.server$server_task.invoke(server.clj:61)
at leiningen.ring.server$server.invoke(server.clj:78)
at clojure.lang.AFn.applyToHelper(AFn.java:161)
at clojure.lang.AFn.applyTo(AFn.java:151)
at clojure.core$apply.invoke(core.clj:619)
at leiningen.ring$ring.doInvoke(ring.clj:23)
at clojure.lang.RestFn.invoke(RestFn.java:425)
at clojure.lang.Var.invoke(Var.java:419)
at clojure.lang.AFn.applyToHelper(AFn.java:163)
at clojure.lang.Var.applyTo(Var.java:532)
at clojure.core$apply.invoke(core.clj:619)
at leiningen.core.main$resolve_task$fn__2171.doInvoke(main.clj:149)
at clojure.lang.RestFn.applyTo(RestFn.java:139)
at clojure.lang.AFunction$1.doInvoke(AFunction.java:29)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invoke(core.clj:619)
at leiningen.core.main$apply_task.invoke(main.clj:189)
at lein_environ.plugin$write_env_to_file.invoke(plugin.clj:11)
at clojure.lang.Var.invoke(Var.java:427)
at clojure.lang.AFn.applyToHelper(AFn.java:172)
at clojure.lang.Var.applyTo(Var.java:532)
at clojure.core$apply.invoke(core.clj:619)
at robert.hooke$compose_hooks$fn__29.doInvoke(hooke.clj:40)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invoke(core.clj:617)
at robert.hooke$run_hooks.invoke(hooke.clj:46)
at robert.hooke$prepare_for_hooks$fn__34$fn__35.doInvoke(hooke.clj:54)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.lang.AFunction$1.doInvoke(AFunction.java:29)
at clojure.lang.RestFn.invoke(RestFn.java:436)
at leiningen.core.main$_main$fn__2232.invoke(main.clj:253)
at leiningen.core.main$_main.doInvoke(main.clj:243)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at clojure.lang.Var.invoke(Var.java:419)
at clojure.lang.AFn.applyToHelper(AFn.java:163)
at clojure.lang.Var.applyTo(Var.java:532)
at clojure.core$apply.invoke(core.clj:617)
at clojure.main$main_opt.invoke(main.clj:335)
at clojure.main$main.doInvoke(main.clj:440)
at clojure.lang.RestFn.invoke(RestFn.java:457)
at clojure.lang.Var.invoke(Var.java:427)
at clojure.lang.AFn.applyToHelper(AFn.java:172)
at clojure.lang.Var.applyTo(Var.java:532)
at clojure.main.main(main.java:37)

...please help...thanks!

Templates directory location

/dev/guestbook/resources/templates/templates/base.html (No such file or directory)

It is looking for /templates/templates/ directory while rendering the hone page.

seems to be an issue

Support for +friend

It'd be really nice to have a +friend option, every time I start a luminus project the first thing I always end up doing is adding friend anyways!

I'm sure a lot of others would love this as well :)

+Swagger breaks templates:

Just a heads up.

Exception in thread "main" java.lang.IllegalArgumentException: No value supplied for key: {:formats (:json-kw :yaml-kw :edn :transit-json :transit-msgpack), :handle-error #<middleware$handle_req_error compojure.api.middleware$handle_req_error@7db8da6c>}, compiling:(services.clj:12:1)
    at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3558)
    at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3552)
    at clojure.lang.Compiler$DefExpr.eval(Compiler.java:417)
    at clojure.lang.Compiler.eval(Compiler.java:6708)
    at clojure.lang.Compiler.load(Compiler.java:7130)
    at clojure.lang.RT.loadResourceScript(RT.java:370)
    at clojure.lang.RT.loadResourceScript(RT.java:361)
    at clojure.lang.RT.load(RT.java:440)
    at clojure.lang.RT.load(RT.java:411)
    at clojure.core$load$fn__5066.invoke(core.clj:5641)
    at clojure.core$load.doInvoke(core.clj:5640)
    at clojure.lang.RestFn.invoke(RestFn.java:408)
    at clojure.core$load_one.invoke(core.clj:5446)
    at clojure.core$load_lib$fn__5015.invoke(core.clj:5486)
    at clojure.core$load_lib.doInvoke(core.clj:5485)
    at clojure.lang.RestFn.applyTo(RestFn.java:142)
    at clojure.core$apply.invoke(core.clj:626)
    at clojure.core$load_libs.doInvoke(core.clj:5524)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.core$apply.invoke(core.clj:626)
    at clojure.core$require.doInvoke(core.clj:5607)
    at clojure.lang.RestFn.invoke(RestFn.java:930)
    at wtzzz.handler$eval3353$loading__4958__auto____3354.invoke(handler.clj:1)
    at wtzzz.handler$eval3353.invoke(handler.clj:1)
    at clojure.lang.Compiler.eval(Compiler.java:6703)
    at clojure.lang.Compiler.eval(Compiler.java:6692)
    at clojure.lang.Compiler.load(Compiler.java:7130)
    at clojure.lang.RT.loadResourceScript(RT.java:370)
    at clojure.lang.RT.loadResourceScript(RT.java:361)
    at clojure.lang.RT.load(RT.java:440)
    at clojure.lang.RT.load(RT.java:411)
    at clojure.core$load$fn__5066.invoke(core.clj:5641)
    at clojure.core$load.doInvoke(core.clj:5640)
    at clojure.lang.RestFn.invoke(RestFn.java:408)
    at clojure.core$load_one.invoke(core.clj:5446)
    at clojure.core$load_lib$fn__5015.invoke(core.clj:5486)
    at clojure.core$load_lib.doInvoke(core.clj:5485)
    at clojure.lang.RestFn.applyTo(RestFn.java:142)
    at clojure.core$apply.invoke(core.clj:626)
    at clojure.core$load_libs.doInvoke(core.clj:5524)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.core$apply.invoke(core.clj:626)
    at clojure.core$require.doInvoke(core.clj:5607)
    at clojure.lang.RestFn.invoke(RestFn.java:457)
    at user$eval5.invoke(form-init1625203686011494445.clj:1)
    at clojure.lang.Compiler.eval(Compiler.java:6703)
    at clojure.lang.Compiler.eval(Compiler.java:6692)
    at clojure.lang.Compiler.load(Compiler.java:7130)
    at clojure.lang.Compiler.loadFile(Compiler.java:7086)
    at clojure.main$load_script.invoke(main.clj:274)
    at clojure.main$init_opt.invoke(main.clj:279)
    at clojure.main$initialize.invoke(main.clj:307)
    at clojure.main$null_opt.invoke(main.clj:342)
    at clojure.main$main.doInvoke(main.clj:420)
    at clojure.lang.RestFn.invoke(RestFn.java:421)
    at clojure.lang.Var.invoke(Var.java:383)
    at clojure.lang.AFn.applyToHelper(AFn.java:156)
    at clojure.lang.Var.applyTo(Var.java:700)
    at clojure.main.main(main.java:37)
Caused by: java.lang.IllegalArgumentException: No value supplied for key: {:formats (:json-kw :yaml-kw :edn :transit-json :transit-msgpack), :handle-error #<middleware$handle_req_error compojure.api.middleware$handle_req_error@7db8da6c>}
    at clojure.lang.PersistentHashMap.create(PersistentHashMap.java:77)
    at ring.middleware.format_params$wrap_restful_params.doInvoke(format_params.clj:251)
    at clojure.lang.RestFn.invoke(RestFn.java:423)
    at compojure.api.middleware$api_middleware.doInvoke(middleware.clj:140)
    at clojure.lang.RestFn.applyTo(RestFn.java:139)
    at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3553)
    ... 58 more
Subprocess failed

Duplicated entries in project.clj :dependencies

When creating a new luminus project with the options lein new luminus foosite +cljs +site +http-kit I'm seeing 3 duplicated entries in the project.cljs file under the :dependencies key:

[com.h2database/h2 "1.3.173"]
[korma "0.3.0-RC6"]
[log4j
"1.2.17"
:exclusions
[javax.mail/mail
javax.jms/jms
com.sun.jdmk/jmxtools
com.sun.jmx/jmxri]]
[com.h2database/h2 "1.3.173"]
[korma "0.3.0-RC6"]
[log4j
"1.2.17"
:exclusions
[javax.mail/mail
javax.jms/jms
com.sun.jdmk/jmxtools
com.sun.jmx/jmxri]]
[http-kit "2.1.11"]

Error compiling myproject.views.layout

I had an issue after creating a project using the following command: lein new luminus myproject. When compiling I received the following exception:

Compiling myproject.views.layout
Exception in thread "main" java.lang.ClassNotFoundException:     compojure.response.Renderable, compiling:(layout.clj:1:1)
    at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3463)
    at clojure.lang.Compiler.compile1(Compiler.java:7153)
    at clojure.lang.Compiler.compile1(Compiler.java:7143)
    at clojure.lang.Compiler.compile(Compiler.java:7219)
    at clojure.lang.RT.compile(RT.java:398)

It worked fine pushing the default template project to Heroku so it's likely something with my set up:

$ lein version
Leiningen 2.3.2 on Java 1.7.0_25 OpenJDK 64-Bit Server VM

If I replace:

(:import compojure.response.Renderable)

with:

(:require
        ....
        [compojure.response :refer [Renderable]])

it works as expected.

piggieback dependency missing

With the 2.3.9 template, I had to add [com.cemerick/piggieback "0.2.1"] to :dev :dependencies to get {{projectname}}.dev/browser-repl working correctly.

Problem with JSON responses.

I've created project from template and tried to add some REST API method.:

(defroutes home-routes
  (GET "/tags" [] (db/find-tags-info)))

Method (db/find-tags-info) works fine and was tested.
During processing response I have an exceptions:

java.lang.IllegalArgumentException: Key must be integer
             APersistentVector.java:265 clojure.lang.APersistentVector.invoke
                        response.clj:27 compojure.response/eval1340[fn]
                        response.clj:10 compojure.response/eval1301[fn]
                            core.clj:94 compojure.core/make-route[fn]
                            core.clj:40 compojure.core/if-route[fn]
                            core.clj:25 compojure.core/if-method[fn]
                           core.clj:107 compojure.core/routing[fn]
                          core.clj:2443 clojure.core/some
                           core.clj:107 compojure.core/routing
                        RestFn.java:139 clojure.lang.RestFn.applyTo
                           core.clj:619 clojure.core/apply
                           core.clj:112 compojure.core/routes[fn]
                           core.clj:107 compojure.core/routing[fn]
                          core.clj:2443 clojure.core/some
                           core.clj:107 compojure.core/routing
                        RestFn.java:139 clojure.lang.RestFn.applyTo
                           core.clj:619 clojure.core/apply
                           core.clj:112 compojure.core/routes[fn]
                      middleware.clj:44 noir.util.middleware/wrap-request-map[fn]
                  keyword_params.clj:32 ring.middleware.keyword-params/wrap-keyword-params[fn]
                   nested_params.clj:70 ring.middleware.nested-params/wrap-nested-params[fn]
                          params.clj:58 ring.middleware.params/wrap-params[fn]
                      middleware.clj:12 hiccup.middleware/wrap-base-url[fn]
                   format_params.clj:98 ring.middleware.format-params/wrap-format-params[fn]
                   format_params.clj:98 ring.middleware.format-params/wrap-format-params[fn]
                format_response.clj:113 ring.middleware.format-response/wrap-format-response[fn]
               multipart_params.clj:107 ring.middleware.multipart-params/wrap-multipart-params[fn]
                     validation.clj:140 noir.validation/wrap-noir-validation[fn]
                         cookies.clj:72 noir.cookies/noir-cookies[fn]
                        cookies.clj:171 ring.middleware.cookies/wrap-cookies[fn]
                        session.clj:142 noir.session/noir-flash[fn]
                           flash.clj:31 ring.middleware.flash/wrap-flash[fn]
                         session.clj:97 noir.session/noir-session[fn]
                         session.clj:85 ring.middleware.session/wrap-session[fn]
                           Var.java:415 clojure.lang.Var.invoke
                          reload.clj:18 ring.middleware.reload/wrap-reload[fn]
                      stacktrace.clj:17 ring.middleware.stacktrace/wrap-stacktrace-log[fn]
                      stacktrace.clj:80 ring.middleware.stacktrace/wrap-stacktrace-web[fn]
                           jetty.clj:18 ring.adapter.jetty/proxy-handler[fn]
                       (Unknown Source) ring.adapter.jetty.proxy$org.eclipse.jetty.server.handler.AbstractHandler$0.handle
                HandlerWrapper.java:116 org.eclipse.jetty.server.handler.HandlerWrapper.handle
                        Server.java:363 org.eclipse.jetty.server.Server.handle
        AbstractHttpConnection.java:483 org.eclipse.jetty.server.AbstractHttpConnection.handleRequest
        AbstractHttpConnection.java:920 org.eclipse.jetty.server.AbstractHttpConnection.headerComplete
        AbstractHttpConnection.java:982 org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete
                    HttpParser.java:635 org.eclipse.jetty.http.HttpParser.parseNext
                    HttpParser.java:235 org.eclipse.jetty.http.HttpParser.parseAvailable
            AsyncHttpConnection.java:82 org.eclipse.jetty.server.AsyncHttpConnection.handle
         SelectChannelEndPoint.java:628 org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle
          SelectChannelEndPoint.java:52 org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run
              QueuedThreadPool.java:608 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob
              QueuedThreadPool.java:543 org.eclipse.jetty.util.thread.QueuedThreadPool$3.run
                        Thread.java:744 java.lang.Thread.run

But it works fine, if I wrap response using noir.response "json" method:

(defroutes home-routes
  (GET "/tags" [] (response/json (db/find-tags-info))))

I have the following App configuration:

(def app
  (middleware/app-handler
    ;; add your application routes here
    [home-routes app-routes]
    ;; add custom middleware here
    :middleware []
    ;; add access rules here
    :access-rules []
    ;; serialize/deserialize the following data formats
    ;; available formats:
    ;; :json :json-kw :yaml :yaml-kw :edn :yaml-in-html
    :formats [:json-kw :edn]))

Could you please help me? I thought it should work out of box (:formats [:json-kw :edn])

can't run lein ring server on a new luminus project

 $ > lein new luminus PROJECTNAME
 $ > cd PROJECTNAME
 $ > lein ring server
 Exception in thread "main" java.io.FileNotFoundException: Could not locate PROJECTNAME/net/handler__init.class or PROJECTNAME/net/handler.clj on classpath: , compiling:(/tmp/form-init6203321364378798674.clj:1:90)
   at clojure.lang.Compiler.load(Compiler.java:7142)
   at clojure.lang.Compiler.loadFile(Compiler.java:7086)
   at clojure.main$load_script.invoke(main.clj:274)
   at clojure.main$init_opt.invoke(main.clj:279)
   at clojure.main$initialize.invoke(main.clj:307)
   at clojure.main$null_opt.invoke(main.clj:342)
   at clojure.main$main.doInvoke(main.clj:420)
   at clojure.lang.RestFn.invoke(RestFn.java:421)
   at clojure.lang.Var.invoke(Var.java:383)
   at clojure.lang.AFn.applyToHelper(AFn.java:156)
   at clojure.lang.Var.applyTo(Var.java:700)
   at clojure.main.main(main.java:37)
 Caused by: java.io.FileNotFoundException: Could not locate PROJECTNAME/net/handler__init.class or PROJECTNAME/net/handler.clj on classpath: 
   at clojure.lang.RT.load(RT.java:443)
   at clojure.lang.RT.load(RT.java:411)
   at clojure.core$load$fn__5066.invoke(core.clj:5641)
   at clojure.core$load.doInvoke(core.clj:5640)
   at clojure.lang.RestFn.invoke(RestFn.java:408)
   at clojure.core$load_one.invoke(core.clj:5446)
   at clojure.core$load_lib$fn__5015.invoke(core.clj:5486)
   at clojure.core$load_lib.doInvoke(core.clj:5485)
   at clojure.lang.RestFn.applyTo(RestFn.java:142)
   at clojure.core$apply.invoke(core.clj:626)
   at clojure.core$load_libs.doInvoke(core.clj:5524)
   at clojure.lang.RestFn.applyTo(RestFn.java:137)
   at clojure.core$apply.invoke(core.clj:626)
   at clojure.core$require.doInvoke(core.clj:5607)
   at clojure.lang.RestFn.invoke(RestFn.java:457)
   at user$eval5.invoke(form-init6203321364378798674.clj:1)
   at clojure.lang.Compiler.eval(Compiler.java:6703)
   at clojure.lang.Compiler.eval(Compiler.java:6692)
   at clojure.lang.Compiler.load(Compiler.java:7130)
   ... 11 more
 Subprocess failed

Combination of profiles "+auth +mongodb +cljs" creates {{sanitized}} directory in src/

$ ~/code » lein new luminus never-skip +auth +mongodb +cljs
Retrieving luminus/lein-template/2.0.3/lein-template-2.0.3.pom from clojars
Retrieving luminus/lein-template/2.0.3/lein-template-2.0.3.jar from clojars
Generating a Leiningen project.
$ ~/code » cd never-skip
$ code/never-skip » ls
Procfile    README.md   env         project.clj resources   src         src-cljs    test
code/never-skip » ls src
never_skip    {{sanitized}}
$ code/never-skip » tree src/\{\{sanitized\}\}
src/{{sanitized}}
└── db
    └── core.clj

Boilerplate tests fail

Maybe this is a newbie mistake, but I get errors if I do the following:

lein new luminus myapp
cd myapp
lein test

Specifically the HTML fixture embedded in the default test doesn't seem to match the actual homepage of the boilerplate site.

Support for +kioo

Kioo is on my list of requirements for a cljs app framework. If no one has started this, I will add it to my list.

Default Template & Heroku Error R10 (Boot timeout)

There's a very irritating "feature" of Heroku that insists that an app launches within 60 seconds. The web is littered with reports of people getting bitten in the ass by the constraint.

Turns out that by creating a brand spanking new empty Luminus project with something like lein new luminus my-svelte-app and deploying directly to Heroku a minute later it triggers this same error and the app crashes (abridged logs below).

I've attempted to cut off some of the dependencies but am struggling (read: failing) I was hoping you might be able to offer some guidance on how to create a 'lite' default version to build upon?

2015-03-04T21:14:28.391097+00:00 heroku[api]: Deploy d43f966 by [email protected]
2015-03-04T21:14:28.391097+00:00 heroku[api]: Release v5 created by [email protected]
2015-03-04T21:14:28.862448+00:00 heroku[web.1]: State changed from crashed to starting
2015-03-04T21:14:37.187600+00:00 heroku[web.1]: Starting process with command `lein with-profile production trampoline ring server`
2015-03-04T21:14:38.579568+00:00 app[web.1]: Downloading Leiningen to .lein/leiningen-2.5.1-standalone.jar now...
2015-03-04T21:14:40.787587+00:00 app[web.1]: Picked up JAVA_TOOL_OPTIONS: -Xmx384m -Xss512k -Dfile.encoding=UTF-8 -Djava.rmi.server.useCodebaseOnly=true
2015-03-04T21:14:44.021821+00:00 app[web.1]: Retrieving lein-ring/lein-ring/0.9.1/lein-ring-0.9.1.pom from clojars
2015-03-04T21:14:44.268971+00:00 app[web.1]: Retrieving org/clojure/pom.contrib/0.1.2/pom.contrib-0.1.2.pom from central
2015-03-04T21:14:44.368118+00:00 app[web.1]: Retrieving org/clojure/clojure/1.4.0/clojure-1.4.0.pom from central
2015-03-04T21:14:44.567309+00:00 app[web.1]: Retrieving leinjacker/leinjacker/0.4.2/leinjacker-0.4.2.pom from clojars
2015-03-04T21:14:44.230421+00:00 app[web.1]: Retrieving org/clojure/data.xml/0.0.8/data.xml-0.0.8.pom from central
2015-03-04T21:14:44.319768+00:00 app[web.1]: Retrieving org/sonatype/oss/oss-parent/7/oss-parent-7.pom from central
2015-03-04T21:14:44.406838+00:00 app[web.1]: Retrieving org/sonatype/oss/oss-parent/5/oss-parent-5.pom from central
2015-03-04T21:14:44.730075+00:00 app[web.1]: Retrieving org/clojure/core.contracts/0.0.1/core.contracts-0.0.1.pom from central
2015-03-04T21:14:44.814063+00:00 app[web.1]: Retrieving org/clojure/core.unify/0.5.3/core.unify-0.5.3.pom from central
2015-03-04T21:14:44.763469+00:00 app[web.1]: Retrieving org/clojure/pom.contrib/0.0.26/pom.contrib-0.0.26.pom from central
2015-03-04T21:14:44.966550+00:00 app[web.1]: Retrieving lein-environ/lein-environ/1.0.0/lein-environ-1.0.0.pom from clojars
2015-03-04T21:14:45.240801+00:00 app[web.1]: Retrieving lein-ancient/lein-ancient/0.6.0/lein-ancient-0.6.0.pom from clojars
2015-03-04T21:14:45.524140+00:00 app[web.1]: Retrieving rewrite-clj/rewrite-clj/0.4.4/rewrite-clj-0.4.4.pom from clojars

.... snip ...

2015-03-04T21:16:46.029781+00:00 app[web.1]: Retrieving riddley/riddley/0.1.7/riddley-0.1.7.jar from clojars
2015-03-04T21:16:46.029618+00:00 app[web.1]: Retrieving clj-tuple/clj-tuple/0.1.7/clj-tuple-0.1.7.jar from clojars
2015-03-04T21:16:50.451538+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2015-03-04T21:16:50.451538+00:00 heroku[web.1]: Stopping process with SIGKILL
2015-03-04T21:16:51.439114+00:00 heroku[web.1]: Process exited with status 137
2015-03-04T21:16:51.444494+00:00 heroku[web.1]: State changed from starting to crashed

Unrecognized feature error with +dailycred or +site-dailycred

With the command lein new luminus mysite +cljs +site +dailycred +http-kit there's a java.lang.Exception: unrecognized feature: +dailycred thrown with a long stacktrace.

And with the command lein new luminus mysite +cljs +site-dailycred +http-kit there's a calmer error message of simply Unrecognized options: +site-dailycred

Looking in src/leiningen/new/luminus.clj I'm not sure why either option causes problems, they're both in the file...

Problem when compiling clojurescript tutorial

Hi!

I have vanilla OS X Yosemite.
I ran the following commands:

$ brew install leiningen
$ lein new luminus my-app +cljs +h2
$ lein cljsbuild auto

I encountered an error:

Caused by: java.util.regex.PatternSyntaxException: Unknown inline modifier near index 2
(?U)^[\p{Alpha}_$]
^

What is the cause of this error?

Integrating Friend and Luminus causes a clojure.core.memoize error

Attempting to add

[cemerick.friend :as friend](cemerick.friend [workflows :as workflows]
[credentials :as creds])

to my luminus handler namespace causes the compiler to complain (snipped)
... namespace 'clojure.core.memoize' not found ...

Googling then adding the solution found at this LightTable issue fixes it:
LightTable/LightTable#794

(The workaround is to add

[org.clojure/core.cache "0.6.3"]
[org.clojure/core.memoize "0.5.6" :exclusions [org.clojure/core.cache]]

to the project.clj dependencies).

Include an example handler test, using a :post request?

In the Luminus template, two handler test examples are included, at the generated file my_luminus_project/test/my_luminus_project/test/handler.clj and both use :get requests.

It would be useful to include a test example using :post as that would show how to mock (or bypass) the ring.middleware.anti-forgery token within a test.

BTW, I could've sworn anti-forgery tokens were active by default in earlier versions of Luminus, but I see it's turned off in the current luminus-template middleware file; any reasons why? Seems like an important default security measure.

Thanks in advance for any comments/help!

Depends on too old clojure version

Luiminus application depends on Clojure version 1.3.0:

$ lein new luminus myapp

Retrieving luminus/lein-template/1.17.9/lein-template-1.17.9.pom from clojars
Retrieving leinjacker/leinjacker/0.2.0/leinjacker-0.2.0.pom from clojars
Retrieving trammel/trammel/0.7.0/trammel-0.7.0.pom from clojars
Retrieving thneed/thneed/1.0.0-SNAPSHOT/thneed-1.0.0-20120330.013054-1.pom from clojars
Retrieving thneed/thneed/1.0.0-SNAPSHOT/thneed-1.0.0-20120330.013054-1.jar from clojars
Retrieving luminus/lein-template/1.17.9/lein-template-1.17.9.jar from clojars
Retrieving org/clojure/clojure/1.3.0/clojure-1.3.0.jar from central  <--- seems too old in 2015 :(

This is so 2012-ish, I think 😭

Bootstrap navbar missing navbar-inner

When generating the Bootstrap navbar HTML, Bootstrap requires an inner navbar-inner element, especially with navbar-inverse since that's where the background color is applied.

<div class="navbar">
  <div class="navbar-inner">
    <ul class="nav"></ul>
  </div>
</div>
 (defn header []
   [:div.navbar.navbar-fixed-top.navbar-inverse
-   [:ul.nav
-    [:li (link-to "/" "Home")]
-    [:li (link-to "/about" "About")]]])
+   [:div.navbar-inner
+    [:ul.nav
+     [:li (link-to "/" "Home")]
+     [:li (link-to "/about" "About")]]]])

possible issue with +site

Hi @yogthos, while I was working on +static, I noticed that +site might have an issue on this line:

https://github.com/yogthos/luminus-template/blob/master/src/leiningen/new/luminus.clj#L169

I think there was a (if-let ...) expression added to layout.clj and the regex here maybe needs to be updated? In addition, I also added a try/catch for +static to layout.clj that might need to be included in the regex here as well. I haven't needed +site yet, but if/when I have time to test it out, I'll look deeper.

Issue with +http-kit template/profile

When you create a project with +http-kit profile, it does not show the port number like it does for default profile.

For example:

$ lein run -dev
2014-Aug-20 13:45:45 +0100 mc-s071031.local INFO [app-name.core] - server started on port #<core$port app-name.core$port@2119b989>

Also when I create a project using default profile and I run lein ring serve it loads the application and my default browser is opened will the application url.

It would be really nice if the +http-kit template provide the same user experience as default.

Dependency problems with freshly generated project

Hello, I generated a fresh project from this template and it seems to be born with dependency troubles.

I get no errors during generation:

$ lein new luminus example
Generating a lovely new Luminus project named example...

But when I try to start the server, I get the following:

$ cd example/
$ lein ring server-headless
Failing dependency resolution because:

[ring/ring-devel "1.1.0"]
is overrulling
[ring-server "0.2.5"] -> [ring "1.1.4"] -> [ring/ring-devel "1.1.4"]

Please use [ring-server "0.2.5" :exclusions [ring/ring-devel]] to get [ring/ring-devel "1.1.0"] or remove [ring/ring-devel "1.1.0"] to get [ring/ring-devel "1.1.4"].

[ring/ring-devel "1.1.0"]
is overrulling
[ring-server "0.2.5"] -> [ring "1.1.4"] -> [ring/ring-devel "1.1.4"]

Please use [ring-server "0.2.5" :exclusions [ring/ring-devel]] to get [ring/ring-devel "1.1.0"] or remove [ring/ring-devel "1.1.0"] to get [ring/ring-devel "1.1.4"].

[ring/ring-devel "1.1.0"]
is overrulling
[lib-noir "0.3.5"] -> [ring "1.1.1"] -> [ring/ring-devel "1.1.1"]

Please use [lib-noir "0.3.5" :exclusions [ring/ring-devel]] to get [ring/ring-devel "1.1.0"] or remove [ring/ring-devel "1.1.0"] to get [ring/ring-devel "1.1.1"].

[compojure "1.1.3"] -> [org.clojure/tools.macro "0.1.0"]
is overrulling
[com.taoensso/timbre "1.2.0"] -> [org.clojure/tools.macro "0.1.1"]

Please use [compojure "1.1.3" :exclusions [org.clojure/tools.macro]] to get [org.clojure/tools.macro "0.1.1"] or use [com.taoensso/timbre "1.2.0" :exclusions [org.clojure/tools.macro]] to get [org.clojure/tools.macro "0.1.0"].

[compojure "1.1.3"] -> [org.clojure/tools.macro "0.1.0"]
is overrulling
[com.taoensso/tower "1.2.0"] -> [org.clojure/tools.macro "0.1.1"]

Please use [compojure "1.1.3" :exclusions [org.clojure/tools.macro]] to get [org.clojure/tools.macro "0.1.1"] or use [com.taoensso/tower "1.2.0" :exclusions [org.clojure/tools.macro]] to get [org.clojure/tools.macro "0.1.0"].```

My leiningen should be up to date:

$ lein --version
Leiningen 2.0.0 on Java 1.6.0_31 Java HotSpot(TM) 64-Bit Server VM

I was able to work around it by bumping some version numbers and adding an exclusion:

[compojure "1.1.5" 
                :exclusions [org.clojure/tools.macro]] 
# and this is in the :dev profile's deps
[ring/ring-devel "1.1.4"]

But this is a crufty hack, and I have no idea how sound the resulting program is. It seems to serve the example pages fine, though.

looking for html files in resources/templates/templates

After creating a project with lein new luminus MYPROJECT +h2 +cljs +site +http-kit +dailycred I get this:

screenshot from 2015-01-02 07 56 58

The error is looking for html files in the resources/templates/templates/ directory. After doing cp resources/templates resources/templates/templates everything works.

yourproject.repl/start-server never returns control to the REPL

On the latest version of lein / luminus etc, on MacOSX, this occurs:

Nosy:Code stefand$ lein new luminus defaultluminustest
Generating a lovely new Luminus project named defaultluminustest...
Nosy:Code stefand$ cd defaultluminustest/
Nosy:defaultluminustest stefand$ lein repl
nREPL server started on port 63890
REPL-y 0.2.0
Clojure 1.5.1
Docs: (doc function-name-here)
(find-doc "part-of-name-here")
Source: (source function-name-here)
Javadoc: (javadoc java-object-or-class-here)
Exit: Control+D or (exit) or (quit)

user=> (use 'defaultluminustest.repl)
nil
user=> (start-server)
2013-Jul-24 09:58:55 +1200 Nosy.local INFO [defaultluminustest.handler] - defaultluminustest started successfully
2013-07-24 09:58:55.853:INFO:oejs.Server:jetty-7.6.1.v20120215
2013-07-24 09:58:55.898:INFO:oejs.AbstractConnector:Started [email protected]:8080
Started server on port 8080

^-- this never finishes. The server starts and works, but because it never finishes, even if I ctrl+c to get back REPL control the server never gets put into the server atom so you can't stop it. I pulled down https://github.com/yogthos/luminus and that one does work, so something has changed. I thought it might be the lib-noir version (0.6.6 vs 0.6.4) but changing it didn't seem to help.

Started failing recently :|

[Niko@Modrzyks-MacBook-Pro][17:05] % lein new luminus test_3 
Generating a lovely new Luminus project named test_3...
java.io.FileNotFoundException: test_3/project.clj (No such file or directory)

I am on the most recent lein:

 [Niko@Modrzyks-MacBook-Pro][17:05] % lein version 
 Leiningen 2.1.3 on Java 1.8.0-ea Java HotSpot(TM) 64-Bit Server VM

Deployment on jboss wildfly immutant issues with root path

After deploying to wildfly, the root path "localhost:8080/app/" results in downloading of an empty file instead of loading the page. The steps followed are given below.

I created a new project by:

lein new luminus app +immutant

Created immutant war by:

lein immutant war

Copied this war file to wildfly/standalone/deloyments and ran wildfly.

The path http://localhost:8080/app/ prompts to download a bin file named download instead of showing the page. This issue is only with the root path and all other paths seems to be working.

What did I miss?

Where to look for the proper deployment documents in case the above steps are not correct?

Thank you.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.