Class: ComposableFixtures::FixtureDirectory

Inherits:
Object
  • Object
show all
Defined in:
lib/composable_fixtures/fixture_directory.rb

Defined Under Namespace

Classes: DirectoryAlreadyExistsError, DirectoryDoesntExistError

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ FixtureDirectory

Returns a new instance of FixtureDirectory.



9
10
11
# File 'lib/composable_fixtures/fixture_directory.rb', line 9

def initialize(name)
  @dir = Dir.mktmpdir(name)
end

Class Method Details

.create(fixtures) ⇒ Object



35
36
37
38
39
40
# File 'lib/composable_fixtures/fixture_directory.rb', line 35

def self.create(fixtures)
  key = repository_key(fixtures)
  raise DirectoryAlreadyExistsError if @@repository.has_key?(key)

  repository[key] = new(key)
end

.destroy_allObject



42
43
44
45
46
# File 'lib/composable_fixtures/fixture_directory.rb', line 42

def self.destroy_all
  repository.each do |key, dir|
    dir.destroy
  end
end

.get(fixtures) ⇒ Object



30
31
32
33
# File 'lib/composable_fixtures/fixture_directory.rb', line 30

def self.get(fixtures)
  key = repository_key(fixtures)
  repository.fetch(key, nil)
end

.repositoryObject



52
53
54
# File 'lib/composable_fixtures/fixture_directory.rb', line 52

def self.repository
  @@repository ||= {}
end

.repository_key(fixtures) ⇒ Object



48
49
50
# File 'lib/composable_fixtures/fixture_directory.rb', line 48

def self.repository_key(fixtures)
  fixtures.join('-')
end

Instance Method Details

#destroyObject



13
14
15
16
# File 'lib/composable_fixtures/fixture_directory.rb', line 13

def destroy
  raise DirectoryDoesntExistError unless @dir
  FileUtils.remove_entry @dir
end

#pathObject



26
27
28
# File 'lib/composable_fixtures/fixture_directory.rb', line 26

def path
  @dir.to_s
end

#write(name_to_fixtures) ⇒ Object



18
19
20
21
22
23
24
# File 'lib/composable_fixtures/fixture_directory.rb', line 18

def write(name_to_fixtures)
  name_to_fixtures.each do |(name, yaml)|
    File.open(File.join(path, name), "w") do |f|
      f.write yaml
    end
  end      
end