Adopt-a-Tree
Beautify your street by watering a tree.
Production is at http://adoptatree.brewingabetterforest.com/
Stage is at http://adoptatree-mpls-stage.opentwincities.org/
As an Open Twin Cities project, the Open Twin Cities Code of Conduct is in effect regarding online and offline project activities.
Open Twin Cities is dedicated to a harassment-free community for everyone. Be kind to one another. Do not insult or put down other community members. Behave civilly.
The difficult way is setting Adopt-a-Tree directly on your computer's host OS.
Mac OS X
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install git postgres node
Note in the above we are fetching Homebrew to handle system dependencies.
Ubuntu/Debian
sudo apt-get install git postgresql libpq-dev nodejs nodejs-legacy npm libffi-dev
Debian 9 Note: Ruby 2.3.x is incompatible with the lastest version of libssl.
To install on Debian 9/Stretch, run sudo apt-get install libssl1.0-dev
Fedora/RHEL/CentOS
sudo yum install git postgresql-server postgresql-devel nodejs npm libffi-devel patch
sudo postgresql-setup initdb && sudo systemctl enable postgresql.service && sudo service postgresql start
Mac OS X
First, open another terminal and start the database:
postgres -D /usr/local/var/postgres
Then, create the adopta database user
createuser -d adopta
Linux
sudo -u postgres createuser -d adopta
As superuser, edit:
/etc/postgresql/{version number}/main/pg_hba.conf
in Ubuntu/Debian, or/var/lib/pgsql/data/pg_hba.conf
in FedoraFind one of these lines:
local all postgres peer
local all all peer
and add the following line right above it:
local all adopta trust
Now, save and restart Postgres:
sudo service postgresql restart
PhantomJS is used by tests
npm install -g phantomjs
rbenv and it's pluggins are installed via Git. Below are commands to run in OS X or Linux for installing rbenv and a couple of useful plugins.
(Note that some systems use ~/.bash_profile
instead of ~/.bashrc
. Running
ls -a ~ | egrep '(.bash_profile|.bashrc)'
should tell you which one to use.)
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
git clone https://github.com/sstephenson/rbenv-gem-rehash.git ~/.rbenv/plugins/rbenv-gem-rehash
git clone https://github.com/OpenTwinCities/adopt-a-tree.git
cd adopt-a-tree
Assuming you are in the Adopt-A-Tree repo, you can just run the following. This part might take some time.
rbenv install
gem install bundler
bundle install
bundle exec rake db:create
bundle exec rake db:schema:load
bundle exec rake db:seed
In case you have trouble with the above installation steps, you might want to refer to the Adopt-a-Hydrant Wiki for detailed instructions on installation. You can also post a question to the Open Twin Cities Google Group.
Google Maps API now requires a key to use its services. You can obtain a key at https://developers.google.com/maps/documentation/javascript/get-api-key.
When starting the rails server make sure GOOGLE_API_KEY
is set, either explicitly or via your favorite environment setup file (~/.bash_profile, etc.).
bundle exec rails server
bundle exec rake
Once or twice a year, the Minneapolis Park Board sends us a shapefile full of trees to upload to Adopt-A-Tree. Here is the process for putting those on the site:
ubuntu
. Bill has
keys.ubuntu
pg_dump adopta_production > SOMEFILENAME
. You'll
need to change users.Thing.where(user_id: nil).destroy_all
When running rails
or rake
, you'll need to prepend RAILS_ENV=production bundle exec
Three rake tasks are available to help you import additional trees to the database, or to replace all tree data, from a GeoJSON file provided by Socrata.
To view a list of the names and indices of all fields in a file, run rake db:trees:list_fields[PATH_TO_GEOJSON]
.
PATH_TO_GEOJSON can be relative or absolute.
$ rake db:trees:list_fields[db/trees.json]
0 - :sid
1 - :id
2 - :position
.
.
.
64 - x
65 - y
66 - species
For the import and replace tasks, you're going to need to know the column indices for the 'id' (not :id), 'uniqueid', 'x', 'y', and 'species' columns.
To import additional trees into the database from a GeoJSON files, run rake db:trees:import[PATH_TO_GEOJSON,ID_INDEX,UNIQUEID_INDEX,X_INDEX,Y_INDEX,SPECIES_INDEX]
:
rake db:trees:import[db/trees.json,8,9,64,65,66]
To completely replace the trees currently in the databse with the trees contained
in a GeoJSON file, run rake db:trees:replace[PATH_TO_GEOJSON,ID_INDEX,UNIQUEID_INDEX,X_INDEX,Y_INDEX,SPECIES_INDEX]
:
rake db:trees:replace[db/trees.json,8,9,64,65,66]
Assuming you have SSH keys setup properly, deploy via:
cap stage deploy
cap production deploy
Based on Raleigh's Adopt-A-Hydrant installation notes.
rails console
.User.all
a=User.find(1)
a.admin = true
a.save
So you want to help out on Adopt-A-Tree? You're awesome, and we're happy to help you be as awesome as possible.
In the spirit of free software, everyone is encouraged to help improve this project. So ways to contribute code include:
First things first, there are a few things you should be familiar with:
Don't worry if you're not comfortable with all of these things. Working on a project like Adopt-A-Tree is a great way to learn.
Are you ready to contribute? Well, here's how:
bundle exec rspec
. If your specs pass, return to step 6.bundle exec rspec
. If your specs fail, return to step 8.open coverage/index.html
. If your changes are not completely covered
by your tests, return to step 6.Open Twin Cities holds lots of events that everybody is welcome to. Our monthly meetups in Minneapolis and St. Paul are great places to come discuss Adopt-A-Tree, ask questions, and get some help.
We also have online ways to discuss and ask questions about Adopt-A-Tree. Join the Open Twin Cities Google Group to discuss Adopt-A-Tree with civic technologists all around the Twin Cities. You can also pose questions and submit problems and ideas though the issues on GitHub. And feel free to email questions and ideas to contact@opentwincities.org.
Here are some non-coding ways you can contribute:
We use the GitHub issue tracker to track bugs and features. Before submitting a bug report or feature request, check to make sure it hasn't already been submitted. When submitting a bug report, please include a Gist that includes a stack trace and any details that may be necessary to reproduce the bug, including your gem version, Ruby version, and operating system. Ideally, a bug report should include a pull request with failing specs.
If you have a Google Analytics account you want to use to track visits to your deployment of this app, just set your ID and your domain name as environment variables:
heroku config:set GOOGLE_ANALYTICS_ID=your_id
heroku config:set GOOGLE_ANALYTICS_DOMAIN=your_domain_name
An example ID is UA-12345678-9
, and an example domain is adoptahydrant.org
.
This library aims to support and is tested against Ruby version 2.1.0.
If something doesn't work on this version, it should be considered a bug.
This library may inadvertently work (or seem to work) on other Ruby implementations, however support will only be provided for the version above.
If you would like this library to support another Ruby version, you may volunteer to be a maintainer. Being a maintainer entails making sure all tests run and pass on that implementation. When something breaks on your implementation, you will be personally responsible for providing patches in a timely fashion. If critical issues for a particular implementation exist at the time of a major release, support for that Ruby version may be dropped.
Copyright (c) 2014 Code for America. See LICENSE for details.