Mapfish server plugin for Ruby on Rails
=======================================
This HowTo describes step by step how to use `MapFish `_ Server Framework to set up a MapFish project. A MapFish project defines Web Services on which MapFish Client components can rely. See `here `_ for a description of the interfaces provided by MapFish Web Services.
The Mapfish server for Ruby is implemented as a plugin for the `Ruby on Rails `_ framework.
A sample application is available at `GitHub `_.
Create a MapFish project
------------------------
Create a new Rails project::
rails --database=postgresql MyMapFishProject
cd MyMapFishProject
Install the latest version of the Mapfish plugin::
./script/plugin install http://www.mapfish.org/svn/mapfish/implementations/rails-plugin/mapfish/trunk
Install the latest version of the Mapfish client libraries::
rake mapfish:install_client
Install the required plugins and gems::
sudo gem install GeoRuby
./script/plugin install git://github.com/fragility/spatial_adapter.git
#For printing:
sudo gem install Platform
sudo gem install open4 #Unix only
sudo gem install win-open3 #Windows only
Set up the PostGIS database
---------------------------
If you don't have PostGIS database template yet, create one::
sudo su - postgres
createdb -E UTF8 template_postgis # Create the template spatial database.
createlang -d template_postgis plpgsql # Adding PLPGSQL language support.
psql -d template_postgis -f /usr/share/postgresql-8.3-postgis/lwpostgis.sql
psql -d template_postgis -f /usr/share/postgresql-8.3-postgis/spatial_ref_sys.sql
cat < 44.1, :south => -9.9, :east => -22.4, :west => 55.2).each { |st| WeatherStation.create(:name => st.stationName, :geom => Point.from_x_y(st.lng, st.lat)) }"
(needs lib/geonames.rb from http://github.com/pka/map_layers/tree in lib/)
Create a resource for an existing table::
./script/generate mapfish_resource --skip-migration --skip-fixture Country
Insert table name and custom id in ``app/models/country.rb``::
set_table_name "world_factbk_simplified"
set_primary_key "gid"
Starting the web server
-----------------------
You should be all set now. Try starting the web server::
./script/server
and checkout ``http://localhost:3000/countries?maxfeatures=10``
Your browser should be displaying a nice GeoJSON object!
You can now go back to your webpage and configure MapFish widgets to access your layer through the URL ``http://localhost:3000/countries``.
For running in production mode you should build and install the compressed runtime libraries::
rake mapfish:build_scripts
rake mapfish:copy_scripts
The development libraries in public/mfbase are not needed in a production deployment and the
CSS and Javascript files can be included from public/javascripts::
Using the print module
----------------------
The Rails MapFish plugin can generate a controller for the `MapFish print protocol `_, to produce PDF outputs of your maps. (see `MapFish PrintModuleDoc `_)::
./script/generate print_controller Print
You'll need to have `Sun's JRE `_ installed to make this working.
* The print module should be ready & responding to /print/info to get print configuration.
Don't forget to adapt config/print.yaml (see `configuration `_. For instance, you should at least allow the print service to access the WMS services you're using.
If you're getting errors, check your log file to get debug information.
* Once this is done, you can integrate the `MapFish print widgets `_ into your client application, which give you the ability to output nice customizable PDF with your maps. Examples can be `found here `_.
License
-------
The Mapfish server plugin for Rails is released under the LGPL license.
*Copyright (c) 2008 Pirmin Kalberer, Sourcepole AG*