(Note: these instructions are for the original c9 - AWS C9 may require alternative commands)
Cloud9 can be found here. To create a Cloud9 workspace to run LocalSupport:
-
Fork the
http://github.com/AgileVentures/LocalSupport
repo (fork button at top right of github web interface) -
Create a workspace in Cloud9. Fill in the fields:
- Workspace name: LocalSupport (or anything else that fits you)
- Clone from Git or Mercurial URL: the url of your forked repository, e.g.
https://github.com/your-git-id/LocalSupport.git
- Choose a template: Select the Rails / Ruby icon
- Click the Create workspace button
If you get a message:
ruby-2.x.y is not installed.
, see next section to install that version of ruby. -
Update package cache:
sudo apt-get update
-
Change branch for development:
git checkout develop
-
Install Qt webkit (source):
sudo apt-get install qt5-default libqt5webkit5-dev gstreamer1.0-plugins-base gstreamer1.0-tools gstreamer1.0-x
(Note: for some reason, I could not get it to pass on the first try.)
-
Install GNU IDN Library version 1.33 You will need a few basic tools, such as ‘sh’, ‘make’ and ‘cc’.
wget -q ftp://ftp.gnu.org/gnu/libidn/libidn-1.33.tar.gz
tar xfz libidn-1.33.tar.gz
cd libidn-1.33/
./configure
...
make
...
make install
...
The make install
command may need to be ran with sudo. for ex:
sudo make install
- Configure the pre-installed postgreSQL. Check which version is installed with
ls /etc/postgresql/
. If the version is not 9.3, thesed
commands must be edited to reflect the current version.
# Change conf files to map your user to postgres user
sudo sed -i 's/local[ ]*all[ ]*postgres[ ]*peer/local all postgres peer map=basic/' /etc/postgresql/9.3/main/pg_hba.conf
sudo sed -i "$ a\basic $USER postgres" /etc/postgresql/9.3/main/pg_ident.conf
# Start the service
sudo service postgresql start
# Make the default database template encoded in unicode
psql -U postgres -c "update pg_database set encoding = 6, datcollate = 'C', datctype = 'C' where datname = 'template1';"
sudo /etc/init.d/postgresql restart
-
Install X virtual frame buffer
sudo apt-get install xvfb
-
Run
bundle install
to get the gems (rungem install bundler
if bundler is not installed)
(Note: If your connection breaks during the process retry until all gems are installed.)
-
(optional) Run
selenium install
to download jars that this gem needs -
Get the javascript dependencies:
sudo apt-get install npm
npm install -g bower
bower install
-
(optional) Update the heroku tools :
wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh
-
Run the following to get the database set up and import seed data
bundle exec rake db:create
bundle exec rake db:migrate
bundle exec rake db:setup
Note: You might encounter error with the creating the relevant schema. This is due to some configuration error with PostgreSql. Solution of interest can be found (1) here and (2) here. You should first drop the cluster as mentioned in (1) and then configure the user access privileges in pg_hba.conf and username mapping in pg_ident.conf. One way to successfully configure the line pg_hba.conf
from
# TYPE DATABASE USER ADDRESS METHOD
local all all peer
to
# TYPE DATABASE USER ADDRESS METHOD
local all all trust
and add a mapping in pg_ident.conf
# MAPNAME SYSTEM-USERNAME PG-USERNAME
basic ubuntu(or the username of your C9 instance) postgres
-
Run locally with
rails s -b $IP -p $PORT
(in either a terminal or a run configuration window) -
Run the test (note the explicit call to
xvfb
when executing cucumber -- Cloud9 does not run an X-server)
bundle exec rake db:migrate RAILS_ENV=test
bundle exec rake spec
xvfb-run -a bundle exec cucumber
If the ruby version specified in the LocalSupport gemfile does not match one of the preinstalled version on Cloud9, the following message is outputted:
ruby-2.x.y is not installed.
To install do: 'rvm install ruby-2.x.y'
Execute the suggested command to install the proper version (the compilation of ruby may take some time). After completion, execute:
gem install bundler
You should also make that ruby version your default version, with the command:
rvm --default use 2.x.y