AirCasting API and web application
Ruby JavaScript HTML CSS Shell
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
app fix(fixed map): select / deselect session when clicking on dot Jul 6, 2018
bin deploy script Jul 6, 2018
db Add index on stream id and time to measurements Nov 4, 2016
doc readme: remove elasticsearch info Jun 27, 2018
lib remove elasticsearch leftovers Jul 5, 2018
public add for to checkboxes labels Jul 6, 2018
script Add script test_all Jul 26, 2012
.ruby-version Set ruby version to 2.0.0-p648 Jun 28, 2018
Capfile Add honeybadger Mar 11, 2016
Gemfile remove elasticsearch leftovers Jul 5, 2018
Gemfile.lock remove elasticsearch leftovers Jul 5, 2018
Guardfile Initial commit Jan 17, 2012
LICENSE Add branching strategy info to Readme Jun 27, 2018
analyze.rb make all analyzing tools available Aug 1, 2012 use Rack::Deflater Sep 25, 2015

Build Status Code Climate

AirCasting - Share your Air!


This is the AirCasting project - the project aims to build a platform for gathering, visualization and sharing of environmental data. To learn more about the platform visit


Branching strategy

  • production is stable code which gets deployed to If you're setting up your own copy of Aircasting use this branch.
  • master is a base branch to which we merge code. It gets deployed to staging server. It may contain some work-in-progress code or unfinished features.

Prerequisite: Debian / Ubuntu

sudo apt-get install bzip2 curl subversion git-core -y
# install rvm
sudo apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion pkg-config imagemagick mysql-server libmysqlclient-dev redis-server libgsl0-dev nodejs -y

Prerequisite: Mac

# install rvm
brew install gsl

App (any OS)

rvm install 2.0.0
rvm use 2.0.0
gem install bundler
git clone git://
cd aircasting
cp config/database.yml.example config/database.yml
# `socket:` in `config/database.yml` should be equal to the path from
# `mysqladmin variables -uroot | grep socket | grep "\.sock"`
cp config/secrets.yml.example config/secrets.yml
# fill proper secrets in config/secrets.yml
bundle install
bundle exec rake db:create db:migrate
bundle exec sidekiq -d
bundle exec rails server
# visit http://localhost:3000


run tests

RAILS_ENV=test bundle exec rake db:create db:migrate
bundle exec rspec
bundle exec rake spec:javascript

API documentation

Read more here.

Assets version bumping

Whenever changing code tounching google maps, the data-version attribute in app/views/layouts/map.html.haml should be bumped. This ensures that the assets will reload correctly.

Importing a big db dump to a server, i.e. staging

For restoring a big db dump you can try to opitimize a process by changing the database configuration temporarily. See example post on Stack Overflow

mysql -u root -p

set global net_buffer_length=1000000; --Set network buffer length to a large byte number

set global max_allowed_packet=1000000000; --Set maximum allowed packet size to a large byte number

SET foreign_key_checks = 0; --Disable foreign key checking to avoid delays,errors and unwanted behaviour

source file.sql --Import your sql dump file

SET foreign_key_checks = 1; --Remember to enable foreign key checks when procedure is complete!


In case you encounter a similar error

Mysql2::Error: Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column ...

please check if any of these files

  • /etc/my.cnf
  • /etc/mysql/my.cnf
  • /usr/local/etc/my.cnf
  • ~/.my.cnf

contain sql_mode = "...". If that's the case, make sure to remove ONLY_FULL_GROUP_BY from the string. Otherwise, just add


to any existing configuration file. If none exists just create ~/.my.cnf as follows


To double check the configuration works

bundle exec rails c
ActiveRecord::Base.connection.execute("show variables like 'sql_mode'").to_a
# the return value should not contain ONLY_FULL_GROUP_BY


If you'd like to contribute just use the usual github process - fork, make changes, issue a pull request.


You can contact the authors by email at


AirCasting uses The YourKit Java Profiler for Performance Tuning

YourKit is kindly supporting open source projects with its full-featured Java Profiler. YourKit, LLC is the creator of innovative and intelligent tools for profiling Java and .NET applications. Take a look at YourKit's leading software products: YourKit Java Profiler and YourKit .NET Profiler.


The project is licensed under the GNU Affero GPLv3. For more information see COPYING and visit