Sha256: 374f281d1c3f9cdb56bb203662e2dcc972037b5edd5fd772208cfaa91928a560

Contents?: true

Size: 1.92 KB

Versions: 3

Compression:

Stored size: 1.92 KB

Contents

# dm-is-read_only

* [github.com/postmodern/dm-is-read_only](http://github.com/postmodern/dm-is-read_only)
* [github.com/postmodern/dm-is-read_only/issues](http://github.com/postmodern/dm-is-read_only/issues)
* Postmodern (postmodern.mod3 at gmail.com)

## Description

A DataMapper plugin for making Models absolutely **read-only**.

## Features

* Ignores auto-migrations on read-only Models.
* Ignores auto-upgrades on read-only Models.
* Puts all resources of a read-only Model into the Immutable state.
* Supports the `:migrations` and `:mutable` options for selectively enabling
  migrations or mutability.

## Example

    require 'dm-core'
    require 'dm-is-read_only'
  
    class Licence
  
      include DataMapper::Resource

      is :read_only

      # The primary-key of the License
      property :id, Serial
    
      # Name of the Licence
      property :name, String
    
      # URL to the licence
      property :url, String
    
    end
  
    Licence.first
    # => #<Licence: id: 1, name: "GPL-2", url: "http://www.gnu.org/copyleft/gpl.html">

    # ignores auto-migrations
    License.auto_migrate!
    # => true

    Licence.first
    # => #<Licence: id: 1, name: "GPL-2", url: "http://www.gnu.org/copyleft/gpl.html">

    # ignores auto-upgrades
    License.auto_upgrade!
    # => true

    license = Licence.first
    # => #<Licence: id: 1, name: "GPL-2", url: "http://www.gnu.org/copyleft/gpl.html">

    license.name = 'WTF'
    license.save!
    # => true

    # will not allow saving resources
    license.reload
    license.name
    # => "GPL-2"

    license.destroy!
    # => true

    # will not allow destroying resources
    license = License.first
    # => #<Licence: id: 1, name: "GPL-2", url: "http://www.gnu.org/copyleft/gpl.html">

## Requirements

* [dm-core](http://github.com/datamapper/dm-core/) ~> 1.0.0

## Install

    $ sudo gem install dm-is-read_only

## License

See {file:LICENSE.txt} for license information.

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
dm-is-read_only-0.2.0 README.md
dm-is-read_only-0.1.1 README.md
dm-is-read_only-0.1.0 README.md