Skip to content
Automatically exported from code.google.com/p/eol-ingestion-form
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
app
config
db
doc
lib
public
script
test
vendor/plugins
README
Rakefile
web_services_readME.txt

README

== Getting Started

Welcome to Developers! This software is developed in Ruby on Rails, using Rails 1.2.3 and Ruby 1.8.5, along with MySQL as a back-end data store. It uses many plugins to create a mashup with Google Maps. It should also work with the new Rails 2.0.2.

This Ruby on Rails project is the beginnings of the Encyclopedia of Life (www.eol.org). It is a "citizen scientist" ingestion form that is a Google Maps mash-up, allowing users to submit observations and photos of organisms to share with the world! 

== Details

To setup the code on your local machine, you'll first need a Subversion client to get the code, Ruby to run the code, the Ruby on Rails web framework, and a MySQL database server. Check out the Ruby on Rails site, http://www.rubyonrails.org, and the subversion site, http://subversion.tigris.org/, for information on installing everything. The code runs fine on Linux, Windows and Mac (I'm developing on Windows XP, Ubuntu and OS X 10.5).

In addition, for image resizing, you'll need either ImageMagick? or MiniMagick?. One of these packages is used by the attachment_fu plugin, which is in the repository already. ImageMagick? or MiniMagick? are not the in repository, and you should visit their websites to determine how to install them on your particular OS.

To get the source code up and running, do the following:

    Check out the head of the trunk from the subversion repository.
    Create the development and test databases in MySQL on your local MySQL server or whatever database back-end you can get to work (I called mine "eol_ingestion_form_development" and "eol_ingestion_form_test").
    Copy the "config/database.example" file to "config/database.yml" and then edit the database configuration information to match your databases created in step 2.
    From a console in your application directory, run "rake db:migrate" to setup the database schema. If you get any errors, it's likely your database connection is failing, so check the database connections and database usernames/passwords. Make sure your MySQL server is running.
    Run "rake db:fixtures:load" to setup the core data (basically a couple test users, some habitats, a couple organism names).
    Start webrick or mongrel and cross your fingers: "ruby script/server" or "ruby script/server webrick".
    Set the permissions on the folder "public/uploaded_images" to allow the anonymous web user or your local account (whatever account your development server is running under) to have permissions to write to this folder. It is (obviously) used to save image uploads.
    The test admin user login from the user fixture is "test@test.com" with a password of "test". Feel free to change it after the first login. 

Note that if your PC is not on the Internet, you cannot run the app. Most pages make use of the Google Maps API or other web services that require a constant connection to the Internet. Sorry for those off the grid.

Also note that there is a Google Maps API Key in the "config/gmaps_api_key.yml" which should work fine for localhost. Obtain your own Google Maps API key for your host if you need to. This is used for both the maps and the geocoding.

By default, sessions are stored in MySQL. To cleanup stale sessions over 1 hour old, setup a CRON job or a Windows task to run every few hours or so, and execute the following function from within your Rails application folder:

Windows: ruby script/runner/SessionCleaner?.remove_stale_sessions Linux: ./script/runner/SessionCleaner?.remove_stale_sessions

That method is defined in the "lib/session_cleaner.rb" file and removes sessions older than 60 minutes. 


== ToDo

There is a lot to work on to make this system better. Below is a partial list of items for some ideas.

=== Specific Programming Tasks

    Pagination of search results on pages with many results
    Web services to expose data
    On the map views, when a pop-up info window appears for a sighting when clicked, offer to take the user straight to that specific detailed observation page with another click
    Ability to import observation data in mass (perhaps via a specifically formatted CSV file that is uploaded)
    Add a graph that shows species observations by date in search results page
    Need functional and unit tests
    Add the ability to use OpenID in addition to the custom login mechanism
    The range circle overlayed on Google Maps does not work consistently in IE 7, works fine in Firefox
    Make application ready for date/timezone internationalization and customization (currently the default is always eastern time zone).
    Search by attributes in addition to geographic search and search by name and description
    Ability to upload a specific thumbnail image with an observation instead of having the thumbnail auto-generated
    Integrate with Flickr API to pull in related photos based on geography/name strings?
    Allow searching by institution name as well as user name
    Ability to upload multiple images with a specific observation
    Need user groups, so that a school can create an account, and then the school administrator can create sub-accounts for the students, that they can control 

=== Areas that need improving and investigation

    Web services for importation of species data
    Google map markers, perhaps switch to marker groups to improve performance when there ar e lots of markers added to the map
    Look at using OpenLayers? for laying data over maps instead of google maps and markers (http://openlayers.org)
    General refactoring... make it RESTful? ready for Rails 2.0? 

=== General Areas

    Ability to filter species that are entered into specific groups to build localized versions (e.g. only show species native to Cape Cod)
    Admin interface with ability to view/edit entries and update classifications or species identifications
    Ability to assign different users to different "domains" of species to administer them (e.g. the fungus expert keeps on eye on all fungal entries to fix identification problems).
    Can we have offline capability (i.e. the ability to record species observations when not connected and then pump the data in when we get online)? Look at the offline capabilities of the next version of Firefox. 

=== Science Areas

    Ability to interface with a classification system such as classification bank to show where entry belongs in taxonomic tree
    Show both latin and common names on the map and with species (especially if just the latin name is specified, a look up of common name would be possible). This would make the system more accessible. There will also be times when the latin nonemclature is in dispute. 
You can’t perform that action at this time.