Skip to content

kot-begemot/undestroyable

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

General Build Status

An aim for this gem is to provide an agile and comfortable way for Ruby developers to get rid of unnecessary data within their project databases. Weather I succeed with it or not is up to you. I will appreciate any advice or help.

System Configuration

In order to setup system configuration add somewhere in project following code

require 'undestroyable'

Undestroyable.config.setup do
  orm :active_record
end

After that you may activate undestroyable for specific model

class Country < ActiveRecord::Base
  undestroyable
end

Default strategy is: :column. You may overwrite system strategy by providing a block to undestroyable

class Country < ActiveRecord::Base
  undestroyable do
    strategy :dump
  end
end

That will save objects dump into 'dump' table. There is also a possibility for setting default system starategy:

Undestroyable.config.setup do
  orm :active_record
  strategy :table
  table_suffix :old
end

class Country < ActiveRecord::Base
  undestroyable
end

That will move deleted record from 'countries' table into 'countries_deleted'. In case 'countries_deleted' contains 'deleted_at' filed it will be updated. If, due to some reason, a different table name is required it can also be provided:

Undestroyable.config.setup do
  orm :active_record
  strategy :table
  table_suffix :old
end

class Country < ActiveRecord::Base
  undestroyable do
    table_name :scrap
  end
end

In that case, the record will be moved from 'countries' table into 'scrap_deleted'.

Options:

  • orm (ONLY FOR SYSTEM CONFIG) Specifies which orm is used by project
  • strategy Specifies which strategy should be used
  • table_name Same as model table.
  • table_suffix Default prefix is: deleted
  • full_table_name table_prefix + table_name + table_suffix.
  • connection Keeps connection information. NB! Compulsary for :database startegy.

Strategies

  • none Deletes record, as with usual destroy method.
  • column Updates deleted_at column of the record. This is default strategy, if undestroyable is activated for model.
  • table Move record into separate table
  • database Move record into separate table in remote database

Simple usage example:

class Bill < ActiveRecord::Base
  undestroyable
end

Complicated usage example:

class ConceptCat < Vehicle
  undstroyable do
    startegy :database
    connection { adapter: "sqlite3", dbfile: ":memory:"}
    table_name :scrap
    table_suffix :metalic
  end
end

Bitdeli Badge

About

Undestroyable gem source

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages