Catching Annotation (Catch-A)
This software was created for the Harvard Library Labs project CATCH (https://osc.hul.harvard.edu/liblab/proj/catch) awarded to Phil Desenne, Martin Schreiner and Paolo Ciccarese
The software was originally written by:
You can find the core plugin dependencies at https://github.com/annotationframework.
- GVM - http://gvmtool.net/
- Grails 2.2.1+
- Tomcat 6+
- MySQL 5.5+
$ curl -s get.gvmtool.net | bash
After downloading the source code check
catcha/Catch/application.properties to find the required Grails version.
To install the appropriate grails version:
$ gvm install grails 2.2.1
See http://dev.mysql.com/downloads/installer/. On Ubuntu
sudo apt-get install mysql-server
Build application from source
Download application source code
$ git clone https://github.com/annotationsatharvard/catcha.git
Download plugin source code
There are several plugins that are included as "local plugin" dependencies within the application's
BuildConfig.groovy. It's important that the root directory of these plugins (
annotationframework) is located at the same level as the
$ mkdir annotationframework $ cd annotationframework $ git clone https://github.com/annotationframework/AfPersistence.git $ git clone https://github.com/annotationframework/AfSecurity.git $ git clone https://github.com/annotationframework/AfShared.git
mysql -u root -p -e 'create database catch default charset utf8;'
Create database user
mysql -u root -p -e 'grant all on catch.* to "catch"@"localhost" identified by "<password>";'
Create external configuration file
If you changed the database name, username, or password you need to edit an external configuration file.
NOTE: I needed to rename the file (lowercase 'c') in order to get the application to read this file.
$ cd Catch $ mv Catch-config.properties catch-config.properties
Add the following properties to
# Database connection settings dataSource.url=jdbc:mysql://localhost:3306/catch?autoReconnect=true&zeroDateTimeBehavior=convertToNull&sessionVariables=storage_engine=InnoDB dataSource.username=catch dataSource.password=<password>
NOTE: Do NOT change the database name as there is a bug I just discovered in the Liquibase changesets that hard-codes the schema name to "catch" when dealing with foreign key contstraints.
Run application in development mode
$ grails run-app
Develop with Docker
When developing with Docker, all the dependencies are included in docker images. No need to install anything on the host other than (docker)[https://docs.docker.com/engine/installation/]
NOTE: This repo has submodules. If
--recursive is not specified when cloning the repo, you need to run
git submodule update --init to pull down the submodules.
Update the following line in
docker-compose up -d
Docker will download official MySQL image and build catcha image. Docker-compose will create a docker network and run both images. Once they are started, the application can be accessed at http://localhost:8080.
Once the docker containers are running, you can make changes to the files on the host and they will be auto-reloaded.
docker logs -f catch_app_1
Tear down application
I tried to build the docker images with docker-compose for development:
git clone firstname.lastname@example.org:xcompass/catcha.git --recursive
docker-compose up -d
End of console output:
sed: can't read Catch-config.properties: No such file or directory
ERROR: Service 'app' failed to build: The command '/bin/sh -c ln -s plugins annotationframework && grails compile && sed -e 's/localhost:3306/db:3306/' -e 's/catch_test/catch/' Catch-config.properties > catch-config.properties' returned a non-zero code: 2
What am I missing?