Hi,

I'm new to Clojure (and Lisp-type languages in general) and I've never
used Java... in short, I have a steep learning curve littered with rocks
and nails.   I also don't know whether it's a good thing that I have
long experience with Python and C :-P

In any case, as a first project, I'm trying to add PostgreSQL support to
Clogger (http://github.com/Ejhfast/Clogger/tree/master) and I've managed
to get it working.  

*But*, the number of changes involved suggest that I should put the
existing MySQL code and the new PostgreSQL code into a separate files
and pull in the correct one at runtime based on a configuration
variable.   This is where I'm choking.

I've created a global variable *db-adapter* in setup.clj and would like
change

http://github.com/Ejhfast/Clogger/blob/dce291524ab76796c781f7200207070fefe26648/src/site/database.clj

to selectively :use (or :import or whatever) mysql.clj or postgresql.clj
based upon the value of *db-adapter*.   In turn, mysql.clj and
postgresql.clj will contain custom versions of the "db" and
"create-blog" code from database.clj (this leads to a second issue, but
I'll save that for later).

What I've tried (no laughing!) is this bit of code:

(ns site.database
  (:use [compojure])
  (:use [clojure.contrib.sql])
  (:use [site.setup])

  (if (= *db-adapter* "mysql")                                                  
                                                                                
      
    (:use [site.adapters.mysql :as adapter]))                                   
                                                                                
      
  (if (= *db-adapter* "postgresql")                                             
                                                                                
      
    (:use [site.adapters.postgresql :as adapter])))

But this throws an error:
  
   java.lang.Exception: No such var: clojure.core/if (database.clj:1)

In any case, this code smells funny, even if it were to work.  It seems
I should be able to somehow build a string such as (str "site.adapters."
*db-adapter*) and use that instead (or something else equally concise).

And of course, this isn't my only problem.   But I'll keep it to one
issue at a time.

Regards,
Cliff




--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to