repository-manager 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MjA2ODVjZTZlZTI0ZWM2N2UwOGJhM2Q2NTc1ZTk5Y2IyZDBhOWQ0MQ==
5
+ data.tar.gz: !binary |-
6
+ N2RlYjllMzAzMTFkNmEzODY4MDU3NGZlODRlY2Q3ZDU3ODk5MWJkYw==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ MzM1N2JlOGIxYzMyMDdkMDI3MGMwNjZjMTJlNGNjNDhiY2VmYjg4YjZkZjNk
10
+ YWVlNmZkYzkzMWQwZjY5ZjBiMzI5NDEyNmZmM2Y1MDg3MTAzODU0ZTBmYmZm
11
+ YzFkZDNhZjQ2NTExMGQyMGFiYjc2YWIyZmYyZGUzNTI4MWNiNTY=
12
+ data.tar.gz: !binary |-
13
+ Y2YyYTFjNTQ2NmFkYTYxOGE5NWJhMzlmMzFiOGNmNTFkYjVhMGU2YjYwNDRh
14
+ MjRkYjA5Y2FkMWYyNDBjZGRkYjA2ZmQ5NDBlN2IwZmRiMjFhY2VmNGNjZGM1
15
+ MGJiYTFiM2RiZjZkMDAzY2Y0MmVhYTU4NGVlNjQyYzc1MTdhMGI=
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- repository-manager (0.0.8)
4
+ repository-manager (0.0.10)
5
5
  ancestry
6
6
  carrierwave
7
7
  rails (> 3.0.0)
data/README.md CHANGED
@@ -55,10 +55,14 @@ RepositoryManager.setup do |config|
55
55
 
56
56
  # Default permissions that an object has when he is added in a sharing.
57
57
  config.default_sharing_permissions = { can_add: false, can_remove: false }
58
+
59
+ # Default path for generating the zip file when a user want to download a folder
60
+ # Default is : "download/#{member.class.to_s.underscore}/#{member.id}/#{self.class.to_s.underscore}/#{self.id}/"
61
+ #config.default_zip_path = true
58
62
  end
59
63
  ```
60
64
 
61
- For instance, if you want that a default sharing is totaly free, just put all default parameters to `true` :
65
+ For instance, if you want that a default sharing is totaly free (for edit, delete, etc), just put all default parameters to `true` :
62
66
  ```ruby
63
67
  RepositoryManager.setup do |config|
64
68
  config.default_repo_item_permissions = { can_read: true, can_create: true, can_update: true, can_delete: true, can_share: true }
@@ -107,6 +111,12 @@ A `repo_item` is an item in a repository, it can be:
107
111
 
108
112
  A folder can contains files and folders. Like in a real tree files and folders.
109
113
 
114
+ A few methods are written in those two ways :
115
+ - method(arg, options)
116
+ - method!(arg, options) (note the "!")
117
+
118
+ The two methods do the same, but the one with the "!" returns an Exeption error if it is a problem (AuthorisationException for instance) and the method without "!" return false if it has a problem.
119
+
110
120
  ### How can I create/delete/move a repo_item (file or folder)
111
121
 
112
122
  You just have to call the `has_repository` methods `create_file`, `create_folder`, or `delete_repo_item`.
@@ -186,6 +196,7 @@ user1.delete_repo_item(file2)
186
196
 
187
197
  Now, user1 want to share his folder 'The new folder' with a Group object `group1` et another User object `user2`. You can use the `has_repository` method `share(repo_item, member, options = nil)`.
188
198
 
199
+
189
200
  ```ruby
190
201
  # user1 wants to share the_new_folder with group1 and user2
191
202
 
@@ -208,6 +219,33 @@ sharing = user1.share(the_new_folder, members, options)
208
219
 
209
220
  See the chapter [Authorisations](#authorisations) for more details.
210
221
 
222
+ ### Repository Manager and the nested sharing
223
+
224
+ Repository Manager actualy don't accept nested sharing.
225
+
226
+ ```ruby
227
+
228
+ parent = @user1.create_folder('Parent')
229
+ nested = @user1.create_folder('Nested', parent)
230
+ children = @user1.create_folder('Children', nested)
231
+
232
+ # @user1 own repository :
233
+ # |-- 'Parent'
234
+ # | |-- 'Nested'
235
+ # | | |-- 'Children'
236
+
237
+ @user1.share(nested, @user2)
238
+
239
+ nested.has_nested_sharing? # Returns false (because `nested` is shared but there is no nested sharing)
240
+ parent.has_nested_sharing? # Returns true (because there is a sharing on one of his descendants)
241
+ children.has_nested_sharing? # Returns true (because there is a sharing on one of his ancestors)
242
+
243
+ # Here we can't share 'Parent' or 'Children' because it already exist a nested sharing.
244
+ @user1.share(parent, @user2) # Returns false
245
+ @user1.share!(parent, @user2) # Raise a NestedSharingException (note the "!")
246
+ @user1.share!(children, @user2) # Raise a NestedSharingException (note the "!")
247
+ ```
248
+
211
249
  ### How can I see my repo_items
212
250
 
213
251
  You can have two kind of repo_items:
@@ -239,9 +277,9 @@ Recall: a repo_item can be:
239
277
  ```ruby
240
278
  # We want to know if the object repo_item is a file or a folder:
241
279
  if repo_item.type == 'RepoFolder'
242
- repo_item.name #=> Returns the name of the folder ('New folder').
280
+ repo_item.name #=> Returns the name of the folder (for instance : 'New folder').
243
281
  elsif repo_item.type == 'RepoFile'
244
- repo_item.name #=> Returns the name of the file ('file.png').
282
+ repo_item.name #=> Returns the name of the file (for instance : 'file.png').
245
283
  # Here is the file
246
284
  repo_item.file.url # => '/url/to/file.png'
247
285
  repo_item.file.current_path # => 'path/to/file.png'
@@ -98,7 +98,7 @@ class RepoFolder < RepoItem
98
98
  # If this is a file, we just add this file to the zip
99
99
  if child.type == 'RepoFile'
100
100
  # Add the file in the zip if the object is authorised to read it.
101
- zf.add("#{prefix}#{child.name}", child.file.current_path) if object == nil || object.can_read?(child)
101
+ zf.add("#{prefix}#{child.name}", child.file.current_path) if object == nil || !RepositoryManager.accept_nested_sharing || object.can_read?(child)
102
102
  elsif child.type == 'RepoFolder'
103
103
  # If this folder has children, we do it again with it children
104
104
  if child.has_children?
@@ -106,7 +106,7 @@ class RepoFolder < RepoItem
106
106
  add_repo_item_to_zip(RepoItem.find(child.child_ids), zf, object, "#{prefix}#{child.name}/")
107
107
  else
108
108
  # We just create the folder if it is empty
109
- zf.mkdir(child.name) if object == nil || object.can_read?(child)
109
+ zf.mkdir(child.name) if object == nil || !RepositoryManager.accept_nested_sharing || object.can_read?(child)
110
110
  end
111
111
  end
112
112
  end
@@ -45,7 +45,21 @@ class RepoItem < ActiveRecord::Base
45
45
  rescue RepositoryManager::RepositoryManagerException
46
46
  false
47
47
  end
48
-
49
48
  end
50
49
 
50
+ # Returns true if it exist a sharing in the ancestors of descendant_ids of the repo_item (without itself)
51
+ def has_nested_sharing?
52
+ # An array with the ids of all ancestors and descendants
53
+ ancestor_and_descendant_ids = []
54
+ ancestor_and_descendant_ids << self.descendant_ids if !self.descendant_ids.empty?
55
+ ancestor_and_descendant_ids << self.ancestor_ids if !self.ancestor_ids.empty?
56
+
57
+ # If it is a sharing, it returns true
58
+ if Sharing.where(repo_item_id: ancestor_and_descendant_ids).count > 0
59
+ true
60
+ else
61
+ false
62
+ end
51
63
  end
64
+
65
+ end
@@ -11,6 +11,9 @@ module RepositoryManager
11
11
  mattr_accessor :default_zip_path
12
12
  @@default_zip_path = true
13
13
 
14
+ mattr_accessor :accept_nested_sharing
15
+ @@accept_nested_share = false
16
+
14
17
  class << self
15
18
  def setup
16
19
  yield self
@@ -4,4 +4,7 @@ module RepositoryManager
4
4
 
5
5
  class AuthorisationException < RepositoryManagerException
6
6
  end
7
+
8
+ class NestedSharingException < RepositoryManagerException
9
+ end
7
10
  end
@@ -36,6 +36,15 @@ module RepositoryManager
36
36
  # <tt>:can_add</tt> - Specify if the member can add objects to the sharing
37
37
  # <tt>:can_remove</tt> - Specify if the member can remove object to the sharing
38
38
  def share!(repo_item, members, options = {})
39
+
40
+ # Nested sharing are not accepted
41
+ if !RepositoryManager.accept_nested_sharing
42
+ # Check if no other sharing exist in the path
43
+ if repo_item.has_nested_sharing?
44
+ raise RepositoryManager::NestedSharingException.new("sharing failed. Another sharing already exist on the subtree or an ancestor '#{repo_item.name}'")
45
+ end
46
+ end
47
+
39
48
  authorisations = get_authorisations(repo_item)
40
49
 
41
50
  # Here we look if the instance has the authorisation for making a sharing
@@ -49,6 +58,7 @@ module RepositoryManager
49
58
  repo_item_permissions = options[:repo_item_permissions] if options[:repo_item_permissions]
50
59
  sharing_permissions = options[:sharing_permissions] if options[:sharing_permissions]
51
60
 
61
+ # Correct the item permission with accepted permissions
52
62
  repo_item_permissions = make_repo_item_permissions(repo_item_permissions, authorisations)
53
63
 
54
64
  sharing = Sharing.new(repo_item_permissions)
@@ -68,14 +78,16 @@ module RepositoryManager
68
78
  def share(repo_item, members, options = {})
69
79
  begin
70
80
  share!(repo_item, members, options)
71
- rescue RepositoryManager::AuthorisationException
81
+ rescue RepositoryManager::AuthorisationException, RepositoryManager::NestedSharingException
72
82
  false
73
83
  end
74
84
  end
75
85
 
76
86
  # Create a folder with the name (name) in the directory (source_folder)
77
87
  # Returns the object of the folder created if it is ok
78
- # Returns false if the folder is not created (no authorisation)
88
+ # Returns an Exception if the folder is not created
89
+ # RepositoryManagerException if the name already exist
90
+ # AuthorisationException if the object don't have the permission
79
91
  def create_folder!(name = 'New folder', source_folder = nil)
80
92
  # If he want to create a folder in a directory, we have to check if he have the authorisation
81
93
  if can_create?(source_folder)
@@ -90,7 +102,7 @@ module RepositoryManager
90
102
  else
91
103
  # The add didn't works, we delete the folder
92
104
  folder.destroy
93
- raise RepositoryManager::RepositoryManagerException.new("create_folder failed. The folder '#{name}' already exist in folder '#{source_folder.name}'")
105
+ raise RepositoryManager::RepositoryManagerException.new("create_folder failed. The folder name '#{name}' already exist in folder '#{source_folder.name}'")
94
106
  end
95
107
  else
96
108
  raise RepositoryManager::AuthorisationException.new("create_folder failed. You don't have the permission to create a folder in '#{source_folder.name}'")
@@ -263,20 +275,31 @@ module RepositoryManager
263
275
  can_do?('create', repo_item, authorisations)
264
276
  end
265
277
 
266
- # Return true if you can edit the repo, false else
278
+ # Returns true if you can edit the repo, false else
267
279
  def can_update?(repo_item, authorisations = nil)
268
280
  can_do?('update', repo_item, authorisations)
269
281
  end
270
282
 
271
- # Return true if you can delete the repo, false else
283
+ # Returns true if you can delete the repo, false else
272
284
  def can_delete?(repo_item, authorisations = nil)
273
285
  can_do?('delete', repo_item, authorisations)
274
286
  end
275
287
 
276
- # Return true it has a sharing in the repo_item
277
- def has_sharing?(repo_item)
278
-
279
- end
288
+ ## Returns true if it exist a sharing in the ancestors of descendant_ids of the repo_item (without itself)
289
+ #def has_sharing?(repo_item)
290
+ # # An array with the ids of all ancestors and descendants
291
+ # ancestor_and_descendant_ids = []
292
+ # ancestor_and_descendant_ids << repo_item.descendant_ids if !repo_item.descendant_ids.empty?
293
+ # ancestor_and_descendant_ids << repo_item.ancestor_ids if !repo_item.ancestor_ids.empty?
294
+ #
295
+ # # If it is a sharing, it returns true
296
+ # if self.sharings.where(repo_item_id: ancestor_and_descendant_ids).count > 0
297
+ # true
298
+ # else
299
+ # false
300
+ # end
301
+ #
302
+ #end
280
303
 
281
304
  # Return true if you can add a member in this sharing, false else
282
305
  def can_add_to?(sharing)
@@ -348,7 +371,7 @@ module RepositoryManager
348
371
 
349
372
  # Return if you can do or not this action (what)
350
373
  def can_do?(what, repo_item, authorisations = nil)
351
- #If we pass no authorisations we have to get it
374
+ # If we pass no authorisations we have to get it
352
375
  if authorisations == nil
353
376
  authorisations = get_authorisations(repo_item)
354
377
  end
@@ -357,13 +380,25 @@ module RepositoryManager
357
380
  when 'read'
358
381
  authorisations == true || (authorisations.kind_of?(Hash) && authorisations[:can_read] == true)
359
382
  when 'delete'
360
- authorisations == true || (authorisations.kind_of?(Hash) && authorisations[:can_delete] == true)
383
+ if RepositoryManager.accept_nested_sharing
384
+ # TODO implement to look if he can delete all the folder
385
+ else
386
+ authorisations == true || (authorisations.kind_of?(Hash) && authorisations[:can_delete] == true)
387
+ end
361
388
  when 'update'
362
389
  authorisations == true || (authorisations.kind_of?(Hash) && authorisations[:can_update] == true)
363
390
  when 'share'
364
- authorisations == true || (authorisations.kind_of?(Hash) && authorisations[:can_share] == true)
391
+ if RepositoryManager.accept_nested_sharing
392
+ # TODO implement to look if he can delete all the folder
393
+ else
394
+ authorisations == true || (authorisations.kind_of?(Hash) && authorisations[:can_share] == true)
395
+ end
365
396
  when 'create'
366
- authorisations == true || (authorisations.kind_of?(Hash) && authorisations[:can_create] == true)
397
+ if RepositoryManager.accept_nested_sharing
398
+ # TODO implement to look if he can delete all the folder
399
+ else
400
+ authorisations == true || (authorisations.kind_of?(Hash) && authorisations[:can_create] == true)
401
+ end
367
402
  else
368
403
  false
369
404
  end
@@ -1,3 +1,3 @@
1
1
  module RepositoryManager
2
- VERSION = '0.0.9'
2
+ VERSION = '0.0.10'
3
3
  end
@@ -20,12 +20,12 @@ Each instance (users, groups, etc..) can have it own repositories (with files an
20
20
  #s.test_files = Dir["spec/**/*"]
21
21
  s.license = 'MIT'
22
22
 
23
- s.add_runtime_dependency 'rails', '> 3.0.0'
23
+ s.add_runtime_dependency 'rails', '~> 3.0', '>= 3.0.0'
24
24
 
25
- s.add_development_dependency 'factory_girl_rails'
26
- s.add_development_dependency 'sqlite3'
25
+ s.add_development_dependency 'factory_girl_rails', '~> 0'
26
+ s.add_development_dependency 'sqlite3', '~> 0'
27
27
  s.add_development_dependency 'rspec-rails', '~> 2.0'
28
- s.add_runtime_dependency 'ancestry'
29
- s.add_runtime_dependency 'carrierwave'
30
- s.add_runtime_dependency 'rubyzip'#, '< 1.0.0'#, :require => 'zip/zip'
28
+ s.add_runtime_dependency 'ancestry', '~> 0'
29
+ s.add_runtime_dependency 'carrierwave', '~> 0'
30
+ s.add_runtime_dependency 'rubyzip', '~> 0'#, '< 1.0.0'#, :require => 'zip/zip'
31
31
  end
Binary file
@@ -166,6 +166,7 @@ describe 'HasRepository' do
166
166
 
167
167
  sharing_of_user_1 = @user1.sharings.last
168
168
 
169
+ # TODO correct this, sharing is nil
169
170
  expect(sharing_of_user_1.can_read?).to eq(true)
170
171
  expect(sharing_of_user_1.can_update?).to eq(false)
171
172
  expect(sharing_of_user_1.can_share?).to eq(true)
@@ -194,7 +195,52 @@ describe 'HasRepository' do
194
195
  #expect(@user2.sharings_owners.count).to eq(1)
195
196
  end
196
197
 
197
- it 'can share a repo_item with ancestor sharing permissions' do
198
+ # Todo implement with accepting nested set to true
199
+ #it 'can share a repo_item with ancestor sharing permissions' do
200
+ # parent = FactoryGirl.create(:repo_folder)
201
+ # parent.owner = @user3
202
+ # middle = @user3.create_folder('Middle', parent)
203
+ # children = @user3.create_folder('Children', middle)
204
+ #
205
+ # file = FactoryGirl.build(:repo_file)
206
+ # file.owner = @user3
207
+ # file.save
208
+ #
209
+ # children.add(file)
210
+ #
211
+ # options = {repo_item_permissions: {can_read: true, can_update: true, can_share: false}}
212
+ # @user3.share(parent, @user1, options)
213
+ #
214
+ # options = {repo_item_permissions: {can_read: true, can_update: true, can_share: true}}
215
+ # @user3.share(children, @user1, options)
216
+ #
217
+ # @user1.share(middle, @user2)
218
+ # expect(@user2.sharings.count).to eq(0)
219
+ # @user1.share(file, @user2)
220
+ # expect(@user2.sharings.count).to eq(1)
221
+ #end
222
+
223
+ it 'can\'t share a nested sharing' do
224
+ parent = @user1.create_folder('Parent')
225
+ nested = @user1.create_folder('Nested', parent)
226
+ children = @user1.create_folder('Children', nested)
227
+
228
+ # @user1 own repository :
229
+ # |-- 'Parent'
230
+ # | |-- 'Nested'
231
+ # | | |-- 'Children'
232
+
233
+ @user1.share(nested, @user2)
234
+
235
+ expect(nested.has_nested_sharing?).to eq(false) # Returns false (because `nested` is shared but there is no nested sharing)
236
+ expect(parent.has_nested_sharing?).to eq(true) # Returns true (because there is a sharing on one of his descendants)
237
+ expect(parent.has_nested_sharing?).to eq(true) # Returns true (because there is a sharing on one of his ancestors)
238
+
239
+ # Here we can't share 'Parent' or 'Children' because it already exist a nested sharing.
240
+ expect(@user1.share(parent, @user2)).to eq(false) # Returns false
241
+ end
242
+
243
+ it 'can\'t share a repo_item with ancestor sharing permissions' do
198
244
  parent = FactoryGirl.create(:repo_folder)
199
245
  parent.owner = @user3
200
246
  middle = @user3.create_folder('Middle', parent)
@@ -206,7 +252,7 @@ describe 'HasRepository' do
206
252
 
207
253
  children.add(file)
208
254
 
209
- options = {repo_item_permissions: {can_read: true, can_update: true, can_share: false}}
255
+ options = {repo_item_permissions: {can_read: true, can_update: true, can_share: true}}
210
256
  @user3.share(parent, @user1, options)
211
257
 
212
258
  options = {repo_item_permissions: {can_read: true, can_update: true, can_share: true}}
@@ -215,7 +261,7 @@ describe 'HasRepository' do
215
261
  @user1.share(middle, @user2)
216
262
  expect(@user2.sharings.count).to eq(0)
217
263
  @user1.share(file, @user2)
218
- expect(@user2.sharings.count).to eq(1)
264
+ expect(@user2.sharings.count).to eq(0)
219
265
  end
220
266
 
221
267
  it "can create a folder" do
metadata CHANGED
@@ -1,68 +1,66 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: repository-manager
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
5
- prerelease:
4
+ version: 0.0.10
6
5
  platform: ruby
7
6
  authors:
8
7
  - Yves Baumann
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-11-21 00:00:00.000000000 Z
11
+ date: 2014-01-13 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rails
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>'
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '3.0'
20
+ - - ! '>='
20
21
  - !ruby/object:Gem::Version
21
22
  version: 3.0.0
22
23
  type: :runtime
23
24
  prerelease: false
24
25
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
26
  requirements:
27
- - - ! '>'
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '3.0'
30
+ - - ! '>='
28
31
  - !ruby/object:Gem::Version
29
32
  version: 3.0.0
30
33
  - !ruby/object:Gem::Dependency
31
34
  name: factory_girl_rails
32
35
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
36
  requirements:
35
- - - ! '>='
37
+ - - ~>
36
38
  - !ruby/object:Gem::Version
37
39
  version: '0'
38
40
  type: :development
39
41
  prerelease: false
40
42
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
43
  requirements:
43
- - - ! '>='
44
+ - - ~>
44
45
  - !ruby/object:Gem::Version
45
46
  version: '0'
46
47
  - !ruby/object:Gem::Dependency
47
48
  name: sqlite3
48
49
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
50
  requirements:
51
- - - ! '>='
51
+ - - ~>
52
52
  - !ruby/object:Gem::Version
53
53
  version: '0'
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
57
  requirements:
59
- - - ! '>='
58
+ - - ~>
60
59
  - !ruby/object:Gem::Version
61
60
  version: '0'
62
61
  - !ruby/object:Gem::Dependency
63
62
  name: rspec-rails
64
63
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
64
  requirements:
67
65
  - - ~>
68
66
  - !ruby/object:Gem::Version
@@ -70,7 +68,6 @@ dependencies:
70
68
  type: :development
71
69
  prerelease: false
72
70
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
71
  requirements:
75
72
  - - ~>
76
73
  - !ruby/object:Gem::Version
@@ -78,49 +75,43 @@ dependencies:
78
75
  - !ruby/object:Gem::Dependency
79
76
  name: ancestry
80
77
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
78
  requirements:
83
- - - ! '>='
79
+ - - ~>
84
80
  - !ruby/object:Gem::Version
85
81
  version: '0'
86
82
  type: :runtime
87
83
  prerelease: false
88
84
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
85
  requirements:
91
- - - ! '>='
86
+ - - ~>
92
87
  - !ruby/object:Gem::Version
93
88
  version: '0'
94
89
  - !ruby/object:Gem::Dependency
95
90
  name: carrierwave
96
91
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
92
  requirements:
99
- - - ! '>='
93
+ - - ~>
100
94
  - !ruby/object:Gem::Version
101
95
  version: '0'
102
96
  type: :runtime
103
97
  prerelease: false
104
98
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
99
  requirements:
107
- - - ! '>='
100
+ - - ~>
108
101
  - !ruby/object:Gem::Version
109
102
  version: '0'
110
103
  - !ruby/object:Gem::Dependency
111
104
  name: rubyzip
112
105
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
106
  requirements:
115
- - - ! '>='
107
+ - - ~>
116
108
  - !ruby/object:Gem::Version
117
109
  version: '0'
118
110
  type: :runtime
119
111
  prerelease: false
120
112
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
113
  requirements:
123
- - - ! '>='
114
+ - - ~>
124
115
  - !ruby/object:Gem::Version
125
116
  version: '0'
126
117
  description: ! 'This project is based on the need for a repository manager system
@@ -213,27 +204,26 @@ files:
213
204
  homepage: https://github.com/Texicitys/repository-manager
214
205
  licenses:
215
206
  - MIT
207
+ metadata: {}
216
208
  post_install_message:
217
209
  rdoc_options: []
218
210
  require_paths:
219
211
  - lib
220
212
  required_ruby_version: !ruby/object:Gem::Requirement
221
- none: false
222
213
  requirements:
223
214
  - - ! '>='
224
215
  - !ruby/object:Gem::Version
225
216
  version: '0'
226
217
  required_rubygems_version: !ruby/object:Gem::Requirement
227
- none: false
228
218
  requirements:
229
219
  - - ! '>='
230
220
  - !ruby/object:Gem::Version
231
221
  version: '0'
232
222
  requirements: []
233
223
  rubyforge_project:
234
- rubygems_version: 1.8.24
224
+ rubygems_version: 2.2.1
235
225
  signing_key:
236
- specification_version: 3
226
+ specification_version: 4
237
227
  summary: Ruby on Rails plugin (gem) for managing repositories (files/folders/permissions/sharings).
238
228
  test_files:
239
229
  - spec/dummy/Gemfile