Open ezcocoa opened 10 years ago
You need to start the local version of GAE. I think there is an example in the code somewhere, but something like:
(defn init-app-engine
"Initialize the app engine services. Call it once from the REPL"
([]
(init-app-engine "/tmp"))
([dir]
(let [default-port 9090
env-proxy (proxy [ApiProxy$Environment] []
(isLoggedIn [] false)
(getRequestNamespace [] "")
(getDefaultNamespace [] "")
(getAttributes [] (let [attributes (HashMap.)
local-server-url (str "http://localhost:" default-port)]
(.put attributes "com.google.appengine.server_url_key" local-server-url)
attributes))
(getAppId [] "local"))
local-env (proxy [LocalServerEnvironment] []
(getAppDir [] (File. dir))
(getAddress [] "localhost")
(getPort [] default-port)
(waitForServerToStart [] nil)
(enforceApiDeadlines [] true)
(simulateProductionLatencies [] true))
api-proxy (.create (ApiProxyLocalFactory.) local-env)]
(do
(com.google.apphosting.api.ApiProxy/setEnvironmentForCurrentThread env-proxy)
(com.google.apphosting.api.ApiProxy/setDelegate api-proxy)))))
If you call that function before evaluating the above, everything should be hunky dory.
Hello.
I evaluated the following code. (datastore/store-entities! books)
and i got the follwing error. I don't know what should i do.
java.lang.NullPointerException: No API environment is registered for this thread. DatastoreApiHelper.java:86 com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppId DatastoreApiHelper.java:96 com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppIdNamespace Key.java:106 com.google.appengine.api.datastore.Key.
Key.java:90 com.google.appengine.api.datastore.Key.
Key.java:86 com.google.appengine.api.datastore.Key.
Entity.java:125 com.google.appengine.api.datastore.Entity.
Entity.java:106 com.google.appengine.api.datastore.Entity.
datastore_access_dsl.clj:158 com.freiheit.gae.datastore.datastore-access-dsl/create-empty-entity
datastore_access_dsl.clj:309 com.freiheit.gae.datastore.datastore-access-dsl/create-entity
datastore_access_dsl.clj:307 com.freiheit.gae.datastore.datastore-access-dsl/create-entity
/Users/hojunbaek/src/clojure/clj-gae-datastore/src/example/com/freiheit/gae/datastore/example.clj:13 com.freiheit.gae.datastore.example/eval4979[fn]
MultiFn.java:227 clojure.lang.MultiFn.invoke
core.clj:2487 clojure.core/map[fn]
LazySeq.java:42 clojure.lang.LazySeq.sval