AirCasting API and web application
Ruby JavaScript HTML CSS Shell
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
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
config
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
spec
vendor
.codeclimate.yml
.gitignore
.ruby-version Set ruby version to 2.0.0-p648 Jun 28, 2018
.travis.yml
COPYING
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
README.md Add branching strategy info to Readme Jun 27, 2018
Rakefile
analyze.rb make all analyzing tools available Aug 1, 2012
config.ru use Rack::Deflater Sep 25, 2015

README.md

Build Status Code Climate

AirCasting - Share your Air!

About

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 aircasting.org.

Developing

Branching strategy

  • production is stable code which gets deployed to aircasting.org. 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 https://rvm.io/rvm/install
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 https://rvm.io/rvm/install
brew install gsl

App (any OS)

rvm install 2.0.0
rvm use 2.0.0
gem install bundler
git clone git://github.com/HabitatMap/AirCasting.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

Tests

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
use MY_DATABASE_NAME;

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!

Troubleshooting

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

sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

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

[mysqld]
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

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

Contribute

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

Contact

You can contact the authors by email at info@habitatmap.org.

Thanks

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.

License

The project is licensed under the GNU Affero GPLv3. For more information see COPYING and visit http://www.gnu.org/licenses/agpl.html.