Guest User

Untitled

a guest
Apr 20th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.12 KB | None | 0 0
  1. diff --git a/lib/data_mapper/resource.rb b/lib/data_mapper/resource.rb
  2. index 49a2a64..7def4ee 100644
  3. --- a/lib/data_mapper/resource.rb
  4. +++ b/lib/data_mapper/resource.rb
  5. @@ -221,8 +221,29 @@ module DataMapper
  6. base.instance_variable_set(:@properties, Hash.new { |h,k| h[k] = k == :default ? PropertySet.new : h[:default].dup })
  7. end
  8.  
  9. - def repository(*args, &block)
  10. - DataMapper.repository(*args, &block)
  11. + #
  12. + # Get the repository with a given name, or the default one for the current context, or the default one for this class.
  13. + #
  14. + # ==== Parameters
  15. + # name<Symbol>:: The name of the repository wanted.
  16. + # block<Block>:: Block to execute with the fetched repository as parameter.
  17. + #
  18. + # ==== Returns
  19. + # if given a block
  20. + # Object:: Whatever the block returns.
  21. + # else
  22. + # DataMapper::Repository:: The asked for Repository.
  23. + #
  24. + #-
  25. + # @public
  26. + def repository(name = nil, &block)
  27. + if name
  28. + DataMapper.repository(name, &block)
  29. + elsif Repository.context.last
  30. + DataMapper.repository(nil, &block)
  31. + else
  32. + DataMapper.repository(default_repository_name, &block)
  33. + end
  34. end
  35.  
  36. def storage_name(repository_name = default_repository_name)
  37. diff --git a/spec/unit/resource_spec.rb b/spec/unit/resource_spec.rb
  38. index 98b0e02..0219427 100644
  39. --- a/spec/unit/resource_spec.rb
  40. +++ b/spec/unit/resource_spec.rb
  41. @@ -35,6 +35,13 @@ describe "DataMapper::Resource" do
  42.  
  43. class Moon
  44. end
  45. +
  46. + class LegacyStar
  47. + include DataMapper::Resource
  48. + def self.default_repository_name
  49. + :legacy
  50. + end
  51. + end
  52. end
  53.  
  54. it "should hold repository-specific properties" do
  55. @@ -171,6 +178,7 @@ describe "DataMapper::Resource" do
  56.  
  57. it '.repository should use default repository when not passed any arguments' do
  58. Planet.repository.name.should == Planet.repository(:default).name
  59. + LegacyStar.repository.name.should == LegacyStar.repository(:legacy).name
  60. end
  61.  
  62. it 'should provide storage_name' do
Add Comment
Please, Sign In to add comment