phurni-is_less_paranoid 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,28 @@
1
+ class Company < ActiveRecord::Base #:nodoc:
2
+ is_less_paranoid
3
+ has_many :contacts, :class_name => 'ContactAlive', :dependent => :destroy
4
+ end
5
+
6
+ class Contact < ActiveRecord::Base #:nodoc:
7
+ is_less_paranoid
8
+
9
+ def self.get_my_name
10
+ name
11
+ end
12
+
13
+ has_many :addresses, :dependent => :destroy
14
+ belongs_to :company
15
+ end
16
+
17
+ class VipContact < Contact
18
+ end
19
+
20
+ class Address < ActiveRecord::Base #:nodoc:
21
+ is_less_paranoid :clone => :with_destroyed, :suffix => 'WithInvalid'
22
+ belongs_to :contact
23
+ end
24
+
25
+ class Project < ActiveRecord::Base #:nodoc:
26
+ belongs_to :company
27
+ belongs_to :manager, :class_name => 'Contact'
28
+ end
@@ -0,0 +1,94 @@
1
+ class Person < ActiveRecord::Base #:nodoc:
2
+ validates_uniqueness_of :name
3
+ has_many :androids, :foreign_key => :owner_id, :dependent => :destroy
4
+ end
5
+
6
+ class Android < ActiveRecord::Base #:nodoc:
7
+ validates_uniqueness_of :name
8
+ has_many :components, :dependent => :destroy
9
+ has_one :sticker
10
+ has_many :memories, :foreign_key => 'parent_id'
11
+
12
+ is_less_paranoid :clone => false
13
+
14
+ # this code is to ensure that our destroy and restore methods
15
+ # work without triggering before/after_update callbacks
16
+ before_update :raise_hell
17
+ def raise_hell
18
+ raise "hell"
19
+ end
20
+ end
21
+
22
+ class Component < ActiveRecord::Base #:nodoc:
23
+ is_less_paranoid :clone => false
24
+ belongs_to :android, :dependent => :destroy
25
+ has_many :sub_components, :dependent => :destroy
26
+ NEW_NAME = 'Something Else!'
27
+
28
+ after_destroy :change_name
29
+ def change_name
30
+ self.update_attribute(:name, NEW_NAME)
31
+ end
32
+ end
33
+
34
+ class SubComponent < ActiveRecord::Base #:nodoc:
35
+ is_less_paranoid :clone => false
36
+ belongs_to :component, :dependent => :destroy
37
+ end
38
+
39
+ class Memory < ActiveRecord::Base #:nodoc:
40
+ is_less_paranoid :clone => false
41
+ belongs_to :android, :class_name => "Android", :foreign_key => "parent_id"
42
+ end
43
+
44
+ class Sticker < ActiveRecord::Base #:nodoc
45
+ MM_NAME = "You've got method_missing"
46
+
47
+ # this simply serves to ensure that we don't break method_missing
48
+ # if it is implemented on a class and called before is_paranoid
49
+ def method_missing name, *args, &block
50
+ self.name = MM_NAME
51
+ end
52
+
53
+ is_less_paranoid :clone => false
54
+ belongs_to :android
55
+ end
56
+
57
+ class AndroidWithScopedUniqueness < ActiveRecord::Base #:nodoc:
58
+ set_table_name :androids
59
+ validates_uniqueness_of :name, :scope => :deleted_at
60
+ is_less_paranoid :clone => false
61
+ end
62
+
63
+ class Ninja < ActiveRecord::Base #:nodoc:
64
+ validates_uniqueness_of :name, :scope => :visible
65
+ is_less_paranoid :field => [:visible, false, true], :clone => false
66
+
67
+ alias_method :vanish, :destroy
68
+ end
69
+
70
+ class Pirate < ActiveRecord::Base #:nodoc:
71
+ is_less_paranoid :field => [:alive, false, true], :clone => false
72
+ end
73
+
74
+ class DeadPirate < ActiveRecord::Base #:nodoc:
75
+ set_table_name :pirates
76
+ is_less_paranoid :field => [:alive, true, false], :clone => false
77
+ end
78
+
79
+ class RandomPirate < ActiveRecord::Base #:nodoc:
80
+ set_table_name :pirates
81
+
82
+ def after_destroy
83
+ raise 'after_destroy works'
84
+ end
85
+ end
86
+
87
+ class UndestroyablePirate < ActiveRecord::Base #:nodoc:
88
+ set_table_name :pirates
89
+ is_less_paranoid :field => [:alive, false, true], :clone => false
90
+
91
+ def before_destroy
92
+ false
93
+ end
94
+ end
@@ -0,0 +1,87 @@
1
+ ActiveRecord::Schema.define(:version => 20090317164830) do
2
+ create_table "androids", :force => true do |t|
3
+ t.string "name"
4
+ t.integer "owner_id"
5
+ t.datetime "deleted_at"
6
+ t.datetime "created_at"
7
+ t.datetime "updated_at"
8
+ end
9
+
10
+ create_table "people", :force => true do |t|
11
+ t.string "name"
12
+ t.datetime "created_at"
13
+ t.datetime "updated_at"
14
+ end
15
+
16
+ create_table "components", :force => true do |t|
17
+ t.string "name"
18
+ t.integer "android_id"
19
+ t.datetime "deleted_at"
20
+ t.datetime "created_at"
21
+ t.datetime "updated_at"
22
+ end
23
+
24
+ create_table "sub_components", :force => true do |t|
25
+ t.string "name"
26
+ t.integer "component_id"
27
+ t.datetime "deleted_at"
28
+ end
29
+
30
+ create_table "memories", :force => true do |t|
31
+ t.string "name"
32
+ t.integer "parent_id"
33
+ t.datetime "deleted_at"
34
+ end
35
+
36
+ create_table "stickers", :force => true do |t|
37
+ t.string "name"
38
+ t.integer "android_id"
39
+ t.datetime "deleted_at"
40
+ end
41
+
42
+ create_table "ninjas", :force => true do |t|
43
+ t.string "name"
44
+ t.boolean "visible", :default => false
45
+ end
46
+
47
+ create_table "pirates", :force => true do |t|
48
+ t.string "name"
49
+ t.boolean "alive", :default => true
50
+ end
51
+
52
+ create_table "companies", :force => true do |t|
53
+ t.string "name"
54
+ t.datetime "deleted_at"
55
+ t.datetime "created_at"
56
+ t.datetime "updated_at"
57
+ end
58
+
59
+ create_table "contacts", :force => true do |t|
60
+ t.string "firstname"
61
+ t.string "lastname"
62
+ t.integer "company_id"
63
+ t.string "type"
64
+ t.datetime "deleted_at"
65
+ t.datetime "created_at"
66
+ t.datetime "updated_at"
67
+ end
68
+
69
+ create_table "addresses", :force => true do |t|
70
+ t.string "street"
71
+ t.string "city"
72
+ t.integer "zipcode"
73
+ t.integer "contact_id"
74
+ t.datetime "deleted_at"
75
+ t.datetime "created_at"
76
+ t.datetime "updated_at"
77
+ end
78
+
79
+ create_table "projects", :force => true do |t|
80
+ t.string "name"
81
+ t.integer "company_id"
82
+ t.integer "manager_id"
83
+ t.datetime "deleted_at"
84
+ t.datetime "created_at"
85
+ t.datetime "updated_at"
86
+ end
87
+ end
@@ -0,0 +1 @@
1
+ --color
@@ -0,0 +1,14 @@
1
+ require 'rubygems'
2
+ require "#{File.dirname(__FILE__)}/../lib/is_less_paranoid"
3
+ require 'activerecord'
4
+ require 'yaml'
5
+ require 'spec'
6
+
7
+ def connect(environment)
8
+ conf = YAML::load(File.open(File.dirname(__FILE__) + '/database.yml'))
9
+ ActiveRecord::Base.establish_connection(conf[environment])
10
+ end
11
+
12
+ # Open ActiveRecord connection
13
+ connect('test')
14
+ load(File.dirname(__FILE__) + "/schema.rb")
metadata ADDED
@@ -0,0 +1,76 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: phurni-is_less_paranoid
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.0
5
+ platform: ruby
6
+ authors:
7
+ - Pascal Hurni
8
+ - Jeffrey Chupp
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2009-07-07 00:00:00 -07:00
14
+ default_executable:
15
+ dependencies: []
16
+
17
+ description: ""
18
+ email: pascal_hurni@fastmail.fm
19
+ executables: []
20
+
21
+ extensions: []
22
+
23
+ extra_rdoc_files:
24
+ - README.textile
25
+ files:
26
+ - README.textile
27
+ - IS_PARANOID_README.textile
28
+ - IS_PARANOID_CHANGELOG
29
+ - MIT-LICENSE
30
+ - Rakefile
31
+ - VERSION.yml
32
+ - init.rb
33
+ - lib/is_less_paranoid.rb
34
+ - rails/init.rb
35
+ - reactive/init.rb
36
+ - spec/database.yml
37
+ - spec/is_paranoid_spec.rb
38
+ - spec/is_less_paranoid_spec.rb
39
+ - spec/models.rb
40
+ - spec/lp_models.rb
41
+ - spec/schema.rb
42
+ - spec/spec.opts
43
+ - spec/spec_helper.rb
44
+ has_rdoc: true
45
+ homepage: http://github.com/phurni/is_less_paranoid/
46
+ post_install_message:
47
+ rdoc_options:
48
+ - --charset=UTF-8
49
+ require_paths:
50
+ - lib
51
+ required_ruby_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: "0"
56
+ version:
57
+ required_rubygems_version: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: "0"
62
+ version:
63
+ requirements: []
64
+
65
+ rubyforge_project:
66
+ rubygems_version: 1.2.0
67
+ signing_key:
68
+ specification_version: 2
69
+ summary: ActiveRecord 2.3 compatible gem "allowing you to hide and restore records without actually deleting them." Yes, like acts_as_paranoid, only with less code and less complexity. Extended version to allow associated records to still be alive.
70
+ test_files:
71
+ - spec/is_paranoid_spec.rb
72
+ - spec/is_less_paranoid_spec.rb
73
+ - spec/models.rb
74
+ - spec/lp_models.rb
75
+ - spec/schema.rb
76
+ - spec/spec_helper.rb