So on a previous post, we saw how to setup nginx with SQLite and setup Fat Free CRM as a Ruby on Rails test application.

This post picks up from where the last one ended, since most of the things here are the same.

Prerequisites:

  • RVM,REE,Fat Free CRM, Nginx Setup
  • MySQL 5.5 installed

Here we go:

Note: When starting, restarting or stopping MySQL, make sure you are NOT on the Bash shell. If you are just enter exit to quit.

Go to the Fat Free CRM application directory:

cd /var/fatfreecrm

Copy the sample MySQL config file:

cp config/database.mysql.linux.yml config/database.yml

Edit the MySQL config file:

ee config/database.yml

Under 'production' comment out the 'socket' line and add this:

 host: localhost

The production part should look like this now:

production:
  adapter: mysql2
  encoding: utf8
  database: fat_free_crm_production
  pool: 5
  username: root
  password:
#  socket: /var/run/mysqld/mysqld.sock
  host: localhost

Edit the Gemfile:

ee Gemfile

Make sure to comment out sqlite3 and postgres (pg) and uncomment mysql2:

When you're done it should look like this:

source 'http://rubygems.org'

gem 'rails', '3.0.7'
gem 'rake',  '0.8.7'

# Uncomment the database that you have configured in config/database.yml
# ----------------------------------------------------------------------
 gem "mysql2", "0.2.7"
# gem "sqlite3"
#gem "pg", ">= 0.9.0"

gem 'authlogic',           '~> 3.0.3'

Run bundler:

bundle install

You should see something like the following:

Installing mysql2 (0.2.7) with native extensions
...
...
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

Now let's prepare the database for Fat Free CRM:

RAILS_ENV=production bundle exec rake db:create

That's OK - continue with setting up a default user:

RAILS_ENV=production bundle exec rake crm:setup USERNAME=admin PASSWORD=password EMAIL=admin@example.com

Now populate the database with some sample values:

RAILS_ENV=production bundle exec rake crm:demo:load

Let's have a look inside MySQL:

mysql

Type:

show databases;

You should get:

+-------------------------+
| Database                |
+-------------------------+
| information_schema      |
| fat_free_crm_production |
| mysql                   |
| performance_schema      |
| test                    |
+-------------------------+
5 rows in set (0.00 sec)

Type:

use fat_free_crm_production;
show tables;

You'll get lots of output:

+-----------------------------------+
| Tables_in_fat_free_crm_production |
+-----------------------------------+
| account_contacts                  |
| account_opportunities             |
| accounts                          |
| activities                        |
| addresses                         |
| avatars                           |
| campaigns                         |
| comments                          |
| contact_opportunities             |
| contacts                          |
| emails                            |
| field_groups                      |
| fields                            |
| leads                             |
| opportunities                     |
| permissions                       |
| preferences                       |
| schema_migrations                 |
| sessions                          |
| settings                          |
| taggings                          |
| tags                              |
| tasks                             |
| users                             |
+-----------------------------------+
24 rows in set (0.00 sec)

Let's have a look at the users table, see what's it's made of:

describe users;

lots of fields:

+---------------------+--------------+------+-----+---------+----------------+
| Field               | Type         | Null | Key | Default | Extra          |
+---------------------+--------------+------+-----+---------+----------------+
| id                  | int(11)      | NO   | PRI | NULL    | auto_increment |
| username            | varchar(32)  | NO   | MUL |         |                |
| email               | varchar(64)  | NO   | MUL |         |                |
| first_name          | varchar(32)  | YES  |     | NULL    |                |
| last_name           | varchar(32)  | YES  |     | NULL    |                |
| title               | varchar(64)  | YES  |     | NULL    |                |
| company             | varchar(64)  | YES  |     | NULL    |                |
| alt_email           | varchar(64)  | YES  |     | NULL    |                |
| phone               | varchar(32)  | YES  |     | NULL    |                |
| mobile              | varchar(32)  | YES  |     | NULL    |                |
| aim                 | varchar(32)  | YES  |     | NULL    |                |
| yahoo               | varchar(32)  | YES  |     | NULL    |                |
| google              | varchar(32)  | YES  |     | NULL    |                |
| skype               | varchar(32)  | YES  |     | NULL    |                |
| password_hash       | varchar(255) | NO   |     |         |                |
| password_salt       | varchar(255) | NO   |     |         |                |
| persistence_token   | varchar(255) | NO   | MUL |         |                |
| perishable_token    | varchar(255) | NO   | MUL |         |                |
| last_request_at     | datetime     | YES  | MUL | NULL    |                |
| last_login_at       | datetime     | YES  |     | NULL    |                |
| current_login_at    | datetime     | YES  |     | NULL    |                |
| last_login_ip       | varchar(255) | YES  |     | NULL    |                |
| current_login_ip    | varchar(255) | YES  |     | NULL    |                |
| login_count         | int(11)      | NO   |     | 0       |                |
| deleted_at          | datetime     | YES  |     | NULL    |                |
| created_at          | datetime     | YES  |     | NULL    |                |
| updated_at          | datetime     | YES  |     | NULL    |                |
| admin               | tinyint(1)   | NO   |     | 0       |                |
| suspended_at        | datetime     | YES  |     | NULL    |                |
| single_access_token | varchar(255) | YES  |     | NULL    |                |
+---------------------+--------------+------+-----+---------+----------------+
30 rows in set (0.00 sec)

Just exit MySQL and start the application by restarting nginx:

/etc/init.d/nginx-passenger restart