acts_as_owner 1.2.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm ruby-1.9.2@acts_as_owner
data/Gemfile ADDED
@@ -0,0 +1,11 @@
1
+ source "http://rubygems.org"
2
+
3
+ case ENV["MODEL_ADAPTER"]
4
+ when nil, "active_record"
5
+ gem "sqlite3"
6
+ gem "activerecord", :require => "active_record"
7
+ else
8
+ raise "Unknown model adapter: #{ENV["MODEL_ADAPTER"]}"
9
+ end
10
+
11
+ gemspec
data/MIT-LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2009 Cyril Wack
1
+ Copyright (c) 2009-2011 Cyril Wack
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.rdoc CHANGED
@@ -1,36 +1,79 @@
1
1
  = Acts as owner
2
2
 
3
- Provides to a user the ability to self-query about the possession of a given resource or a given account.
3
+ Acts as owner is a plugin for Ruby on Rails that provides to an owner object the
4
+ ability to self-query about the possession of an ownable object.
4
5
 
5
- Any resources belonging to an other resource which is owned by the user are considered such as owned by this user too.
6
+ Ownable objects can be any objects belonging to the owner object and any objects
7
+ belonging to an ownable object.
6
8
 
7
- == Install
9
+ Any ownable child, which belongs to an owned ownable parent, is also owned by
10
+ the owner.
8
11
 
9
- Install the gem (recommended):
12
+ == Philosophy
10
13
 
11
- sudo gem install acts_as_owner
14
+ General library that does only one thing, without any feature.
12
15
 
13
- Or you can install this as a plugin:
16
+ == Installation
14
17
 
15
- script/plugin install git://github.com/cyril/acts_as_owner.git
18
+ Include the gem in your <tt>Gemfile</tt>:
19
+
20
+ gem 'acts_as_owner'
21
+
22
+ And run the +bundle+ command. Or as a plugin:
23
+
24
+ rails plugin install git://github.com/cyril/acts_as_owner.git
25
+
26
+ == Getting started
27
+
28
+ === Configuring models
29
+
30
+ Owner models just have to be declared thanks to <tt>acts_as_owner</tt>, with
31
+ each ownable object passed through a block (using <tt>owns_one</tt> or
32
+ <tt>owns_many</tt> method).
16
33
 
17
34
  == Example
18
35
 
19
36
  class User < ActiveRecord::Base
20
- acts_as_owner :categories, :articles, :comments
37
+ acts_as_owner do |u|
38
+ u.owns_many :articles
39
+ u.owns_many :comments
40
+ end
41
+
42
+ with_options :dependent => :destroy do |opts|
43
+ opts.has_many :articles
44
+ opts.has_many :comments
45
+ end
21
46
  end
22
47
 
23
- # Considering this article:
48
+ class Article < ActiveRecord::Base
49
+ belongs_to :user
50
+ has_many :comments, :dependent => :destroy
51
+ end
52
+
53
+ class Comment < ActiveRecord::Base
54
+ belongs_to :article
55
+ belongs_to :user
56
+ end
57
+
58
+ # An article should be ownable by a user, so:
59
+ User.could_own_an?(:article) # => true
60
+
61
+ # Considering this one:
24
62
  article = current_user.articles.first
25
63
 
26
64
  # We can see that:
27
- current_user.owns? article # => true
28
- current_user.owns? article.user # => true
65
+ current_user.owns? article # => true
66
+
67
+ # Now, considering its first comment:
68
+ comment = article.comments.first
69
+
70
+ # Just like article, we can check that:
71
+ User.could_own_an? :comment # => true
29
72
 
30
- # Now, check if its first comment is ours:
31
- current_user.owns? article.comments.first.user # => false
73
+ # Let's see if the current user is the author:
74
+ current_user == comment.user # => false
32
75
 
33
- # But even if it is not, this comment is a child of our article, so:
34
- current_user.owns? article.comments.first # => true
76
+ # Never mind. It belongs to his article so that's also his one:
77
+ current_user.owns? comment # => true
35
78
 
36
- Copyright (c) 2009 Cyril Wack, released under the MIT license
79
+ Copyright (c) 2009-2011 Cyril Wack, released under the MIT license
data/Rakefile CHANGED
@@ -1,12 +1,12 @@
1
- require 'rubygems'
2
- require 'rake'
3
- require 'echoe'
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
4
3
 
5
- Echoe.new('acts_as_owner', '1.2.0') do |p|
6
- p.description = "Simple Rails plugin that allows to operate freely on objects which belong to us."
7
- p.url = "http://github.com/cyril/acts_as_owner"
8
- p.author = "Cyril Wack"
9
- p.email = "cyril.wack@gmail.com"
10
- p.ignore_pattern = ["tmp/*", "script/*"]
11
- p.development_dependencies = []
12
- end
4
+ require 'rake/testtask'
5
+
6
+ Rake::TestTask.new do |t|
7
+ t.libs << 'lib'
8
+ t.libs << 'test'
9
+ t.test_files = FileList["test/**/*_{helper,test}.rb"]
10
+ end
11
+
12
+ task :default => :test
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
- :major: 1
3
- :minor: 2
2
+ :major: 2
3
+ :minor: 0
4
4
  :patch: 0
@@ -1,32 +1,18 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
1
  Gem::Specification.new do |s|
4
- s.name = %q{acts_as_owner}
5
- s.version = "1.2.0"
6
-
7
- s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
- s.authors = ["Cyril Wack"]
9
- s.cert_chain = ["/Users/cyril/gem-public_cert.pem"]
10
- s.date = %q{2010-04-12}
2
+ s.name = "acts_as_owner"
3
+ s.version = Psych.load_file("VERSION.yml").values.join('.')
4
+ s.platform = Gem::Platform::RUBY
5
+ s.authors = ["Cyril Wack"]
6
+ s.email = ["cyril@gosu.fr"]
7
+ s.homepage = "http://github.com/cyril/acts_as_owner"
8
+ s.summary = %q{Simple ownership solution for Rails.}
11
9
  s.description = %q{Simple Rails plugin that allows to operate freely on objects which belong to us.}
12
- s.email = %q{cyril.wack@gmail.com}
13
- s.extra_rdoc_files = ["README.rdoc", "lib/acts_as_owner.rb"]
14
- s.files = ["MIT-LICENSE", "README.rdoc", "Rakefile", "VERSION.yml", "init.rb", "lib/acts_as_owner.rb", "Manifest", "acts_as_owner.gemspec"]
15
- s.homepage = %q{http://github.com/cyril/acts_as_owner}
16
- s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Acts_as_owner", "--main", "README.rdoc"]
17
- s.require_paths = ["lib"]
18
- s.rubyforge_project = %q{acts_as_owner}
19
- s.rubygems_version = %q{1.3.6}
20
- s.signing_key = %q{/Users/cyril/gem-private_key.pem}
21
- s.summary = %q{Simple Rails plugin that allows to operate freely on objects which belong to us.}
22
10
 
23
- if s.respond_to? :specification_version then
24
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
25
- s.specification_version = 3
11
+ s.rubyforge_project = "acts_as_owner"
26
12
 
27
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
28
- else
29
- end
30
- else
31
- end
13
+ s.add_runtime_dependency "railties", ">= 3.0.0"
14
+
15
+ s.files = `git ls-files`.split("\n")
16
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ s.require_paths = ["lib"]
32
18
  end
data/init.rb CHANGED
@@ -1 +1 @@
1
- require 'acts_as_owner'
1
+ require 'acts_as_owner'
data/lib/acts_as_owner.rb CHANGED
@@ -1,74 +1,69 @@
1
- require 'active_record/base'
2
-
3
1
  module ActsAsOwner
4
- def self.included(base)
5
- base.extend(ClassMethods)
2
+ def owns?(obj)
3
+ can_own_this?(obj) if self.class.could_own_a?(obj.class.name.underscore)
6
4
  end
7
5
 
8
- module ClassMethods
9
- # Configuration resources are: all resources belonging to the current model.
10
- def acts_as_owner(*resources)
11
- resources.each { |resource| has_many resource.to_s.tableize.to_sym, :dependent => :destroy }
6
+ protected
12
7
 
13
- class_eval <<-EOV
14
- include ActsAsOwner::InstanceMethods
8
+ def can_own_this?(obj, depth = 0)
9
+ association_id = obj.class.name.tableize.singularize.to_sym
10
+ association_params = self.class.
11
+ read_inheritable_attribute(:ownable_ids)[association_id]
15
12
 
16
- def self.owns_many
17
- reflections.select { |name, reflection| reflection.macro == :has_many }.collect { |table| table[0].to_s.singularize }
18
- end
13
+ unless depth > association_params[:max_depth]
14
+ owner_id = association_params[:owner_id]
15
+ owned = obj.respond_to?(owner_id) && obj.send(owner_id) == self
19
16
 
20
- def self.owns_one
21
- reflections.select { |name, reflection| reflection.macro == :has_one }.collect { |table| table[0].to_s.singularize }
22
- end
23
- EOV
17
+ owned || ownable_ancestors(obj).any? do |name|
18
+ can_own_this?(name, depth.next)
19
+ end
24
20
  end
25
21
  end
26
22
 
27
- module InstanceMethods
28
- # Returns true if the user owns the object which can be a account or a resource. Otherwise returns false.
29
- def owns?(object = nil)
30
- return false if object.nil?
31
- object.is_a?(self.class) ? self.owns_this_account?(object) : self.owns_this_resource?(object)
23
+ def ownable_ancestors(child)
24
+ ancestors = child.class.reflections.select do |name, reflection|
25
+ reflection.macro == :belongs_to
32
26
  end
33
27
 
34
- protected
28
+ ancestors.map {|table| table.first }.
29
+ select {|name| self.class.could_own_a?(name) }.
30
+ map {|name| child.send(name) }.compact
31
+ end
32
+ end
35
33
 
36
- # Returns true if the user owns the account, otherwise returns false.
37
- def owns_this_account?(account)
38
- self.id == account.id
39
- end
34
+ class ActiveRecord::Base
35
+ def self.acts_as_owner(options = {}, &block)
36
+ configuration = {
37
+ :max_depth => 50,
38
+ :owner_id => name.tableize.singularize.to_sym }
39
+ configuration.update(options) if options.is_a?(Hash)
40
40
 
41
- # Returns true if the user owns the resource, otherwise returns false.
42
- def owns_this_resource?(resource)
43
- (has_many?(resource) || has_one?(resource)) ||
44
- parents_of(resource).collect { |parent| owns_this_resource?(parent) }.select { |result| result == true }.uniq.pop == true
45
- end
41
+ write_inheritable_hash(:ownership_options, configuration)
42
+ write_inheritable_hash(:ownable_ids, {})
46
43
 
47
- # Has many association
48
- def has_many?(resource)
49
- self.respond_to?(resource.class.name.tableize) && self.send(resource.class.name.tableize).include?(resource)
50
- end
44
+ class << self
45
+ def owns_many(association_id, options = {})
46
+ read_inheritable_attribute(:ownable_ids).update({
47
+ association_id.to_s.singularize.to_sym =>
48
+ read_inheritable_attribute(:ownership_options).merge(options) })
49
+ end
51
50
 
52
- # Has one association
53
- def has_one?(resource)
54
- self.respond_to?(resource.class.name.tableize.singularize) && self.send(resource.class.name.tableize.singularize) == resource
55
- end
51
+ def owns_one(association_id, options = {})
52
+ read_inheritable_attribute(:ownable_ids).update({
53
+ association_id.to_sym =>
54
+ read_inheritable_attribute(:ownership_options).merge(options) })
55
+ end
56
56
 
57
- # Returns an array of resources that are:
58
- # * directly superior to the resource passed as parameter, according the hierarchical tree structure;
59
- # * potentially owned by the current user, through the hierarchical relationship.
60
- def parents_of(resource)
61
- potential_owners_of(resource).collect { |method| resource.send(method) }
62
- end
57
+ def could_own_a?(association_id)
58
+ read_inheritable_attribute(:ownable_ids).keys.
59
+ include?(association_id.to_sym)
60
+ end
63
61
 
64
- # Returns an array containing symbols common to children
65
- # which belongs to the current user and to parents which has many or has one given resource.
66
- def potential_owners_of(resource)
67
- (self.class.owns_many | self.class.owns_one) & resource.class.reflections.select do |name, reflection|
68
- reflection.macro == :belongs_to
69
- end.collect { |table| table[0].to_s }
62
+ alias_method :could_own_an?, :could_own_a?
70
63
  end
64
+
65
+ instance_eval &block
66
+
67
+ include ActsAsOwner
71
68
  end
72
69
  end
73
-
74
- ActiveRecord::Base.class_eval { include ActsAsOwner }
@@ -0,0 +1,121 @@
1
+ require 'test_helper'
2
+
3
+ ActiveRecord::Base.establish_connection(
4
+ :adapter => 'sqlite3', :database => ':memory:')
5
+
6
+ def setup_db
7
+ ActiveRecord::Schema.define(:version => 1) do
8
+ create_table :users do |t|
9
+ t.string :login
10
+ end
11
+
12
+ create_table :blogs do |t|
13
+ t.references :user, :null => false
14
+ t.string :title
15
+ end
16
+
17
+ create_table :categories do |t|
18
+ t.references :blog, :null => false
19
+ t.string :title
20
+ end
21
+
22
+ create_table :articles do |t|
23
+ t.references :publishable, :polymorphic => true, :null => false
24
+ t.references :user
25
+ t.string :title
26
+ t.text :content
27
+ end
28
+
29
+ create_table :comments do |t|
30
+ t.references :article, :null => false
31
+ t.references :user
32
+ t.text :content
33
+ end
34
+ end
35
+ end
36
+
37
+ def teardown_db
38
+ ActiveRecord::Base.connection.tables.each do |table|
39
+ ActiveRecord::Base.connection.drop_table(table)
40
+ end
41
+ end
42
+
43
+ class User < ActiveRecord::Base
44
+ acts_as_owner(:verbose => true) do |a|
45
+ a.owns_many :categories
46
+ a.owns_many :articles
47
+ a.owns_many :comments
48
+ a.owns_many :publishables
49
+ a.owns_one :blog
50
+ end
51
+
52
+ has_one :blog, :dependent => :destroy
53
+ has_many :articles, :dependent => :destroy
54
+ has_many :comments, :dependent => :destroy
55
+ end
56
+
57
+ class Blog < ActiveRecord::Base
58
+ belongs_to :user
59
+ has_many :articles, :as => :publishable, :dependent => :destroy
60
+ has_many :categories, :dependent => :destroy
61
+ end
62
+
63
+ class Category < ActiveRecord::Base
64
+ belongs_to :blog
65
+ has_many :articles, :as => :publishable, :dependent => :destroy
66
+ end
67
+
68
+ class Article < ActiveRecord::Base
69
+ belongs_to :publishable, :polymorphic => true
70
+ belongs_to :user
71
+ has_many :comments, :dependent => :destroy
72
+ end
73
+
74
+ class Comment < ActiveRecord::Base
75
+ belongs_to :article
76
+ belongs_to :user
77
+ end
78
+
79
+ class OwnerTest < MiniTest::Unit::TestCase
80
+ def setup
81
+ setup_db
82
+
83
+ @admin = User.create! :login => 'admin'
84
+ @bob = User.create :login => 'bob'
85
+
86
+ @blog = @admin.create_blog :title => 'my_blog'
87
+ @category = @blog.categories.create! :title => 'main'
88
+ @article0 = @category.articles.create! :title => 'hello, world',
89
+ :user => @admin
90
+ @article1 = @blog.articles.create! :title => 'hello, all',
91
+ :user => @bob
92
+ @comment0 = @article0.comments.create! :content => 'foo'
93
+ @comment1 = @article0.comments.create! :content => 'bar',
94
+ :user => @bob
95
+ end
96
+
97
+ def teardown
98
+ teardown_db
99
+ end
100
+
101
+ def test_the_ownability
102
+ refute User.could_own_a?(:tank)
103
+ refute User.could_own_a?("dinosaur")
104
+ refute User.could_own_a?(42.to_s)
105
+ assert User.could_own_a?(:blog)
106
+ assert User.could_own_an?(:article)
107
+ end
108
+
109
+ def test_the_ownership
110
+ assert @admin.owns?(@blog)
111
+ refute @bob.owns?(@blog)
112
+ assert @admin.owns?(@article0)
113
+ refute @bob.owns?(@article0)
114
+ assert @admin.owns?(@article1)
115
+ assert @bob.owns?(@article1)
116
+ assert @admin.owns?(@comment0)
117
+ refute @bob.owns?(@comment0)
118
+ assert @bob.owns?(@comment1)
119
+ assert @admin.owns?(@comment1)
120
+ end
121
+ end
@@ -0,0 +1,4 @@
1
+ require 'minitest/autorun'
2
+ require 'sqlite3'
3
+ require 'active_record'
4
+ require 'acts_as_owner'
metadata CHANGED
@@ -1,97 +1,71 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: acts_as_owner
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 1
7
- - 2
8
- - 0
9
- version: 1.2.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.0
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Cyril Wack
13
9
  autorequire:
14
10
  bindir: bin
15
- cert_chain:
16
- - |
17
- -----BEGIN CERTIFICATE-----
18
- MIIDNjCCAh6gAwIBAgIBADANBgkqhkiG9w0BAQUFADBBMRMwEQYDVQQDDApjeXJp
19
- bC53YWNrMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZFgNj
20
- b20wHhcNMTAwNDExMjI1OTI4WhcNMTEwNDExMjI1OTI4WjBBMRMwEQYDVQQDDApj
21
- eXJpbC53YWNrMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZ
22
- FgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGJFqPSXGYdS6t
23
- t+kXyFuLg7uIbQHToLhdbfpu5j7dl65EWAspRI37ZE/FIFosmwQ0DAGiJ35gVX7K
24
- 5/rj745EUW9vijemlNHZjTY40AQAP2avlcMd6DnA7pl/x8dxC9G2dW/IS0nmjH0E
25
- +X7X0BZ8WIY7PBvLsq5ptpGaoaxpmqRjJDANolnODwyBjFWtUqpvOGeUWL24orZ3
26
- xwcW6d1vl8hraZ3UUJtIVXFg85lHclyrP33DYxj5sstgRwovaCPrvUQ6ZZ+hX/iJ
27
- MYaEFZsw74WVD4RLHl1bEz2RQGDgSwfFnOnrQ1gi2SaeqUN7uFThAEbbyiJK+rNL
28
- xapWOFs9AgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
29
- BBSsO/YPzLP2/ZtBKQfWveZNRK3uKDANBgkqhkiG9w0BAQUFAAOCAQEAGaGpPlEc
30
- Z8A7Jtfws1tpdLOlQrQQXfIgBrPvfjO18MxT2BVgnusYcMuJgrY1skbH6RDxhdia
31
- EetICD0kvyGnbK+dHdhRwvmmiqc7ZOaiFb3RNLcW6jduxafH4zgKUeg23KpfJYy3
32
- MOqVgHckM1hMZTWz7nmrXJBAjj/48jFOPrwtTed8kd6KpIjUz4e2oTwT+JIVnryF
33
- sYFesvR4DywbXL88T29gq5biCHsAgbK89DW5DNx1Yg1HNLxCdJurJFrcQQS3XQco
34
- h2svBTlG7Yg1wLZAGkVx4RSkrFujrxpgLsz5bfmdnbiEgKcF9njIOdVO4P4vwyoS
35
- G4VzQZjAGxprTw==
36
- -----END CERTIFICATE-----
37
-
38
- date: 2010-04-12 00:00:00 +02:00
39
- default_executable:
40
- dependencies: []
41
-
42
- description: Simple Rails plugin that allows to operate freely on objects which belong to us.
43
- email: cyril.wack@gmail.com
11
+ cert_chain: []
12
+ date: 2011-04-22 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: railties
16
+ requirement: &2153341400 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 3.0.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *2153341400
25
+ description: Simple Rails plugin that allows to operate freely on objects which belong
26
+ to us.
27
+ email:
28
+ - cyril@gosu.fr
44
29
  executables: []
45
-
46
30
  extensions: []
47
-
48
- extra_rdoc_files:
49
- - README.rdoc
50
- - lib/acts_as_owner.rb
51
- files:
31
+ extra_rdoc_files: []
32
+ files:
33
+ - .gitignore
34
+ - .rvmrc
35
+ - Gemfile
52
36
  - MIT-LICENSE
53
37
  - README.rdoc
54
38
  - Rakefile
55
39
  - VERSION.yml
40
+ - acts_as_owner.gemspec
56
41
  - init.rb
57
42
  - lib/acts_as_owner.rb
58
- - Manifest
59
- - acts_as_owner.gemspec
60
- has_rdoc: true
43
+ - test/owner_test.rb
44
+ - test/test_helper.rb
61
45
  homepage: http://github.com/cyril/acts_as_owner
62
46
  licenses: []
63
-
64
47
  post_install_message:
65
- rdoc_options:
66
- - --line-numbers
67
- - --inline-source
68
- - --title
69
- - Acts_as_owner
70
- - --main
71
- - README.rdoc
72
- require_paths:
48
+ rdoc_options: []
49
+ require_paths:
73
50
  - lib
74
- required_ruby_version: !ruby/object:Gem::Requirement
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- segments:
79
- - 0
80
- version: "0"
81
- required_rubygems_version: !ruby/object:Gem::Requirement
82
- requirements:
83
- - - ">="
84
- - !ruby/object:Gem::Version
85
- segments:
86
- - 1
87
- - 2
88
- version: "1.2"
51
+ required_ruby_version: !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ required_rubygems_version: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
89
63
  requirements: []
90
-
91
64
  rubyforge_project: acts_as_owner
92
- rubygems_version: 1.3.6
65
+ rubygems_version: 1.7.2
93
66
  signing_key:
94
67
  specification_version: 3
95
- summary: Simple Rails plugin that allows to operate freely on objects which belong to us.
96
- test_files: []
97
-
68
+ summary: Simple ownership solution for Rails.
69
+ test_files:
70
+ - test/owner_test.rb
71
+ - test/test_helper.rb
data/Manifest DELETED
@@ -1,7 +0,0 @@
1
- MIT-LICENSE
2
- README.rdoc
3
- Rakefile
4
- VERSION.yml
5
- init.rb
6
- lib/acts_as_owner.rb
7
- Manifest
data.tar.gz.sig DELETED
Binary file
metadata.gz.sig DELETED
Binary file