From d07d0c4f4d30b3dbf0d52c7669a533c0ba9badfc Mon Sep 17 00:00:00 2001 From: lrbalt Date: Tue, 3 Jun 2008 18:20:42 +0000 Subject: [PATCH] merges changes from tracks1.6 to trunk git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@866 a4c988fc-2ded-0310-b66e-134b36920a42 --- tracks/README_FIRST | 2 + tracks/doc/CHANGELOG | 4 +- tracks/doc/manual.html | 70 +++++++++++++++++------------ tracks/doc/manual.markdown | 69 ++++++++++++++++------------ tracks/doc/manual.pdf | Bin 127175 -> 139328 bytes tracks/doc/manual.tex | 89 +++++++++++++++++++++++-------------- 6 files changed, 143 insertions(+), 91 deletions(-) diff --git a/tracks/README_FIRST b/tracks/README_FIRST index dcc8f3ed..ee67d7a4 100644 --- a/tracks/README_FIRST +++ b/tracks/README_FIRST @@ -11,6 +11,8 @@ * Copyright: (cc) 2004-2008 rousette.org.uk. * License: GNU GPL +**An important note for version 1.6: OpenID support is broken in this release. The fix isn't trivial because of changes to the `ruby-openid` gem, so we wanted to get this version out now and fix OpenID for the next release. If you depend on OpenID integration, we recommend waiting until the next release.** + All the documentation for Tracks can be found within the /doc directory. It contains a manual in HTML (manual.html) or PDF format (manual.pdf), and this includes full instructions for both new installations and upgrades from older installations of Tracks. The instructions might appear long and intimidatingly complex, but that is mostly because of the number of different platforms supported, and the different configurations which can be used (e.g. running Tracks on your local computer or on a remote server). If you choose the appropriate section for your situation (installation vs. upgrade), and use the easiest (recommended) method, you should find the instructions easy to follow. If you encounter problems, try searching the wiki, forum or mailing list (URLs above), and ask a question if you cannot find a solution to your problem. For those upgrading, change notes are available in /doc/CHANGELOG. If you are thinking about contributing towards the development of Tracks, please read /doc/README_DEVELOPERS for general information, or /doc/tracks_api_wrapper.rb for information on Tracks' API. diff --git a/tracks/doc/CHANGELOG b/tracks/doc/CHANGELOG index ff31fb67..1dd8e775 100644 --- a/tracks/doc/CHANGELOG +++ b/tracks/doc/CHANGELOG @@ -14,8 +14,8 @@ Trac (for bug reports and feature requests): http://dev.rousette.org.uk/report/6 Wiki (deprecated - please use Trac): http://www.rousette.org.uk/projects/wiki/ == Version 1.6 -1. upgrade to rails 2.0 -2. new mobile interface +1. upgrade to rails 2.0.2 +2. new mobile interface (with some iPhone compatibility fixes) 3. new search functionality to search on todos, projects, contexts and notes 4. Bugfixes diff --git a/tracks/doc/manual.html b/tracks/doc/manual.html index 8a3b4383..9e229608 100644 --- a/tracks/doc/manual.html +++ b/tracks/doc/manual.html @@ -14,22 +14,24 @@ http://creativecommons.org/licenses/by-nc-sa/3.0/" /> - - Tracks 1.5 Manual - + + Tracks 1.6 Manual + -

Installing Tracks 1.5

+

Installing Tracks 1.6

Introduction

-

Tracks 1.5 has been thoroughly beta tested by a large number of people, and should be fully stable for everyday use. However, once set up, Tracks will contain the majority of your plans for your work and personal life, so it’s only sensible to make sure that you have frequent, reliable backups of your data. Full changenotes on the release can be found in doc/CHANGELOG. Full API documentation can be found at doc/app/index.html, once you have run rake appdoc

+

An important note for version 1.6: OpenID support is broken in this release. The fix isn’t trivial because of changes to the ruby-openid gem, so we wanted to get this version out now and fix OpenID for the next release. If you depend on OpenID integration, we recommend waiting until the next release.

-

There are two methods of downloading Tracks 1.5 (N.B. These links will not work until Tracks 1.5 final is released)):

+

Tracks 1.6 has been thoroughly beta tested by a large number of people, and should be fully stable for everyday use. However, once set up, Tracks will contain the majority of your plans for your work and personal life, so it’s only sensible to make sure that you have frequent, reliable backups of your data. Full changenotes on the release can be found in doc/CHANGELOG. Full API documentation can be found at doc/app/index.html, once you have run rake appdoc

+ +

There are two methods of downloading Tracks 1.6:

  1. (Recommended for most people) Download the zipped package, and unzip in your preferred location (e.g. ~/Sites for Mac OS X users).
  2. @@ -59,7 +61,7 @@ http://creativecommons.org/licenses/by-nc-sa/3.0/" />
    1. Tracks itself
    2. -
    3. Rails 1.2.5 (installed in the /vendor/rails directory, so you do not need to install Rails yourself)
    4. +
    5. Rails 2.0.2 (installed in the /vendor/rails directory, so you do not need to install Rails yourself)
    6. An empty SQLite3 database, set up with the correct database schema
    @@ -73,11 +75,11 @@ http://creativecommons.org/licenses/by-nc-sa/3.0/" />
  3. Database. The easiest option is to use SQLite3, as the database is included in the package. All you need then is the sqlite3-ruby gem, as described in step 2, and the SQLite3 libraries and binary (see sqlite.org for downloads and installation instructions). If you want to use MySQL, download and install a package for your platform from MySQL.com. The basic steps for Postgresql should be similar to those for MySQL, but they will not be discussed further here.
-

If you are using Unix, you might find this guide by c00i90wn helpful. It was written for Tracks 1.043, but it should work for Tracks 1.5.

+

If you are using Unix, you might find this guide by c00i90wn helpful. It was written for Tracks 1.043, but it should work for Tracks 1.6.

Installation

-

This description is intended for people installing Tracks from scratch. If you would like to upgrade an existing installation, please see Upgrading to Tracks 1.5.

+

This description is intended for people installing Tracks from scratch. If you would like to upgrade an existing installation, please see Upgrading to Tracks 1.6.

  1. Unzip tracks and install in a directory
  2. @@ -85,7 +87,7 @@ http://creativecommons.org/licenses/by-nc-sa/3.0/" />
    1. SQLite3 - change database.yml to point to SQLite3 database
    2. MySQL - create new MySQL db and grant all privileges
  3. Configure some variables
  4. -
  5. Populate the database with the Tracks 1.5 schema
  6. +
  7. Populate the database with the Tracks 1.6 schema
  8. Start the server
  9. Visit Tracks in a browser
  10. Customise Tracks
  11. @@ -101,7 +103,7 @@ http://creativecommons.org/licenses/by-nc-sa/3.0/" />
    1. SQLite3. All you need to do is make sure that you point Tracks to the included SQLite3 database in /db in the next step, Configure variables.
    2. -
    3. MySQL. Once you have MySQL installed, you need to create a database to use with Tracks 1.5. Go into a terminal and issue the following commands:
    4. +
    5. MySQL. Once you have MySQL installed, you need to create a database to use with Tracks 1.6. Go into a terminal and issue the following commands:
    @@ -116,23 +118,23 @@ http://creativecommons.org/licenses/by-nc-sa/3.0/" />
     

    Configure variables

      -
    1. If you downloaded Tracks 1.5 via Subversion, you need to duplicate the files database.yml.tmpl and environment.yml.tmpl and remove the *.tmpl extension from the duplicates. Similarly, duplicate /log.tmpl and remove the *.tmpl extension, then edit the files as described in steps 2 and 3.
    2. +
    3. If you downloaded Tracks 1.6 via Subversion, you need to duplicate the files database.yml.tmpl and environment.yml.tmpl and remove the *.tmpl extension from the duplicates. Similarly, duplicate /log.tmpl and remove the *.tmpl extension, then edit the files as described in steps 2 and 3.
    4. Open the file /config/database.yml and edit the production: section with the details of your database. If you are using MySQL the adapter: line should read adapter: mysql, host: localhost (in the majority of cases), and your username and password should match those you assigned when you created the database. If you are using SQLite3, you should have only two lines under the production section: adapter: sqlite3 and database: db/tracks-15-blank.db. If you downloaded the zipped file, the database.yml file is already configured to use the provided SQLite3 file.
    5. Open the file /config/environment.rb, and read through the settings to make sure that they suit your setup. In most cases, all you need to change is the SALT = "change-me" line (change the string “change-me” to some other string of your choice), and the time zone setting.
    6. If you are using Windows, you may need to check the ‘shebang’ lines (#!/usr/bin/env ruby) of the /public/dispatch.* files and all the files in the /script directory. They are set to #!/usr/bin/env ruby by default. This should work for all *nix based setups (Linux or Mac OS X), but Windows users will probably have to change it to something like #c:/ruby/bin/ruby to point to the Ruby binary on your system.
    -

    Populate your database with the Tracks 1.5 schema

    +

    Populate your database with the Tracks 1.6 schema

    -

    Open a terminal and change into the root of your Tracks 1.5 directory. Enter the following command:

    +

    Open a terminal and change into the root of your Tracks 1.6 directory. Enter the following command:

    rake db:migrate RAILS_ENV=production

    -

    This will update your database with the required schema for Tracks 1.5. If you are using SQLite3, it is not strictly necessary, because the SQLite3 database included with Tracks already has the schema included in it, but it should not do any harm to run the command (nothing will happen if it is up to date).

    +

    This will update your database with the required schema for Tracks 1.6. If you are using SQLite3, it is not strictly necessary, because the SQLite3 database included with Tracks already has the schema included in it, but it should not do any harm to run the command (nothing will happen if it is up to date).

    Start the server

    -

    While still in the Terminal inside the Tracks 1.5 root directory, issue the following command:

    +

    While still in the Terminal inside the Tracks 1.6 root directory, issue the following command:

    script/server -e production

    @@ -146,7 +148,19 @@ http://creativecommons.org/licenses/by-nc-sa/3.0/" />

    Once logged in, add some Contexts and Projects, and then go ahead and add your actions. You might also want to visit the Preferences page to edit various settings to your liking. Have fun!

    -

    Upgrading to Tracks 1.5

    +

    Upgrading to Tracks 1.6

    + +

    Upgrading from Tracks 1.5

    + +

    There are no changes to the database between 1.5 and 1.6, but you will need to upgrade your config/environment.rb with the new content from config/environment.rb.tmpl included in 1.6, as the format of this file has changed a great deal between 1.5 and 1.6.

    + +
      +
    1. Back up your existing database and installation of Tracks
    2. +
    3. Install Tracks 1.6 in a new directory
    4. +
    5. Copy over a few configuration files from your Tracks 1.043 directory. If using SQLite3, copy the old database into the new Tracks 1.6 directory
    6. +
    7. Run script/server inside your Tracks 1.6 directory to start up Tracks 1.6.
    8. +
    9. Once you are happy that everything is working well, delete your old Tracks directory.
    10. +

    Upgrading from Tracks 1.043

    @@ -154,10 +168,10 @@ http://creativecommons.org/licenses/by-nc-sa/3.0/" />
    1. Back up your existing database and installation of Tracks
    2. -
    3. Install Tracks 1.5 in a new directory
    4. -
    5. Copy over a few configuration files from your Tracks 1.043 directory. If using SQLite3, copy the old database into the new Tracks 1.5 directory
    6. +
    7. Install Tracks 1.6 in a new directory
    8. +
    9. Copy over a few configuration files from your Tracks 1.043 directory. If using SQLite3, copy the old database into the new Tracks 1.6 directory
    10. Run rake db:migrate RAILS_ENV=production to update your old database to the new schema – you did back up your database didn’t you?
    11. -
    12. Run script/server inside your Tracks 1.5 directory to start up Tracks 1.5.
    13. +
    14. Run script/server inside your Tracks 1.6 directory to start up Tracks 1.6.
    15. Once you are happy that everything is working well, delete your old Tracks directory.
    @@ -167,11 +181,11 @@ http://creativecommons.org/licenses/by-nc-sa/3.0/" />

    mysqldump –-user [user name] –-password=[password] [database name] > [dump file]

    -

    Rename your old Tracks installation (e.g. to ‘tracks-old’) so that you can install Tracks 1.5 along side it.

    +

    Rename your old Tracks installation (e.g. to ‘tracks-old’) so that you can install Tracks 1.6 along side it.

    -

    Install Tracks 1.5

    +

    Install Tracks 1.6

    -

    There are two methods of downloading Tracks 1.5:

    +

    There are two methods of downloading Tracks 1.6:

    1. (Recommended for most people) Download the zipped package, and unzip in your preferred location (e.g. ~/Sites for Mac OS X users).
    2. @@ -191,7 +205,7 @@ http://creativecommons.org/licenses/by-nc-sa/3.0/" />
      1. Copy /config/database.yml from your old Tracks directory to the same location in the new one. Double check that the information there is still correct.
      2. -
      3. Duplicate /config/environment.rb.tmpl in the Tracks 1.5 directory, and rename the file to environment.rb. Open the file and alter the line SALT = "change-me" so that it matches what you had in this file in your old installation. You may also want to change the time zone setting as appropriate for your location (ENV['TZ'] = 'US/Eastern'). If you have made any other customisations to environment.rb in the past, copy those over, but the contents of the file have changed quite a lot since 1.043, so check it carefully.
      4. +
      5. Duplicate /config/environment.rb.tmpl in the Tracks 1.6 directory, and rename the file to environment.rb. Open the file and alter the line SALT = "change-me" so that it matches what you had in this file in your old installation. You may also want to change the time zone setting as appropriate for your location (ENV['TZ'] = 'US/Eastern'). If you have made any other customisations to environment.rb in the past, copy those over, but the contents of the file have changed quite a lot since 1.043, so check it carefully.
      6. Copy your /log directory over from your old installation to the root of the new one, or just rename /log.tmpl to log to start afresh.
      7. If you are using SQLite3, copy your database from /db in your old Tracks directory to the same location in the new one.
      8. If you are using Windows, you may need to check the ‘shebang’ lines (#!/usr/bin/env ruby)1 of the /public/dispatch.* files and all the files in the /script directory. They are set to #!/usr/bin/env ruby by default. Check the format of those lines in your old installation, and change the new ones as necessary.
      9. @@ -199,7 +213,7 @@ http://creativecommons.org/licenses/by-nc-sa/3.0/" />

        Update your old database to the new format

        -

        In a terminal, change directories so that you are inside the Tracks 1.5 directory. Then issue the command to update your Tracks 1.043 database to the format required for Tracks 1.5:

        +

        In a terminal, change directories so that you are inside the Tracks 1.6 directory. Then issue the command to update your Tracks 1.043 database to the format required for Tracks 1.6:

        rake db:migrate RAILS_ENV=production

        @@ -207,7 +221,7 @@ http://creativecommons.org/licenses/by-nc-sa/3.0/" />

        Start the server

        -

        If you’re still in the Tracks 1.5 root directory in a terminal, enter the following command to start up Tracks in production mode:

        +

        If you’re still in the Tracks 1.6 root directory in a terminal, enter the following command to start up Tracks in production mode:

        script/server -e production

        @@ -216,7 +230,7 @@ http://creativecommons.org/licenses/by-nc-sa/3.0/" />

        Clean up your old installation

        -

        Once you’re certain that your new Tracks 1.5 installation is working perfectly, you can delete your old Tracks directory.

        +

        Once you’re certain that your new Tracks 1.6 installation is working perfectly, you can delete your old Tracks directory.

        Upgrading from versions prior to 1.043

        @@ -234,7 +248,7 @@ http://creativecommons.org/licenses/by-nc-sa/3.0/" />
      10. Run the command rake db_schema_import inside the Tracks directory. This should import the upgraded schema for 1.043 into your new database.
      11. Run the command rake load_exported_fixtures which will import the contents of your old database from the fixtures files in db/exported_fixtures.
      12. If you are using Windows, you may need to check the ‘shebang’ lines (#!/usr/bin/env ruby)2 of the /public/dispatch.* files and all the files in the /script directory. They are set to #!/usr/bin/env ruby by default. Check the format of those lines in your old installation, and change the new ones as necessary.
      13. -
      14. Try starting up the server with script/server to make sure that all your data has migrated successfully. If all is well, follow the instructions above to upgrade from version 1.043 to Tracks 1.5. If you need to access Tracks from a mobile/cellular phone browser, visit http://yourdomain.com/mobile/. This mobile version is a special, lightweight version of Tracks, designed to use on a mobile browser.
      15. +
      16. Try starting up the server with script/server to make sure that all your data has migrated successfully. If all is well, follow the instructions above to upgrade from version 1.043 to Tracks 1.6. If you need to access Tracks from a mobile/cellular phone browser, visit http://yourdomain.com/mobile/. This mobile version is a special, lightweight version of Tracks, designed to use on a mobile browser.
      diff --git a/tracks/doc/manual.markdown b/tracks/doc/manual.markdown index 2c375b69..9cfe855e 100644 --- a/tracks/doc/manual.markdown +++ b/tracks/doc/manual.markdown @@ -1,8 +1,8 @@ -Title: Tracks 1.5 Manual +Title: Tracks 1.6 Manual Author: Tracks Development Team Date: 2008-04-07 -Revision: $Id: manual.markdown 811 2008-04-07 20:21:00Z bsag $ -Version: 1.5 +Revision: $Id: manual.markdown 864 2008-06-03 17:01:00Z bsag $ +Version: 1.6 Copyright: 2008 rousette.org.uk This work is licensed under a Creative Commons License. http://creativecommons.org/licenses/by-nc-sa/3.0/ @@ -14,13 +14,15 @@ CSS: manual.css -# Installing Tracks 1.5 # +# Installing Tracks 1.6 # ## Introduction ## -Tracks 1.5 has been thoroughly beta tested by a large number of people, and should be fully stable for everyday use. However, once set up, Tracks will contain the majority of your plans for your work and personal life, so it's only sensible to make sure that you have frequent, reliable backups of your data. Full changenotes on the release can be found in `doc/CHANGELOG`. Full API documentation can be found at `doc/app/index.html`, once you have run `rake appdoc` +**An important note for version 1.6: OpenID support is broken in this release. The fix isn't trivial because of changes to the `ruby-openid` gem, so we wanted to get this version out now and fix OpenID for the next release. If you depend on OpenID integration, we recommend waiting until the next release.** -There are two methods of downloading Tracks 1.5 **(N.B. These links will not work until Tracks 1.5 final is released)**): +Tracks 1.6 has been thoroughly beta tested by a large number of people, and should be fully stable for everyday use. However, once set up, Tracks will contain the majority of your plans for your work and personal life, so it's only sensible to make sure that you have frequent, reliable backups of your data. Full changenotes on the release can be found in `doc/CHANGELOG`. Full API documentation can be found at `doc/app/index.html`, once you have run `rake appdoc` + +There are two methods of downloading Tracks 1.6: 1. (Recommended for most people) Download the [zipped package](http://www.rousette.org.uk/projects/files/tracks-current.zip), and unzip in your preferred location (e.g. `~/Sites` for Mac OS X users). 2. Download using Subversion: @@ -46,7 +48,7 @@ If you'd like an easy way to access Tracks from any internet-connected computer, ### What is included with the Tracks package ### 1. Tracks itself -2. Rails 1.2.5 (installed in the `/vendor/rails` directory, so you do not need to install Rails yourself) +2. Rails 2.0.2 (installed in the `/vendor/rails` directory, so you do not need to install Rails yourself) 3. An empty SQLite3 database, set up with the correct database schema ### What you need to install [whatyouneed] ### @@ -57,18 +59,18 @@ If you don't want to (or can't) use one of the all in one installations, you'll 2. **RubyGems**. The gems needed by Rails to interact with the database have to be compiled on the platform on which they will be run, so we cannot include them with the Tracks package, unlike some other gems. So you will need to [download](http://rubyforge.org/frs/?group_id=126) and install RubyGems (run `ruby setup.rb` after extracting the package). Note that once again, Mac OS X Leopard users get an easy life, because RubyGems and the SQLite3 gem is already installed. Once installed you can use RubyGems to install the gems you need for your database. If you are using SQLite3, run `sudo gem install sqlite3-ruby`, then select the appropriate package for your platform (version 1.2.1 recommended). You can use MySQL without installing a gem, but installing the gem can speed things up a bit: `sudo install gem mysql`. If you're using Leopard, there are a few work-arounds necessary, which are explained on [Mac OS Forge](http://trac.macosforge.org/projects/ruby/wiki/Troubleshooting#IcannotbuildrubymysqlonLeopardwithmysql.combinaries). The ruby-mysql bindings can sometimes be a bit troublesome to install, so to be honest, it's probably not worth the bother unless you are trying to wring maximum speed out of your system. If you are using PostgreSQL, then you can install a postgres gem: `gem install postgres`. 3. **Database**. The easiest option is to use SQLite3, as the database is included in the package. All you need then is the `sqlite3-ruby` gem, as described in step 2, and the SQLite3 libraries and binary (see [sqlite.org](http://sqlite.org/download.html) for downloads and installation instructions). If you want to use MySQL, download and install a package for your platform from [MySQL.com](http://dev.mysql.com/downloads/mysql/5.0.html). The basic steps for Postgresql should be similar to those for MySQL, but they will not be discussed further here. -If you are using Unix, you might find [this guide](http://www.cooldown.com.ar/2006/12/16/install-tracks-on-ubuntu-or-debian/) by c00i90wn helpful. It was written for Tracks 1.043, but it should work for Tracks 1.5. +If you are using Unix, you might find [this guide](http://www.cooldown.com.ar/2006/12/16/install-tracks-on-ubuntu-or-debian/) by c00i90wn helpful. It was written for Tracks 1.043, but it should work for Tracks 1.6. ## Installation ## -This description is intended for people installing Tracks from scratch. If you would like to upgrade an existing installation, please see [Upgrading to Tracks 1.5][upgrading]. +This description is intended for people installing Tracks from scratch. If you would like to upgrade an existing installation, please see [Upgrading to Tracks 1.6][upgrading]. 1. [Unzip tracks][unzip_install] and install in a directory 2. Decide on a [database][database_install] to use 1. SQLite3 - change database.yml to point to SQLite3 database 2. MySQL - create new MySQL db and grant all privileges 3. [Configure some variables][config_install] -4. Populate the database with the [Tracks 1.5 schema][rake_install] +4. Populate the database with the [Tracks 1.6 schema][rake_install] 5. [Start the server][startserver_install] 6. [Visit Tracks in a browser][signup_install] 7. [Customise Tracks][customise_install] @@ -82,7 +84,7 @@ Unzip the package and move Tracks into the directory you want to run it from. Fo Before you go any further, you need to decide which database you will use. See the [What you need to install][whatyouneed] section for details on installing the required components for you choice of database. 1. **SQLite3**. All you need to do is make sure that you point Tracks to the included SQLite3 database in `/db` in the next step, [Configure variables][config_install]. -2. **MySQL**. Once you have MySQL installed, you need to create a database to use with Tracks 1.5. Go into a terminal and issue the following commands: +2. **MySQL**. Once you have MySQL installed, you need to create a database to use with Tracks 1.6. Go into a terminal and issue the following commands:
       
           mysql -uroot -p
      @@ -94,22 +96,22 @@ Before you go any further, you need to decide which database you will use. See t
       
       ### Configure variables [config_install] ###
       
      -1. If you downloaded Tracks 1.5 via Subversion, you need to duplicate the files `database.yml.tmpl` and `environment.yml.tmpl` and remove the `*.tmpl` extension from the duplicates. Similarly, duplicate `/log.tmpl` and remove the `*.tmpl` extension, then edit the files as described in steps 2 and 3.
      +1. If you downloaded Tracks 1.6 via Subversion, you need to duplicate the files `database.yml.tmpl` and `environment.yml.tmpl` and remove the `*.tmpl` extension from the duplicates. Similarly, duplicate `/log.tmpl` and remove the `*.tmpl` extension, then edit the files as described in steps 2 and 3.
       2. Open the file `/config/database.yml` and edit the `production:` section with the details of your database. If you are using MySQL the `adapter:` line should read `adapter: mysql`, `host: localhost` (in the majority of cases), and your username and password should match those you assigned when you created the database. If you are using SQLite3, you should have only two lines under the production section: `adapter: sqlite3` and `database: db/tracks-15-blank.db`. If you downloaded the zipped file, the database.yml file is already configured to use the provided SQLite3 file.
       3. Open the file `/config/environment.rb`, and read through the settings to make sure that they suit your setup. In most cases, all you need to change is the `SALT = "change-me"` line (change the string "change-me" to some other string of your choice), and the time zone setting.
       4. If you are using Windows, you may need to check the 'shebang' lines (`#!/usr/bin/env ruby`) of the `/public/dispatch.*` files and all the files in the `/script` directory. They are set to `#!/usr/bin/env ruby` by default. This should work for all *nix based setups (Linux or Mac OS X), but Windows users will probably have to change it to something like `#c:/ruby/bin/ruby` to point to the Ruby binary on your system.
       
      -### Populate your database with the Tracks 1.5 schema [rake_install] ###
      +### Populate your database with the Tracks 1.6 schema [rake_install] ###
       
      -Open a terminal and change into the root of your Tracks 1.5 directory. Enter the following command:
      +Open a terminal and change into the root of your Tracks 1.6 directory. Enter the following command:
       
       `rake db:migrate RAILS_ENV=production`
       
      -This will update your database with the required schema for Tracks 1.5. If you are using SQLite3, it is not strictly necessary, because the SQLite3 database included with Tracks already has the schema included in it, but it should not do any harm to run the command (nothing will happen if it is up to date).
      +This will update your database with the required schema for Tracks 1.6. If you are using SQLite3, it is not strictly necessary, because the SQLite3 database included with Tracks already has the schema included in it, but it should not do any harm to run the command (nothing will happen if it is up to date).
       
       ### Start the server [startserver_install] ###
       
      -While still in the Terminal inside the Tracks 1.5 root directory, issue the following command:
      +While still in the Terminal inside the Tracks 1.6 root directory, issue the following command:
       
       `script/server -e production`
       
      @@ -123,17 +125,28 @@ Visit `http://0.0.0.0:3000/signup` in a browser (or whatever URL and port was re
       
       Once logged in, add some Contexts and Projects, and then go ahead and add your actions. You might also want to visit the Preferences page to edit various settings to your liking. Have fun!
       
      -# Upgrading to Tracks 1.5 [upgrading] #
      +# Upgrading to Tracks 1.6 [upgrading] #
      +
      +## Upgrading from Tracks 1.5 [upgrading_1.5] ##
      +
      +There are no changes to the database between 1.5 and 1.6, but you will need to upgrade your `config/environment.rb` with the new content from `config/environment.rb.tmpl` included in 1.6, as the format of this file has changed a great deal between 1.5 and 1.6.
      +
      +1. [Back up][backup_upgrade] your existing database and installation of Tracks
      +2. [Install Tracks 1.6][install_upgrade] in a new directory
      +3. [Copy over][config_upgrade] a few configuration files from your Tracks 1.043 directory. If using SQLite3, copy the old database into the new Tracks 1.6 directory
      +4. Run `script/server` inside your Tracks 1.6 directory to [start up Tracks 1.6][startserver_upgrade].
      +5. Once you are happy that everything is working well, [delete your old Tracks directory][cleanup_upgrade].
      +
       
       ## Upgrading from Tracks 1.043 [upgrading_1043] ##
       
       This should be a relatively straightforward, and involves the following main steps:
       
       1. [Back up][backup_upgrade] your existing database and installation of Tracks
      -2. [Install Tracks 1.5][install_upgrade] in a new directory
      -3. [Copy over][config_upgrade] a few configuration files from your Tracks 1.043 directory. If using SQLite3, copy the old database into the new Tracks 1.5 directory
      +2. [Install Tracks 1.6][install_upgrade] in a new directory
      +3. [Copy over][config_upgrade] a few configuration files from your Tracks 1.043 directory. If using SQLite3, copy the old database into the new Tracks 1.6 directory
       5. Run `rake db:migrate RAILS_ENV=production` to [update your old database][rake_upgrade] to the new schema -- you did back up your database didn't you?
      -6. Run `script/server` inside your Tracks 1.5 directory to [start up Tracks 1.5][startserver_upgrade].
      +6. Run `script/server` inside your Tracks 1.6 directory to [start up Tracks 1.6][startserver_upgrade].
       7. Once you are happy that everything is working well, [delete your old Tracks directory][cleanup_upgrade].
       
       ### Backing up [backup_upgrade] ###
      @@ -142,11 +155,11 @@ It's very important that you **back up your database** before you start the upgr
       
       `mysqldump –-user [user name] –-password=[password] [database name] > [dump file]`
       
      -Rename your old Tracks installation (e.g. to 'tracks-old') so that you can install Tracks 1.5 along side it.
      +Rename your old Tracks installation (e.g. to 'tracks-old') so that you can install Tracks 1.6 along side it.
       
      -### Install Tracks 1.5 [install_upgrade] ###
      +### Install Tracks 1.6 [install_upgrade] ###
       
      -There are two methods of downloading Tracks 1.5:
      +There are two methods of downloading Tracks 1.6:
       
       1. (Recommended for most people) Download the [zipped package](http://www.rousette.org.uk/projects/files/tracks-current.zip), and unzip in your preferred location (e.g. `~/Sites` for Mac OS X users).
       2. Download using Subversion:
      @@ -162,14 +175,14 @@ There are two methods of downloading Tracks 1.5:
       There are a few files you need to copy over from your old installation. If you copy them over rather than moving them, you can still run your old version of Tracks if anything goes awry with the installation process.
       
       1. Copy `/config/database.yml` from your old Tracks directory to the same location in the new one. Double check that the information there is still correct.
      -2. Duplicate `/config/environment.rb.tmpl` in the Tracks 1.5 directory, and rename the file to `environment.rb`. Open the file and alter the line `SALT = "change-me"` so that it matches what you had in this file in your old installation. You may also want to change the time zone setting as appropriate for your location (`ENV['TZ'] = 'US/Eastern'`). If you have made any other customisations to `environment.rb` in the past, copy those over, but the contents of the file have changed quite a lot since 1.043, so check it carefully.
      +2. Duplicate `/config/environment.rb.tmpl` in the Tracks 1.6 directory, and rename the file to `environment.rb`. Open the file and alter the line `SALT = "change-me"` so that it matches what you had in this file in your old installation. You may also want to change the time zone setting as appropriate for your location (`ENV['TZ'] = 'US/Eastern'`). If you have made any other customisations to `environment.rb` in the past, copy those over, but the contents of the file have changed quite a lot since 1.043, so check it carefully.
       3. Copy your `/log` directory over from your old installation to the root of the new one, or just rename `/log.tmpl` to `log` to start afresh.
       4. If you are using SQLite3, copy your database from `/db` in your old Tracks directory to the same location in the new one.
       5. If you are using Windows, you may need to check the 'shebang' lines (`#!/usr/bin/env ruby`)[^env] of the `/public/dispatch.*` files and all the files in the `/script` directory. They are set to `#!/usr/bin/env ruby` by default. Check the format of those lines in your old installation, and change the new ones as necessary.
       
       ### Update your old database to the new format [rake_upgrade] ###
       
      -In a terminal, change directories so that you are inside the Tracks 1.5 directory. Then issue the command to update your Tracks 1.043 database to the format required for Tracks 1.5:
      +In a terminal, change directories so that you are inside the Tracks 1.6 directory. Then issue the command to update your Tracks 1.043 database to the format required for Tracks 1.6:
       
       `rake db:migrate RAILS_ENV=production`
       
      @@ -177,7 +190,7 @@ Watch the output carefully for errors, but it should report at the end of the pr
       
       ### Start the server [startserver_upgrade] ###
       
      -If you're still in the Tracks 1.5 root directory in a terminal, enter the following command to start up Tracks in production mode:
      +If you're still in the Tracks 1.6 root directory in a terminal, enter the following command to start up Tracks in production mode:
       
       `script/server -e production`
       
      @@ -186,7 +199,7 @@ Visit the URL indicated by the output (e.g. `** Mongrel available at 0.0.0.0:300
       
       ### Clean up your old installation [cleanup_upgrade] ###
       
      -Once you're certain that your new Tracks 1.5 installation is working perfectly, you can delete your old Tracks directory.
      +Once you're certain that your new Tracks 1.6 installation is working perfectly, you can delete your old Tracks directory.
       
       [^env]: The `env` binary helps to locate other binaries, regardless of their location. If you don't have `env` installed, you'll need to change this line to point to the location of your Ruby binary.
       
      @@ -205,4 +218,4 @@ The best option for versions prior to 1.043 is to follow the instructions below
       9. Run the command `rake db_schema_import` inside the Tracks directory. This should import the upgraded schema for 1.043 into your new database.
       10. Run the command `rake load_exported_fixtures` which will import the contents of your old database from the fixtures files in `db/exported_fixtures`.
       11. If you are using Windows, you may need to check the 'shebang' lines (`#!/usr/bin/env ruby`)[^env] of the `/public/dispatch.*` files and all the files in the `/script` directory. They are set to `#!/usr/bin/env ruby` by default. Check the format of those lines in your old installation, and change the new ones as necessary.
      -12. Try starting up the server with `script/server` to make sure that all your data has migrated successfully. If all is well, follow the instructions above to [upgrade from version 1.043][upgrading_1043] to Tracks 1.5. If you need to access Tracks from a mobile/cellular phone browser, visit `http://yourdomain.com/mobile/`. This mobile version is a special, lightweight version of Tracks, designed to use on a mobile browser.
      \ No newline at end of file
      +12. Try starting up the server with `script/server` to make sure that all your data has migrated successfully. If all is well, follow the instructions above to [upgrade from version 1.043][upgrading_1043] to Tracks 1.6. If you need to access Tracks from a mobile/cellular phone browser, visit `http://yourdomain.com/mobile/`. This mobile version is a special, lightweight version of Tracks, designed to use on a mobile browser.
      \ No newline at end of file
      diff --git a/tracks/doc/manual.pdf b/tracks/doc/manual.pdf
      index 9153a77407792b6435954ccf062f9589702afccb..32a69dfcb7477e113ce956a1bdae23364b2ed647 100644
      GIT binary patch
      delta 62083
      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

      F%PF*pQ8g$yvy*=uvq{#@6&XOPH5_AyBuGp-lo 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 Z=j$Kj>*UN1cmScComoms+enA~{{fNurhfnc diff --git a/tracks/doc/manual.tex b/tracks/doc/manual.tex index 59e6880b..ab9aae0e 100644 --- a/tracks/doc/manual.tex +++ b/tracks/doc/manual.tex @@ -112,11 +112,11 @@ \usepackage{booktabs} % Better tables \usepackage{tabulary} % Support longer table cells \usepackage[utf8]{inputenc} % For UTF-8 support -% \usepackage{xcolor} % Allow for color (annotations) +%\usepackage{xcolor} % Allow for color (annotations) %\geometry{landscape} % Activate for rotated page geometry -% \usepackage[parfill]{parskip} % Activate to begin paragraphs with an empty +%\usepackage[parfill]{parskip} % Activate to begin paragraphs with an empty % line rather than an indent @@ -133,11 +133,11 @@ \date{2008-04-07} \def\format{complete} \def\latexxslt{memoir-twosided-manual.xslt} -\def\revision{Revision: \$Id: manual.markdown 811 2008-04-07 20:21:00Z bsag \$} -\def\mytitle{Tracks 1.5 Manual} -\def\version{1.5} -\usepackage{xmpincl} -\includexmp{CCAttributionShareAlike} +\def\revision{Revision: \$Id: manual.markdown 864 2008-06-03 17:01:00Z bsag \$} +\def\mytitle{Tracks 1.6 Manual} +\def\version{1.6} +%%\usepackage{xmpincl} +%%\includexmp{CCAttributionShareAlike} % @@ -254,16 +254,19 @@ \setlength{\parskip}{\baselineskip/2} \mainmatter -\chapter{Installing Tracks 1.5} -\label{installingtracks1.5} +\chapter{Installing Tracks 1.6} +\label{installingtracks1.6} \section{Introduction} \label{introduction} -Tracks 1.5 has been thoroughly beta tested by a large number of people, and should be fully stable for everyday use. However, once set up, Tracks will contain the majority of your plans for your work and personal life, so it's only sensible to make sure that you have frequent, reliable backups of your data. Full changenotes on the release can be found in \texttt{doc/CHANGELOG}. Full API documentation can be found at \texttt{doc/app/index.html}, once you have run \texttt{rake appdoc} +\textbf{An important note for version 1.6: OpenID support is broken in this release. The fix isn't trivial because of changes to the \texttt{ruby-openid} gem, so we wanted to get this version out now and fix OpenID for the next release. If you depend on OpenID integration, we recommend waiting until the next release.} -There are two methods of downloading Tracks 1.5 \textbf{(N.B. These links will not work until Tracks 1.5 final is released)}): +Tracks 1.6 has been thoroughly beta tested by a large number of people, and should be fully stable for everyday use. However, once set up, Tracks will contain the majority of your plans for your work and personal life, so it's only sensible to make sure that you have frequent, reliable backups of your data. Full changenotes on the release can be found in \texttt{doc/CHANGELOG}. Full API documentation can be found at \texttt{doc/app/index.html}, once you have run \texttt{rake appdoc} + + +There are two methods of downloading Tracks 1.6: \begin{enumerate} @@ -311,7 +314,7 @@ If you'd like an easy way to access Tracks from any internet-connected computer, \item Tracks itself -\item Rails 1.2.5 (installed in the \texttt{/vendor/rails} directory, so you do not need to install Rails yourself) +\item Rails 2.0.2 (installed in the \texttt{/vendor/rails} directory, so you do not need to install Rails yourself) \item An empty SQLite3 database, set up with the correct database schema \end{enumerate} @@ -332,13 +335,13 @@ If you don't want to (or can't) use one of the all in one installations, you'll \item \textbf{Database}. The easiest option is to use SQLite3, as the database is included in the package. All you need then is the \texttt{sqlite3-ruby} gem, as described in step 2, and the SQLite3 libraries and binary (see \href{http://sqlite.org/download.html}{sqlite.org} for downloads and installation instructions). If you want to use MySQL, download and install a package for your platform from \href{http://dev.mysql.com/downloads/mysql/5.0.html}{MySQL.com}. The basic steps for Postgresql should be similar to those for MySQL, but they will not be discussed further here. \end{enumerate} -If you are using Unix, you might find \href{http://www.cooldown.com.ar/2006/12/16/install-tracks-on-ubuntu-or-debian/}{this guide} by c00i90wn helpful. It was written for Tracks 1.043, but it should work for Tracks 1.5. +If you are using Unix, you might find \href{http://www.cooldown.com.ar/2006/12/16/install-tracks-on-ubuntu-or-debian/}{this guide} by c00i90wn helpful. It was written for Tracks 1.043, but it should work for Tracks 1.6. \section{Installation} \label{installation} -This description is intended for people installing Tracks from scratch. If you would like to upgrade an existing installation, please see Upgrading to Tracks 1.5 (\autoref{upgrading}). +This description is intended for people installing Tracks from scratch. If you would like to upgrade an existing installation, please see Upgrading to Tracks 1.6 (\autoref{upgrading}). \begin{enumerate} @@ -359,7 +362,7 @@ This description is intended for people installing Tracks from scratch. If you w \item Configure some variables (\autoref{config_install}) -\item Populate the database with the Tracks 1.5 schema (\autoref{rake_install}) +\item Populate the database with the Tracks 1.6 schema (\autoref{rake_install}) \item Start the server (\autoref{startserver_install}) @@ -385,7 +388,7 @@ Before you go any further, you need to decide which database you will use. See t \item \textbf{SQLite3}. All you need to do is make sure that you point Tracks to the included SQLite3 database in \texttt{/db} in the next step, Configure variables (\autoref{config_install}). -\item \textbf{MySQL}. Once you have MySQL installed, you need to create a database to use with Tracks 1.5. Go into a terminal and issue the following commands: +\item \textbf{MySQL}. Once you have MySQL installed, you need to create a database to use with Tracks 1.6. Go into a terminal and issue the following commands: \end{enumerate} \begin{adjustwidth}{2.5em}{2.5em} @@ -407,7 +410,7 @@ Before you go any further, you need to decide which database you will use. See t \begin{enumerate} -\item If you downloaded Tracks 1.5 via Subversion, you need to duplicate the files \texttt{database.yml.tmpl} and \texttt{environment.yml.tmpl} and remove the \texttt{*.tmpl} extension from the duplicates. Similarly, duplicate \texttt{/log.tmpl} and remove the \texttt{*.tmpl} extension, then edit the files as described in steps 2 and 3. +\item If you downloaded Tracks 1.6 via Subversion, you need to duplicate the files \texttt{database.yml.tmpl} and \texttt{environment.yml.tmpl} and remove the \texttt{*.tmpl} extension from the duplicates. Similarly, duplicate \texttt{/log.tmpl} and remove the \texttt{*.tmpl} extension, then edit the files as described in steps 2 and 3. \item Open the file \texttt{/config/database.yml} and edit the \texttt{production:} section with the details of your database. If you are using MySQL the \texttt{adapter:} line should read \texttt{adapter: mysql}, \texttt{host: localhost} (in the majority of cases), and your username and password should match those you assigned when you created the database. If you are using SQLite3, you should have only two lines under the production section: \texttt{adapter: sqlite3} and \texttt{database: db/tracks-15-blank.db}. If you downloaded the zipped file, the database.yml file is already configured to use the provided SQLite3 file. @@ -416,22 +419,22 @@ Before you go any further, you need to decide which database you will use. See t \item If you are using Windows, you may need to check the `shebang' lines (\texttt{\#!/usr/bin/env ruby}) of the \texttt{/public/dispatch.*} files and all the files in the \texttt{/script} directory. They are set to \texttt{\#!/usr/bin/env ruby} by default. This should work for all *nix based setups (Linux or Mac OS X), but Windows users will probably have to change it to something like \texttt{\#c:/ruby/bin/ruby} to point to the Ruby binary on your system. \end{enumerate} -\subsection{Populate your database with the Tracks 1.5 schema} +\subsection{Populate your database with the Tracks 1.6 schema} \label{rake_install} -Open a terminal and change into the root of your Tracks 1.5 directory. Enter the following command: +Open a terminal and change into the root of your Tracks 1.6 directory. Enter the following command: \texttt{rake db:migrate RAILS\_ENV=production} -This will update your database with the required schema for Tracks 1.5. If you are using SQLite3, it is not strictly necessary, because the SQLite3 database included with Tracks already has the schema included in it, but it should not do any harm to run the command (nothing will happen if it is up to date). +This will update your database with the required schema for Tracks 1.6. If you are using SQLite3, it is not strictly necessary, because the SQLite3 database included with Tracks already has the schema included in it, but it should not do any harm to run the command (nothing will happen if it is up to date). \subsection{Start the server} \label{startserver_install} -While still in the Terminal inside the Tracks 1.5 root directory, issue the following command: +While still in the Terminal inside the Tracks 1.6 root directory, issue the following command: \texttt{script/server -e production} @@ -452,9 +455,29 @@ Visit \texttt{http://0.0.0.0:3000/signup} in a browser (or whatever URL and port Once logged in, add some Contexts and Projects, and then go ahead and add your actions. You might also want to visit the Preferences page to edit various settings to your liking. Have fun! -\chapter{Upgrading to Tracks 1.5} +\chapter{Upgrading to Tracks 1.6} \label{upgrading} +\section{Upgrading from Tracks 1.5} +\label{upgrading_1.5} + +There are no changes to the database between 1.5 and 1.6, but you will need to upgrade your \texttt{config/environment.rb} with the new content from \texttt{config/environment.rb.tmpl} included in 1.6, as the format of this file has changed a great deal between 1.5 and 1.6. + + +\begin{enumerate} + + +\item Back up (\autoref{backup_upgrade}) your existing database and installation of Tracks + +\item Install Tracks 1.6 (\autoref{install_upgrade}) in a new directory + +\item Copy over (\autoref{config_upgrade}) a few configuration files from your Tracks 1.043 directory. If using SQLite3, copy the old database into the new Tracks 1.6 directory + +\item Run \texttt{script/server} inside your Tracks 1.6 directory to start up Tracks 1.6 (\autoref{startserver_upgrade}). + +\item Once you are happy that everything is working well, delete your old Tracks directory (\autoref{cleanup_upgrade}). +\end{enumerate} + \section{Upgrading from Tracks 1.043} \label{upgrading_1043} @@ -466,13 +489,13 @@ This should be a relatively straightforward, and involves the following main ste \item Back up (\autoref{backup_upgrade}) your existing database and installation of Tracks -\item Install Tracks 1.5 (\autoref{install_upgrade}) in a new directory +\item Install Tracks 1.6 (\autoref{install_upgrade}) in a new directory -\item Copy over (\autoref{config_upgrade}) a few configuration files from your Tracks 1.043 directory. If using SQLite3, copy the old database into the new Tracks 1.5 directory +\item Copy over (\autoref{config_upgrade}) a few configuration files from your Tracks 1.043 directory. If using SQLite3, copy the old database into the new Tracks 1.6 directory \item Run \texttt{rake db:migrate RAILS\_ENV=production} to update your old database (\autoref{rake_upgrade}) to the new schema -- you did back up your database didn't you? -\item Run \texttt{script/server} inside your Tracks 1.5 directory to start up Tracks 1.5 (\autoref{startserver_upgrade}). +\item Run \texttt{script/server} inside your Tracks 1.6 directory to start up Tracks 1.6 (\autoref{startserver_upgrade}). \item Once you are happy that everything is working well, delete your old Tracks directory (\autoref{cleanup_upgrade}). \end{enumerate} @@ -486,13 +509,13 @@ It's very important that you \textbf{back up your database} before you start the \texttt{mysqldump ---user [user name] ---password=[password] [database name] $>$ [dump file]} -Rename your old Tracks installation (e.g.\ to `tracks-old') so that you can install Tracks 1.5 along side it. +Rename your old Tracks installation (e.g.\ to `tracks-old') so that you can install Tracks 1.6 along side it. -\subsection{Install Tracks 1.5} +\subsection{Install Tracks 1.6} \label{install_upgrade} -There are two methods of downloading Tracks 1.5: +There are two methods of downloading Tracks 1.6: \begin{enumerate} @@ -525,7 +548,7 @@ There are a few files you need to copy over from your old installation. If you c \item Copy \texttt{/config/database.yml} from your old Tracks directory to the same location in the new one. Double check that the information there is still correct. -\item Duplicate \texttt{/config/environment.rb.tmpl} in the Tracks 1.5 directory, and rename the file to \texttt{environment.rb}. Open the file and alter the line \texttt{SALT = "change-me"} so that it matches what you had in this file in your old installation. You may also want to change the time zone setting as appropriate for your location (\texttt{ENV['TZ'] = 'US/Eastern'}). If you have made any other customisations to \texttt{environment.rb} in the past, copy those over, but the contents of the file have changed quite a lot since 1.043, so check it carefully. +\item Duplicate \texttt{/config/environment.rb.tmpl} in the Tracks 1.6 directory, and rename the file to \texttt{environment.rb}. Open the file and alter the line \texttt{SALT = "change-me"} so that it matches what you had in this file in your old installation. You may also want to change the time zone setting as appropriate for your location (\texttt{ENV['TZ'] = 'US/Eastern'}). If you have made any other customisations to \texttt{environment.rb} in the past, copy those over, but the contents of the file have changed quite a lot since 1.043, so check it carefully. \item Copy your \texttt{/log} directory over from your old installation to the root of the new one, or just rename \texttt{/log.tmpl} to \texttt{log} to start afresh. @@ -537,7 +560,7 @@ There are a few files you need to copy over from your old installation. If you c \subsection{Update your old database to the new format} \label{rake_upgrade} -In a terminal, change directories so that you are inside the Tracks 1.5 directory. Then issue the command to update your Tracks 1.043 database to the format required for Tracks 1.5: +In a terminal, change directories so that you are inside the Tracks 1.6 directory. Then issue the command to update your Tracks 1.043 database to the format required for Tracks 1.6: \texttt{rake db:migrate RAILS\_ENV=production} @@ -549,7 +572,7 @@ Watch the output carefully for errors, but it should report at the end of the pr \subsection{Start the server} \label{startserver_upgrade} -If you're still in the Tracks 1.5 root directory in a terminal, enter the following command to start up Tracks in production mode: +If you're still in the Tracks 1.6 root directory in a terminal, enter the following command to start up Tracks in production mode: \texttt{script/server -e production} @@ -562,7 +585,7 @@ Visit the URL indicated by the output (e.g.\ \texttt{** Mongrel available at 0.0 \subsection{Clean up your old installation} \label{cleanup_upgrade} -Once you're certain that your new Tracks 1.5 installation is working perfectly, you can delete your old Tracks directory. +Once you're certain that your new Tracks 1.6 installation is working perfectly, you can delete your old Tracks directory. \section{Upgrading from versions prior to 1.043} @@ -596,7 +619,7 @@ The best option for versions prior to 1.043 is to follow the instructions below \item If you are using Windows, you may need to check the `shebang' lines (\texttt{\#!/usr/bin/env ruby})\footnote{The \texttt{env} binary helps to locate other binaries, regardless of their location. If you don't have \texttt{env} installed, you'll need to change this line to point to the location of your Ruby binary.The \texttt{env} binary helps to locate other binaries, regardless of their location. If you don't have \texttt{env} installed, you'll need to change this line to point to the location of your Ruby binary.} of the \texttt{/public/dispatch.*} files and all the files in the \texttt{/script} directory. They are set to \texttt{\#!/usr/bin/env ruby} by default. Check the format of those lines in your old installation, and change the new ones as necessary. -\item Try starting up the server with \texttt{script/server} to make sure that all your data has migrated successfully. If all is well, follow the instructions above to upgrade from version 1.043 (\autoref{upgrading_1043}) to Tracks 1.5. If you need to access Tracks from a mobile/cellular phone browser, visit \texttt{http://yourdomain.com/mobile/}. This mobile version is a special, lightweight version of Tracks, designed to use on a mobile browser. +\item Try starting up the server with \texttt{script/server} to make sure that all your data has migrated successfully. If all is well, follow the instructions above to upgrade from version 1.043 (\autoref{upgrading_1043}) to Tracks 1.6. If you need to access Tracks from a mobile/cellular phone browser, visit \texttt{http://yourdomain.com/mobile/}. This mobile version is a special, lightweight version of Tracks, designed to use on a mobile browser. \end{enumerate} %