repository-manager 0.0.9 → 0.0.10

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.
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