Git Product home page Git Product logo

clockingit's Introduction

Installing jobsworth on your server

Step 1: Getting the source.

The easiest way to get the source and easily update it from time to time is with git. You’ll need to install that on your machine and then run:

git clone git://github.com/ari/clockingit.git

You will want to put the source somewhere sensible depending on your operating system. On OSX that might be ~/Sites/jobsworth and on FreeBSD /usr/local/www/jobsworth. We’ll use the FreeBSD path in these instructions.

Step 2: Prerequsites

You need to be running some type of Unix: OSX, Linux, Solaris, BSD. Windows will probably not work. You will also need a database. MySQL has been heavily tested, and some people are running postgresql.

Install the following packages:

  • ruby gems

  • ruby mysql driver (you could also choose postgresql)

  • rake

  • ImageMagick

How to install these will differ on each platform. Some possibilities:

FreeBSD with Ruby 1.9

Ruby 1.9 is much faster than 1.8.

echo "RUBY_DEFAULT_VER=1.9" >> /etc/make.conf
portmaster converters/ruby-iconv databases/ruby-mysql graphics/ImageMagick

FreeBSD with Ruby 1.8

Sometimes you just need to use 1.8 if you have other tools which rely on 1.8, such as portinstall.

portmaster converters/ruby-iconv devel/ruby18-gems databases/ruby-mysql devel/rubygem-rake graphics/ImageMagick

OSX

First install the Macports system from www.macports.org. Then:

sudo port install rb-rubygems rb-mysql rb-rake ImageMagick libxml2 libxslt

Linux, etc

Under other operating systems use your favourite package manager to ensure you have Ruby, rubygems, Imagemagick, Rake and the Ruby mysql driver installed. Something like:

yum install libxml2 libxslt ImageMagick ruby

Step 3: Phusion Passenger

Install Phusion Passenger. You can instead use Mongrel, but it tends to be a little easier to set up with Phusion.

gem install passenger
passenger-install-apache2-module

And follow the instructions you’ll be given about how to install the relevant config for Apache httpd.

Your Apache httpd virtual host DocumentRoot should point to the public directory in the installation directory.

<VirtualHost *:80>
  ServerName jobsworth.example.com.au
  RailsEnv production
  PassengerHighPerformance on

  DocumentRoot /usr/local/www/jobsworth/public
  CustomLog /var/log/www/myserver.example.com.au-access_log combined
  ErrorLog /var/log/www/myserver.example.com.au-access_log
</VirtualHost>

You’ll need to allow access to the folder you specify if isn’t already inside your global httpd DocumentRoot. And MultiViews is bad for Rails application.

<Directory /usr/squish/public>
  AllowOverride All
  Options -MultiViews
  Order allow,deny
  Allow from all
</Directory>

Naturally adjust the paths to suit your own environment.

Step 4: Setup configuration and database

cd /usr/local/www/jobsworth
ruby setup.rb

Step 5: Ruby gems

There are a few Ruby gems which are needed for running CIT. Change directory into the top of your CIT installation, then type:

rake gems:install

That will install the gems you need.

If you have trouble on OSX with the mysql gem (this seems to be an issue on 10.5), then try this

sudo env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-include=/opt/local/include/mysql5 --with-mysql-lib=/opt/local/lib/mysql5 --with-mysql-config=/opt/local/lib/mysql5/bin/mysql_config

Upgrading to a newer revision

git checkout db/schema.rb
git pull

Check that there aren’t any updated gems or new gems to install. If there are, just follow the instructions you will be given on screen.

rake gems

Next, make sure the database is updated:

rake db:migrate RAILS_ENV=production

Depending on which environment you are updating, you can change the RAIL_ENV value to “test” or “development” and the appropriate database will be updated.

Restart the web server just to ensure anything cached is cleared

apachectl graceful

Clear out cached asset files

rm public/javascripts/main.js
rm public/javascripts/popup.js
rm public/javascripts/prototype-all.js
rm public/stylesheets/all.css
rm public/stylesheets/popup.css

Setting up Email Integration

When jobsworth sends outgoing emails for task updates, they will have a reply address which looks like this:

[email protected]

If a user hits reply to that email, you want it to go back and be appended to the task comments. It isn’t hard, but you’ll need a mail server you have some control over in order to get the magic to work. Firstly, let’s look at that email address. To the left of the @ we have a designator showing which task this email is relevant to. On the right ‘acme’ represents the name of the company you set up when you ran the setup.rb script and first installed jobsworth. And the final ‘domain.com.au’ part is defined in the environment.local.rb file in your config folder.

You need to set up your email software to pass all incoming emails for *@acme.domain.com.au to a special script. That ‘*’ means a wildcard: that is, any username at that hostname will be forwarded.

Sendmail

For example to configure sendmail, add an entry to /etc/mail/local-host-names for your hostname:

acme.domain.com.au

Add an entry to /etc/mail/aliases to create an alias that will hand off emails to the mailman script

jobsworth: "|/path/to/cit/script/runner -e production 'Mailman.receive(STDIN.read)'"

Add an entry to /etc/mail/virtusertable to redirect all emails to your domain to the above alias

@domain.com        jobsworth

run “make; make restart” in /etc/mail

Communigate Pro

Communigate Pro puts it own headers on the top of each email which need to be stripped. A little script like this is dropped into /var/Communigate/Scripts and then added to the ‘helpers’ configuration with in the GUI. You’ll need a rule inside Communigate to pass all email to the appropriate hostname to this script.

#!/bin/sh

RUBY=/usr/local/bin/ruby

# Make sure Ruby is on the path
export PATH=/usr/local/bin:/usr/local/sbin:$PATH

# Strip the first 6 lines which are specific to Communigate
/usr/bin/tail -n +7 $2 | ${RUBY} -W0 /usr/squish/script/runner -e production 'Mailman.receive(STDIN.read)' > /dev/null

exit 0;

clockingit's People

Contributors

fudge avatar bradx3 avatar ari avatar lysenko avatar lenochka avatar grantgrant avatar jtek avatar mwesten avatar zeyus avatar tomaslucas avatar sjmh avatar

Stargazers

 avatar  avatar

Watchers

 avatar

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.