private_person 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8fc5ea2ff01d3b1c9aa4fdf1d08b1e89d4b59fda
4
- data.tar.gz: 53cdaee285d896caf9591c4bfed3d4897af94e40
3
+ metadata.gz: 391dee7d9f7f4bd41f0644308610edd0c2e6abf5
4
+ data.tar.gz: 80db10c45615d3eb88c75abe7a8c94a896b2594c
5
5
  SHA512:
6
- metadata.gz: f7fa47f819e68afc2931b7cf9a0f8ac845fe559dee7948b3616e51498957a9f5d7ae42490a263593a850abc656e4e9cbbdfae91c13bb31aef23964d0daaabdf4
7
- data.tar.gz: f760e1935c191e8f78fbde750decc436dcd80993b70eb080a2ecd9e3a50a0900308e9e0323b6c12b58c5f57e1a6875b5f03c4e104c4762a2eeeeb7d010c9d461
6
+ metadata.gz: 263c54ccf86ff19df355b7c1791b298c67d6ae203ffe76683f4d453713f23c58ca17760de486b18c1523eed92fb132afb757f6b0b9e7e05104f88ea36323f229
7
+ data.tar.gz: c10e6ab87df8c91f36cfe4fd518c8c4c014efc98ce9cd6f7a095e8f968c125cb75475ecd3f77f893bc361e92ecad38a6f13f016e22456704c6833f53fa725bf8
data/Gemfile CHANGED
@@ -5,6 +5,14 @@ source 'http://rubygems.org'
5
5
 
6
6
  gem 'rails', '>= 4.0'
7
7
  gem 'activerecord', '>= 4.0'
8
- gem 'chalk_dust', group: :test, git: 'https://github.com/nerakdon/chalk_dust.git'
8
+ gem 'jeweler', '~> 2'
9
9
 
10
- gemspec
10
+ group :test do
11
+ gem 'rspec-rails', '~> 3.2'
12
+ gem 'rspec-its', '~> 1.2'
13
+ gem 'factory_girl_rails', '~> 4.5', require: false
14
+ gem 'chalk_dust', git: 'https://github.com/krisleech/chalk_dust.git'
15
+ gem 'database_cleaner', '~> 1.4'
16
+ gem 'shoulda-matchers', '~> 2.8'
17
+ gem 'sqlite3', '~> 1.3'
18
+ end
@@ -1,4 +1,4 @@
1
- Copyright (c) 2013-2014 Gem Vein
1
+ Copyright (c) 2013-2015 Gem Vein
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
@@ -6,6 +6,47 @@
6
6
 
7
7
  Private person is an active record extension gem that allows a model to be given privacy settings over arbitrary models and polymorphic relations, putting users' accounts in control of their own privacy policies.
8
8
 
9
+ == Installation
10
+
11
+ To get started, add private_person to your Gemfile.
12
+ gem 'private_person'
13
+
14
+ Next, run the install:
15
+ rails g private_person:install
16
+
17
+ Set up your models:
18
+
19
+ # e.g. app/models/user.rb using ChalkDust as the subscription model
20
+ class User < ActiveRecord::Base
21
+ acts_as_permissor of: [
22
+ :following_users,
23
+ :user_followers # Or any method/scope names that will show who this User is being the permissor of
24
+ ], class_name: 'User' # The class_name indicates the class of the objects in the methods above.
25
+
26
+ def follow(user)
27
+ ChalkDust.subscribe(self, :to => user)
28
+ end
29
+
30
+ def following_users
31
+ ChalkDust.publishers_of(self)
32
+ end
33
+
34
+ def user_followers
35
+ ChalkDust.subscribers_of(self)
36
+ end
37
+ end
38
+
39
+ # e.g. app/models/page.rb
40
+ class Page < ActiveRecord::Base
41
+ acts_as_permissible :by => :user
42
+ belongs_to :user
43
+ end
44
+
45
+ # Then, when you need to know who's permitted:
46
+
47
+ @user.is_permitted? friend_user, Page
48
+
49
+
9
50
  == Contributing to Private Person
10
51
 
11
52
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.0
1
+ 0.5.0
@@ -12,7 +12,7 @@ module PrivatePerson
12
12
  self.by = params[:by]
13
13
 
14
14
  has_many :permissions, :as => :permissible, :class_name => 'PrivatePerson::Permission'
15
- has_many :permissors, :through => :permissions, :as => :permissible
15
+ has_many :permissors, :through => :permissions, :as => :permissible, :class_name => self.by.to_s.camelize
16
16
 
17
17
  send :include, InstanceMethods
18
18
  end
@@ -14,7 +14,7 @@ module PrivatePerson
14
14
  class_name.constantize.acts_as_permitted
15
15
 
16
16
  has_many :permissions_as_permissor, :as => :permissor, :class_name => 'PrivatePerson::Permission'
17
- has_many :permissibles, :through => :permissions, :as => :permissor
17
+ has_many :permissibles, :through => :permissions, :as => :permissor, :class_name => class_name
18
18
 
19
19
  send :include, InstanceMethods
20
20
  end
@@ -19,7 +19,7 @@ module PrivatePerson
19
19
  if relationship_type == 'public' or relationship_type.nil?
20
20
  return where("relationship_type = 'public'")
21
21
  end
22
- if(self.permissible_types.include? relationship_type)
22
+ if self.permissible_types.include? relationship_type
23
23
  return where("relationship_type = ? OR relationship_type = 'public'", relationship_type)
24
24
  end
25
25
  return where(0)
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: private_person 0.4.0 ruby lib
5
+ # stub: private_person 0.5.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "private_person"
9
- s.version = "0.4.0"
9
+ s.version = "0.5.0"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["Karen Lundgren"]
14
- s.date = "2014-10-10"
14
+ s.date = "2015-05-31"
15
15
  s.description = "Private person is an active record extension gem that allows a model to be given privacy settings over arbitrary models and polymorphic relations, putting users' accounts in control of their own privacy policies."
16
16
  s.email = "karen.e.lundgren@gmail.com"
17
17
  s.extra_rdoc_files = [
@@ -77,7 +77,7 @@ Gem::Specification.new do |s|
77
77
  ]
78
78
  s.homepage = "http://www.gemvein.com/museum/cases/private_person"
79
79
  s.licenses = ["MIT"]
80
- s.rubygems_version = "2.2.2"
80
+ s.rubygems_version = "2.4.5"
81
81
  s.summary = "Private person puts your users in control of their own privacy policies."
82
82
 
83
83
  if s.respond_to? :specification_version then
@@ -86,46 +86,16 @@ Gem::Specification.new do |s|
86
86
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
87
87
  s.add_runtime_dependency(%q<rails>, [">= 4.0"])
88
88
  s.add_runtime_dependency(%q<activerecord>, [">= 4.0"])
89
- s.add_runtime_dependency(%q<private_person>, [">= 0"])
90
- s.add_development_dependency(%q<rdoc>, [">= 0"])
91
- s.add_development_dependency(%q<bundler>, [">= 0"])
92
- s.add_development_dependency(%q<jeweler>, [">= 0"])
93
- s.add_development_dependency(%q<sqlite3>, [">= 0"])
94
- s.add_development_dependency(%q<rspec>, [">= 0"])
95
- s.add_development_dependency(%q<rspec-rails>, [">= 0"])
96
- s.add_development_dependency(%q<rspec-its>, [">= 0"])
97
- s.add_development_dependency(%q<shoulda-matchers>, [">= 0"])
98
- s.add_development_dependency(%q<factory_girl_rails>, [">= 0"])
99
- s.add_development_dependency(%q<database_cleaner>, [">= 0"])
89
+ s.add_runtime_dependency(%q<jeweler>, ["~> 2"])
100
90
  else
101
91
  s.add_dependency(%q<rails>, [">= 4.0"])
102
92
  s.add_dependency(%q<activerecord>, [">= 4.0"])
103
- s.add_dependency(%q<private_person>, [">= 0"])
104
- s.add_dependency(%q<rdoc>, [">= 0"])
105
- s.add_dependency(%q<bundler>, [">= 0"])
106
- s.add_dependency(%q<jeweler>, [">= 0"])
107
- s.add_dependency(%q<sqlite3>, [">= 0"])
108
- s.add_dependency(%q<rspec>, [">= 0"])
109
- s.add_dependency(%q<rspec-rails>, [">= 0"])
110
- s.add_dependency(%q<rspec-its>, [">= 0"])
111
- s.add_dependency(%q<shoulda-matchers>, [">= 0"])
112
- s.add_dependency(%q<factory_girl_rails>, [">= 0"])
113
- s.add_dependency(%q<database_cleaner>, [">= 0"])
93
+ s.add_dependency(%q<jeweler>, ["~> 2"])
114
94
  end
115
95
  else
116
96
  s.add_dependency(%q<rails>, [">= 4.0"])
117
97
  s.add_dependency(%q<activerecord>, [">= 4.0"])
118
- s.add_dependency(%q<private_person>, [">= 0"])
119
- s.add_dependency(%q<rdoc>, [">= 0"])
120
- s.add_dependency(%q<bundler>, [">= 0"])
121
- s.add_dependency(%q<jeweler>, [">= 0"])
122
- s.add_dependency(%q<sqlite3>, [">= 0"])
123
- s.add_dependency(%q<rspec>, [">= 0"])
124
- s.add_dependency(%q<rspec-rails>, [">= 0"])
125
- s.add_dependency(%q<rspec-its>, [">= 0"])
126
- s.add_dependency(%q<shoulda-matchers>, [">= 0"])
127
- s.add_dependency(%q<factory_girl_rails>, [">= 0"])
128
- s.add_dependency(%q<database_cleaner>, [">= 0"])
98
+ s.add_dependency(%q<jeweler>, ["~> 2"])
129
99
  end
130
100
  end
131
101
 
@@ -16,7 +16,7 @@ class User < ActiveRecord::Base
16
16
  def following_of_followings
17
17
  ids = []
18
18
  for user in following_users
19
- ids |= user.following_users
19
+ ids += user.following_users
20
20
  end
21
21
  User.where(:id => ids)
22
22
  end
@@ -24,7 +24,7 @@ class User < ActiveRecord::Base
24
24
  def follower_of_followers
25
25
  ids = []
26
26
  for user in user_followers
27
- ids |= user.user_followers
27
+ ids += user.user_followers
28
28
  end
29
29
  User.where(:id => ids)
30
30
  end
@@ -8,7 +8,7 @@ Dummy::Application.configure do
8
8
  config.cache_classes = true
9
9
 
10
10
  # Configure static asset server for tests with Cache-Control for performance
11
- config.serve_static_assets = true
11
+ config.serve_static_files = true
12
12
  config.static_cache_control = "public, max-age=3600"
13
13
 
14
14
  # Do not eager load code on boot.
Binary file
@@ -2,5 +2,6 @@ require 'spec_helper'
2
2
 
3
3
  describe Page do
4
4
  it { should have_many(:permissions) }
5
- it { should have_many(:permissors) }
5
+ it { should have_many(:permissors).through(:permissions) }
6
+ it { should belong_to(:user) }
6
7
  end
@@ -5,7 +5,7 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
5
5
  $LOAD_PATH.unshift(File.dirname(__FILE__))
6
6
  require 'rails/all'
7
7
  require 'sqlite3'
8
- require 'rspec'
8
+ # require 'rspec'
9
9
  require 'rspec/rails'
10
10
  require 'rspec/its'
11
11
 
@@ -22,6 +22,8 @@ require 'private_person'
22
22
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
23
23
 
24
24
  RSpec.configure do |config|
25
+ config.expect_with(:rspec) { |c| c.syntax = :should }
26
+
25
27
  config.before(:suite) do
26
28
  DatabaseCleaner.strategy = :transaction
27
29
  DatabaseCleaner.clean_with(:deletion)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: private_person
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Karen Lundgren
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-10 00:00:00.000000000 Z
11
+ date: 2015-05-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -38,160 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '4.0'
41
- - !ruby/object:Gem::Dependency
42
- name: private_person
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: rdoc
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: bundler
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
41
  - !ruby/object:Gem::Dependency
84
42
  name: jeweler
85
43
  requirement: !ruby/object:Gem::Requirement
86
44
  requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: sqlite3
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: rspec
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: rspec-rails
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
- - !ruby/object:Gem::Dependency
140
- name: rspec-its
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: '0'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- version: '0'
153
- - !ruby/object:Gem::Dependency
154
- name: shoulda-matchers
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - ">="
158
- - !ruby/object:Gem::Version
159
- version: '0'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - ">="
165
- - !ruby/object:Gem::Version
166
- version: '0'
167
- - !ruby/object:Gem::Dependency
168
- name: factory_girl_rails
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - ">="
45
+ - - "~>"
172
46
  - !ruby/object:Gem::Version
173
- version: '0'
174
- type: :development
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - ">="
179
- - !ruby/object:Gem::Version
180
- version: '0'
181
- - !ruby/object:Gem::Dependency
182
- name: database_cleaner
183
- requirement: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - ">="
186
- - !ruby/object:Gem::Version
187
- version: '0'
188
- type: :development
47
+ version: '2'
48
+ type: :runtime
189
49
  prerelease: false
190
50
  version_requirements: !ruby/object:Gem::Requirement
191
51
  requirements:
192
- - - ">="
52
+ - - "~>"
193
53
  - !ruby/object:Gem::Version
194
- version: '0'
54
+ version: '2'
195
55
  description: Private person is an active record extension gem that allows a model
196
56
  to be given privacy settings over arbitrary models and polymorphic relations, putting
197
57
  users' accounts in control of their own privacy policies.
@@ -277,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
277
137
  version: '0'
278
138
  requirements: []
279
139
  rubyforge_project:
280
- rubygems_version: 2.2.2
140
+ rubygems_version: 2.4.5
281
141
  signing_key:
282
142
  specification_version: 4
283
143
  summary: Private person puts your users in control of their own privacy policies.