;; (in-package #:cl-user)
( defpackage #:rails-to-caveman.config
( :use #:cl )
( :import-from #:envy
#:config-env-var
#:defconfig )
( :import-from #:uiop
#:getenv )
( :export #:config
#:*application-root*
#:*static-directory*
#:*template-directory*
#:appenv
#:developmentp
#:productionp ) )
( in-package #:rails-to-caveman.config )
( setf ( config-env-var ) "APP_ENV" )
( defparameter *application-root* ( asdf:system-source-directory :rails-to-caveman ) )
( defparameter *static-directory* ( merge-pathnames #P"static/" *application-root* ) )
( defparameter *template-directory* ( merge-pathnames #P"templates/" *application-root* ) )
( defconfig :common
#| CHANGED DATABASE FROM IN-MEMORY(CHAPTER 4)
==============================================
Changed the database name from ' :memory: ' to 'rails-to-caveman '
in Chapter 4. Be default, Caveman sets the database to
'in-memory '. You need to override this everytime you want to
your a persistent database in your app.
You can name your database whatever you want. I have just went
with 'rails-to-caveman ' because the tutorial said so.
| #
#| EXCERPT TAKEN FROM TUTORIAL (CHAPTER 4):
============================================
Initially: I set the database-name to “ your-app ” , but later when I
tried to access the database, I got angry with CAN 'T OPEN. So I
changed the name to “ your_app ” and it worked fine. Apparently, words
separated by . Dashes Are Capitalized At The Beginning . The Name
Specified In The Code Here Is "Your-App" , But The Registered File
Name Is "Your-App" However MITO:CONNECT-TOPLEVEL, If You
Specify "Your-App" : Database-Name, The Case conversion of the
implicit reason is not performed and the file "your-app" is searched
for in a case-sensitive manner, resulting in an error. Here, for
safety, the database name is defined in camel case without symbols.
The database file is created in the current directory. If you don 't
like this, you can specify the absolute path for:
DATABASE-NAME. *APPLICATION-ROOT* The variable is created DEFCONFIG,
the argument to is :DATABASE-NAME ( DATABASE-PATH ) , and there is
also a "db " directory in the project directory, so I don 't wonder if
it will do it well. I think it 's unfriendly to have no documentation.
| #
` ( :databases ( ( :maindb :sqlite3 :database-name , ( merge-pathnames #P"db/rails_to_caveman.db"
*application-root* ) ) ) ) )
( defconfig |development|
' ( ) )
( defconfig |production|
' ( ) )
( defconfig |test|
' ( ) )
( defun config ( &optional key )
( envy:config #. ( package-name *package* ) key ) )
( defun appenv ( )
( uiop:getenv ( config-env-var #. ( package-name *package* ) ) ) )
( defun developmentp ( )
( string= ( appenv ) "development" ) )
( defun productionp ( )
( string= ( appenv ) "production" ) )