Differences between revisions 6 and 7
Deletions are marked like this. Additions are marked like this.
Line 9: Line 9:
= Ruby On Rails = = Ruby On Rails Resources =
Line 11: Line 11:
== Resources == == On-Line Reference Material ==
Line 13: Line 13:
=== Books ===  1. '''Rails API''' documentation - http://api.rubyonrails.org
 1. '''Rails Guides''' - http://guides.rubyonrails.org

== Books ==
Line 18: Line 21:
    1. Chapter 14 - Authentication     1. Chapter 14.2 - Authentication using Devise
Line 21: Line 24:
=== On-Line Reference Material === = Source Code Management =
Line 23: Line 26:
 1. '''Rails API''' documentation - http://api.rubyonrails.org
 1. '''Rails Guides''' - http://guides.rubyonrails.org
 1. Use '''git'''
Line 26: Line 28:
== Repositories ==

 1. Server: git.softxs.ch
 1. Git repositories:
    1. '''mapps''' - Master Application Payment System Application source code
    1. '''v2''' - V2 application code
    1. '''skeleton''' - Skeleton Application source code
    1. '''proto-ds''' - Darren Starsmore prototype
    1. '''sample-app-ah''' - Alan Hodgkinson sample_app source code, from Hartl book

== Use of Branches ==

 * '''''TODO''''' describe conventions for using branches
Line 44: Line 59:
 1. Use '''Devise''' - Currently the most popular Authentication module  1. Use '''Devise'''
Line 47: Line 62:
    1. '''Can``Can''' - Intrgrates with Devise and provides useful authentication functions that can be used in .erb templates     1. '''Can``Can''' - Integrates with Devise and provides useful authentication functions that can be used in .erb templates
Line 57: Line 72:
 1. Use'''I18n'''  1. Use '''I18n'''
Line 62: Line 77:

 * '''''TODO'''''
Line 69: Line 86:

 * '''''TODO'''''

= Application Architecture =

 * '''''TODO''''' describe the division between MAPPS and V2

V2 High Level Design Notes

Introduction

This section contains notes for the design and implementation of V2, in particular notes about how to use the technology stack.

Ruby On Rails Resources

On-Line Reference Material

  1. Rails API documentation - http://api.rubyonrails.org

  2. Rails Guides - http://guides.rubyonrails.org

Books

  1. Ruby on Rails 3 Tutorial, by Michael Hartl - A beginning book with an emphasis on automated unit and integration testing with RSpec

  2. The Rails 3 Way, by David H. Hansson - An advanced book with in-depth descriptions of most Rails related topics

    1. Section 11.20 - Internationalization using the I18n Ruby GEM

    2. Chapter 14.2 - Authentication using Devise
    3. Chapter 18 - RSpec

Source Code Management

  1. Use git

Repositories

  1. Server: git.softxs.ch
  2. Git repositories:
    1. mapps - Master Application Payment System Application source code

    2. v2 - V2 application code

    3. skeleton - Skeleton Application source code

    4. proto-ds - Darren Starsmore prototype

    5. sample-app-ah - Alan Hodgkinson sample_app source code, from Hartl book

Use of Branches

  • TODO describe conventions for using branches

Application Services

Logging

  1. Use Log4R

Application Configuration

  1. Use rails_config

  2. For more about Rails application configuration:

Authentication

  1. Use Devise

  2. Consider the following supporting modules:
    1. CanCan - Integrates with Devise and provides useful authentication functions that can be used in .erb templates

    2. OmniAuth - Which probably supports logins via Google+, Facebook, etc.

  3. General discussion of Rails recurity

Internationalization

  1. Use I18n

Background Process (Event Daemon)

  • TODO

  • See Chapter 20 in Hansson book. Suggested alternatives:
    1. Delayed Job
    2. Resque
    3. Rails Runner

PDF File Generation

  • TODO

Application Architecture

  • TODO describe the division between MAPPS and V2

User Access Modeling

Definitions

  1. Library - an entity that contains multiple Projects

    1. A Library is the repository that manages user login, e.g. it authenticates users, typically via user login name and password (or LDAP, etc.)
      1. Contains a catalog of user names, login names and authorization information, e.g. encrypted passwords or links to LDAP or other authentication external authentication systems
    2. A Library does not contain user role information for individual projects
      1. Except that it is able to provide a list of links that jump to the home pages of the projects (in the library) that the user has access to
      2. If a user doesn't have any roles for a particular project, then they do not even see that the project exists
        1. This might be managed by a configuration variable, to allow implementation of a compeny-based systems which let all users see the names of all projects
  2. Project - an entity that contains user data, e.g. documents, revisions, tasks, etc.

    1. Each project must belong to exactly one library
    2. A project contains:
      1. Project metadata, stored in the project's database
        1. Including user access rights for all the project's users
      2. A set of files (revision files, correspondence files, ZIP files, etc.) stored in a directory tree
      3. The metadata database and files of a project are never mixed between projects. This is to:
        1. Ensure customer data privacy
        2. Make it possible to make individual project backups

Requirements

  1. A user has the same login credentials for all projects, he has access to, within a single library
  2. A library dictates the user authentication policy, e.g. how user logins are validated, for all the projects that belong to it
  3. A library has a landing page
    1. The landing page is the user login page for the all projects that belong to it
  4. A library has administrative transactions for defining and managing users
    1. There are library users that have library administrator roles

    2. The library configuration sets the login security policy, e.g. password length, frequency of password changes, etc.
      1. Initially this will be via configuration variables
      2. Later this might be managed by online transactions available to the library administrators
  5. Integrity of project metadata:
    1. All metadata for a project is stored in a single database
    2. Databases never contain metadata from multiple projects
  6. Projects can be migrated between libraries
    1. This will initially be done using a manual procedure, e.g. shell and SQL scripts
    2. Later this could be automated
  7. User roles for individual projects are managed within the projects
  8. There are users that have project administrator roles within projects

    1. A project administrator manages user roles for a project
    2. The project administrator role is limited the project it is associated with
    3. A user might have project administrator rights in multiple projects
  9. User roles for library and project administration do not include the ability to grant the roles to others, which are controlled by seperate grant library administrator and grant project administrator roles

V2HighLevelDesign (last edited 2013-01-15 15:22:22 by 10)

Copyright 2008-2014, SoftXS GmbH, Switzerland