gom-filesystem-adapter 0.2.0 → 0.3.0
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.
- data/README.rdoc +5 -0
- data/lib/{filesystem.rb → gom/filesystem-adapter.rb} +1 -1
- data/lib/gom/storage.rb +2 -6
- data/lib/gom/storage/filesystem.rb +4 -12
- data/lib/gom/storage/filesystem/adapter.rb +37 -35
- data/lib/gom/storage/filesystem/collection.rb +2 -14
- data/lib/gom/storage/filesystem/collection/fetcher.rb +9 -25
- data/lib/gom/storage/filesystem/loader.rb +53 -66
- data/spec/acceptance/adapter_spec.rb +18 -1
- data/spec/acceptance/data/{Object.yml → objects.yml} +3 -1
- data/spec/gom/storage/filesystem/adapter_spec.rb +52 -2
- data/spec/gom/storage/filesystem/loader_spec.rb +7 -6
- data/spec/spec_helper.rb +1 -1
- data/spec/storage.configuration +1 -1
- metadata +14 -15
data/README.rdoc
CHANGED
@@ -52,3 +52,8 @@ Development has been done test-driven and the code follows at most the Clean Cod
|
|
52
52
|
removed by using the reek[http://github.com/kevinrutherford/reek] code smell detector.
|
53
53
|
|
54
54
|
This project is still experimental and under development. Any bug report and contribution is welcome!
|
55
|
+
|
56
|
+
== Support
|
57
|
+
|
58
|
+
Apart from contribution, support via Flattr[http://flattr.com/thing/108996/Generic-Object-Mapper-Filesystem-adapter]
|
59
|
+
is welcome.
|
data/lib/gom/storage.rb
CHANGED
@@ -1,16 +1,8 @@
|
|
1
1
|
|
2
|
-
module GOM
|
2
|
+
module GOM::Storage::Filesystem
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
autoload :Adapter, File.join(File.dirname(__FILE__), "filesystem", "adapter")
|
9
|
-
autoload :Collection, File.join(File.dirname(__FILE__), "filesystem", "collection")
|
10
|
-
autoload :Loader, File.join(File.dirname(__FILE__), "filesystem", "loader")
|
11
|
-
|
12
|
-
end
|
13
|
-
|
14
|
-
end
|
4
|
+
autoload :Adapter, File.join(File.dirname(__FILE__), "filesystem", "adapter")
|
5
|
+
autoload :Collection, File.join(File.dirname(__FILE__), "filesystem", "collection")
|
6
|
+
autoload :Loader, File.join(File.dirname(__FILE__), "filesystem", "loader")
|
15
7
|
|
16
8
|
end
|
@@ -1,50 +1,52 @@
|
|
1
1
|
|
2
|
-
|
2
|
+
# The filesystem storage adapter
|
3
|
+
class GOM::Storage::Filesystem::Adapter < GOM::Storage::Adapter
|
3
4
|
|
4
|
-
|
5
|
+
attr_reader :drafts
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
class Adapter < GOM::Storage::Adapter
|
10
|
-
|
11
|
-
def setup
|
12
|
-
load_drafts
|
13
|
-
end
|
14
|
-
|
15
|
-
def fetch(id)
|
16
|
-
@drafts[id]
|
17
|
-
end
|
7
|
+
def setup
|
8
|
+
load_drafts
|
9
|
+
end
|
18
10
|
|
19
|
-
|
20
|
-
|
21
|
-
|
11
|
+
def teardown
|
12
|
+
@drafts = nil
|
13
|
+
end
|
22
14
|
|
23
|
-
|
24
|
-
|
25
|
-
|
15
|
+
def fetch(id)
|
16
|
+
check_setup
|
17
|
+
@drafts[id]
|
18
|
+
end
|
26
19
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
GOM::Object::Collection.new fetcher
|
32
|
-
end
|
20
|
+
def store(*arguments)
|
21
|
+
check_setup
|
22
|
+
read_only_error
|
23
|
+
end
|
33
24
|
|
34
|
-
|
25
|
+
def remove(*arguments)
|
26
|
+
check_setup
|
27
|
+
read_only_error
|
28
|
+
end
|
35
29
|
|
36
|
-
|
37
|
-
|
38
|
-
|
30
|
+
def collection(view_name, options = { })
|
31
|
+
check_setup
|
32
|
+
view = configuration.views[view_name.to_sym]
|
33
|
+
raise ViewNotFoundError, "there are no view with the name #{view_name}" unless view
|
34
|
+
fetcher = GOM::Storage::Filesystem::Collection::Fetcher.new @drafts, view
|
35
|
+
GOM::Object::Collection.new fetcher
|
36
|
+
end
|
39
37
|
|
40
|
-
|
41
|
-
raise GOM::Storage::ReadOnlyError, "The adapter doesn't provide write methods"
|
42
|
-
end
|
38
|
+
private
|
43
39
|
|
44
|
-
|
40
|
+
def check_setup
|
41
|
+
raise GOM::Storage::Adapter::NoSetupError unless @drafts
|
42
|
+
end
|
45
43
|
|
46
|
-
|
44
|
+
def load_drafts
|
45
|
+
@drafts = GOM::Storage::Filesystem::Loader.new(configuration[:files]).drafts
|
46
|
+
end
|
47
47
|
|
48
|
+
def read_only_error
|
49
|
+
raise GOM::Storage::ReadOnlyError, "The adapter doesn't provide write methods"
|
48
50
|
end
|
49
51
|
|
50
52
|
end
|
@@ -1,18 +1,6 @@
|
|
1
1
|
|
2
|
-
module GOM
|
2
|
+
module GOM::Storage::Filesystem::Collection
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
module Filesystem
|
7
|
-
|
8
|
-
module Collection
|
9
|
-
|
10
|
-
autoload :Fetcher, File.join(File.dirname(__FILE__), "collection", "fetcher")
|
11
|
-
|
12
|
-
end
|
13
|
-
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
4
|
+
autoload :Fetcher, File.join(File.dirname(__FILE__), "collection", "fetcher")
|
17
5
|
|
18
6
|
end
|
@@ -1,32 +1,16 @@
|
|
1
1
|
|
2
|
-
|
2
|
+
# A class collection fetcher for the filesystem adapter.
|
3
|
+
class GOM::Storage::Filesystem::Collection::Fetcher
|
3
4
|
|
4
|
-
|
5
|
+
attr_accessor :drafts
|
6
|
+
attr_accessor :view
|
5
7
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
# A class collection fetcher for the filesystem adapter.
|
11
|
-
class Fetcher
|
12
|
-
|
13
|
-
attr_accessor :drafts
|
14
|
-
attr_accessor :view
|
15
|
-
|
16
|
-
def initialize(drafts, view)
|
17
|
-
@drafts, @view = drafts, view
|
18
|
-
end
|
19
|
-
|
20
|
-
def drafts
|
21
|
-
@drafts.values.select{ |draft| draft.class_name == @view.class_name }
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
8
|
+
def initialize(drafts, view)
|
9
|
+
@drafts, @view = drafts, view
|
10
|
+
end
|
29
11
|
|
12
|
+
def drafts
|
13
|
+
@drafts.values.select{ |draft| draft.class_name == @view.class_name }
|
30
14
|
end
|
31
15
|
|
32
16
|
end
|
@@ -1,86 +1,73 @@
|
|
1
1
|
require 'yaml'
|
2
2
|
|
3
|
-
|
3
|
+
# The loader for the filesystem data that is provided by the storage adapter.
|
4
|
+
class GOM::Storage::Filesystem::Loader
|
4
5
|
|
5
|
-
|
6
|
+
attr_accessor :files
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
class Loader
|
11
|
-
|
12
|
-
attr_accessor :directory
|
13
|
-
|
14
|
-
def initialize(directory)
|
15
|
-
@directory = directory
|
16
|
-
end
|
17
|
-
|
18
|
-
def drafts
|
19
|
-
@drafts = { }
|
20
|
-
load_yml_files
|
21
|
-
@drafts
|
22
|
-
end
|
23
|
-
|
24
|
-
private
|
25
|
-
|
26
|
-
def load_yml_files
|
27
|
-
Dir[File.join(@directory, "*.yml")].each do |filename|
|
28
|
-
load_yml_file filename
|
29
|
-
end
|
30
|
-
end
|
8
|
+
def initialize(files)
|
9
|
+
@files = files
|
10
|
+
end
|
31
11
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
12
|
+
def drafts
|
13
|
+
@drafts = { }
|
14
|
+
load_yml_files
|
15
|
+
@drafts
|
16
|
+
end
|
36
17
|
|
37
|
-
|
38
|
-
file_hash.each do |id, hash|
|
39
|
-
@drafts[id] = Builder.new(classname, hash).draft
|
40
|
-
end
|
41
|
-
end
|
18
|
+
private
|
42
19
|
|
43
|
-
|
44
|
-
|
20
|
+
def load_yml_files
|
21
|
+
Dir[@files].each do |filename|
|
22
|
+
load_yml_file filename
|
23
|
+
end
|
24
|
+
end
|
45
25
|
|
46
|
-
|
47
|
-
|
48
|
-
|
26
|
+
def load_yml_file(filename)
|
27
|
+
load_file_hash YAML.load_file(filename)
|
28
|
+
end
|
49
29
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
@draft
|
56
|
-
end
|
30
|
+
def load_file_hash(file_hash)
|
31
|
+
file_hash.each do |id, hash|
|
32
|
+
@drafts[id] = Builder.new(hash).draft
|
33
|
+
end
|
34
|
+
end
|
57
35
|
|
58
|
-
|
36
|
+
# Builds a draft out of the file hashes.
|
37
|
+
class Builder
|
59
38
|
|
60
|
-
|
61
|
-
|
62
|
-
|
39
|
+
def initialize(hash)
|
40
|
+
@hash = hash
|
41
|
+
end
|
63
42
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
43
|
+
def draft
|
44
|
+
@draft = GOM::Object::Draft.new
|
45
|
+
set_class_name
|
46
|
+
set_properties
|
47
|
+
set_relations
|
48
|
+
@draft
|
49
|
+
end
|
71
50
|
|
72
|
-
|
73
|
-
relations = { }
|
74
|
-
(@hash["relations"] || { }).each do |key, value|
|
75
|
-
relations[key] = GOM::Object::Proxy.new GOM::Object::Id.new(value)
|
76
|
-
end
|
77
|
-
@draft.relations = relations unless relations.empty?
|
78
|
-
end
|
51
|
+
private
|
79
52
|
|
80
|
-
|
53
|
+
def set_class_name
|
54
|
+
@draft.class_name = @hash["class"] || "Object"
|
55
|
+
end
|
81
56
|
|
57
|
+
def set_properties
|
58
|
+
properties = { }
|
59
|
+
(@hash["properties"] || { }).each do |key, value|
|
60
|
+
properties[key] = value
|
82
61
|
end
|
62
|
+
@draft.properties = properties unless properties.empty?
|
63
|
+
end
|
83
64
|
|
65
|
+
def set_relations
|
66
|
+
relations = { }
|
67
|
+
(@hash["relations"] || { }).each do |key, value|
|
68
|
+
relations[key] = GOM::Object::Proxy.new GOM::Object::Id.new(value)
|
69
|
+
end
|
70
|
+
@draft.relations = relations unless relations.empty?
|
84
71
|
end
|
85
72
|
|
86
73
|
end
|
@@ -1,10 +1,27 @@
|
|
1
1
|
require File.expand_path(File.join(File.dirname(__FILE__), "..", "spec_helper"))
|
2
|
-
require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "lib", "filesystem"))
|
3
2
|
|
4
3
|
GOM::Storage::Configuration.read File.join(File.dirname(__FILE__), "..", "storage.configuration")
|
5
4
|
|
6
5
|
describe "filesystem adapter" do
|
7
6
|
|
7
|
+
it_should_behave_like "an adapter that needs setup"
|
8
|
+
|
8
9
|
it_should_behave_like "a read-only adapter connected to a stateless storage"
|
9
10
|
|
11
|
+
describe "setup without any data files" do
|
12
|
+
|
13
|
+
before :each do
|
14
|
+
GOM::Storage.teardown
|
15
|
+
GOM::Storage::Configuration[:test_storage].hash[:files] = "invalid"
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should raise no exception" do
|
19
|
+
lambda do
|
20
|
+
GOM::Storage.setup
|
21
|
+
GOM::Storage.fetch "test_storage:object_1"
|
22
|
+
end.should_not raise_error
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
10
27
|
end
|
@@ -10,7 +10,7 @@ describe GOM::Storage::Filesystem::Adapter do
|
|
10
10
|
GOM::Storage::Filesystem::Loader.stub(:new).and_return(@loader)
|
11
11
|
|
12
12
|
@configuration = mock GOM::Storage::Configuration
|
13
|
-
@configuration.stub(:[]).with(:
|
13
|
+
@configuration.stub(:[]).with(:files).and_return("test_files")
|
14
14
|
@adapter = described_class.new @configuration
|
15
15
|
end
|
16
16
|
|
@@ -21,7 +21,7 @@ describe GOM::Storage::Filesystem::Adapter do
|
|
21
21
|
describe "setup" do
|
22
22
|
|
23
23
|
it "should initialize a file system loader" do
|
24
|
-
GOM::Storage::Filesystem::Loader.should_receive(:new).with("
|
24
|
+
GOM::Storage::Filesystem::Loader.should_receive(:new).with("test_files").and_return(@loader)
|
25
25
|
@adapter.setup
|
26
26
|
end
|
27
27
|
|
@@ -32,6 +32,20 @@ describe GOM::Storage::Filesystem::Adapter do
|
|
32
32
|
|
33
33
|
end
|
34
34
|
|
35
|
+
describe "teardown" do
|
36
|
+
|
37
|
+
before :each do
|
38
|
+
@adapter.setup
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should clear the loaded drafts" do
|
42
|
+
lambda do
|
43
|
+
@adapter.teardown
|
44
|
+
end.should change(@adapter, :drafts).from(@drafts).to(nil)
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
35
49
|
describe "fetch" do
|
36
50
|
|
37
51
|
before :each do
|
@@ -42,26 +56,55 @@ describe GOM::Storage::Filesystem::Adapter do
|
|
42
56
|
@adapter.fetch("object_1").should == @draft
|
43
57
|
end
|
44
58
|
|
59
|
+
it "should raise a #{GOM::Storage::Adapter::NoSetupError} if no drafts has been loaded" do
|
60
|
+
@adapter.teardown
|
61
|
+
lambda do
|
62
|
+
@adapter.fetch "object_1"
|
63
|
+
end.should raise_error(GOM::Storage::Adapter::NoSetupError)
|
64
|
+
end
|
65
|
+
|
45
66
|
end
|
46
67
|
|
47
68
|
describe "store" do
|
48
69
|
|
70
|
+
before :each do
|
71
|
+
@adapter.setup
|
72
|
+
end
|
73
|
+
|
49
74
|
it "should raise a GOM::Storage::ReadOnlyError" do
|
50
75
|
lambda do
|
51
76
|
@adapter.store Object.new, "test_storage"
|
52
77
|
end.should raise_error(GOM::Storage::ReadOnlyError)
|
53
78
|
end
|
54
79
|
|
80
|
+
it "should raise a #{GOM::Storage::Adapter::NoSetupError} if no drafts has been loaded" do
|
81
|
+
@adapter.teardown
|
82
|
+
lambda do
|
83
|
+
@adapter.store Object.new, "test_storage"
|
84
|
+
end.should raise_error(GOM::Storage::Adapter::NoSetupError)
|
85
|
+
end
|
86
|
+
|
55
87
|
end
|
56
88
|
|
57
89
|
describe "remove" do
|
58
90
|
|
91
|
+
before :each do
|
92
|
+
@adapter.setup
|
93
|
+
end
|
94
|
+
|
59
95
|
it "should raise a GOM::Storage::ReadOnlyError" do
|
60
96
|
lambda do
|
61
97
|
@adapter.remove Object.new
|
62
98
|
end.should raise_error(GOM::Storage::ReadOnlyError)
|
63
99
|
end
|
64
100
|
|
101
|
+
it "should raise a #{GOM::Storage::Adapter::NoSetupError} if no drafts has been loaded" do
|
102
|
+
@adapter.teardown
|
103
|
+
lambda do
|
104
|
+
@adapter.remove Object.new
|
105
|
+
end.should raise_error(GOM::Storage::Adapter::NoSetupError)
|
106
|
+
end
|
107
|
+
|
65
108
|
end
|
66
109
|
|
67
110
|
describe "collection" do
|
@@ -107,6 +150,13 @@ describe GOM::Storage::Filesystem::Adapter do
|
|
107
150
|
collection.should == @collection
|
108
151
|
end
|
109
152
|
|
153
|
+
it "should raise a #{GOM::Storage::Adapter::NoSetupError} if no drafts has been loaded" do
|
154
|
+
@adapter.teardown
|
155
|
+
lambda do
|
156
|
+
@adapter.collection :test_object_class_view
|
157
|
+
end.should raise_error(GOM::Storage::Adapter::NoSetupError)
|
158
|
+
end
|
159
|
+
|
110
160
|
end
|
111
161
|
|
112
162
|
end
|
@@ -3,14 +3,14 @@ require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "sp
|
|
3
3
|
describe GOM::Storage::Filesystem::Loader do
|
4
4
|
|
5
5
|
before :each do
|
6
|
-
@
|
7
|
-
@loader = GOM::Storage::Filesystem::Loader.new @
|
6
|
+
@files = "files"
|
7
|
+
@loader = GOM::Storage::Filesystem::Loader.new @files
|
8
8
|
end
|
9
9
|
|
10
10
|
describe "initialize" do
|
11
11
|
|
12
12
|
it "should set the directory" do
|
13
|
-
@loader.
|
13
|
+
@loader.files.should == @files
|
14
14
|
end
|
15
15
|
|
16
16
|
end
|
@@ -27,6 +27,7 @@ describe GOM::Storage::Filesystem::Loader do
|
|
27
27
|
|
28
28
|
@file_hash = {
|
29
29
|
"object_1" => {
|
30
|
+
"class" => "Test::Model",
|
30
31
|
"properties" => {
|
31
32
|
"test" => "test value"
|
32
33
|
},
|
@@ -43,8 +44,8 @@ describe GOM::Storage::Filesystem::Loader do
|
|
43
44
|
YAML.stub(:load_file).and_return(@file_hash)
|
44
45
|
end
|
45
46
|
|
46
|
-
it "should searches all
|
47
|
-
Dir.should_receive(:[]).with("
|
47
|
+
it "should searches all files that matches the pattern" do
|
48
|
+
Dir.should_receive(:[]).with("files").and_return(@filenames)
|
48
49
|
@loader.drafts
|
49
50
|
end
|
50
51
|
|
@@ -60,7 +61,7 @@ describe GOM::Storage::Filesystem::Loader do
|
|
60
61
|
|
61
62
|
it "should convert the file hash into drafts" do
|
62
63
|
draft_one = @loader.drafts["object_1"]
|
63
|
-
draft_one.class_name.should == "
|
64
|
+
draft_one.class_name.should == "Test::Model"
|
64
65
|
draft_one.properties.should == { "test" => "test value" }
|
65
66
|
draft_one.relations.should == { "related_object" => @proxy }
|
66
67
|
|
data/spec/spec_helper.rb
CHANGED
@@ -2,5 +2,5 @@ require 'rubygems'
|
|
2
2
|
gem 'rspec', '>= 2'
|
3
3
|
require 'rspec'
|
4
4
|
|
5
|
-
require File.expand_path(File.join(File.dirname(__FILE__), "..", "lib", "filesystem"))
|
5
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "..", "lib", "gom", "filesystem-adapter"))
|
6
6
|
require 'gom/spec'
|
data/spec/storage.configuration
CHANGED
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
7
|
+
- 3
|
8
8
|
- 0
|
9
|
-
version: 0.
|
9
|
+
version: 0.3.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- "Philipp Br\xC3\xBCll"
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date:
|
17
|
+
date: 2011-02-17 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -27,9 +27,8 @@ dependencies:
|
|
27
27
|
- !ruby/object:Gem::Version
|
28
28
|
segments:
|
29
29
|
- 0
|
30
|
-
-
|
31
|
-
|
32
|
-
version: 0.2.0
|
30
|
+
- 3
|
31
|
+
version: "0.3"
|
33
32
|
type: :runtime
|
34
33
|
version_requirements: *id001
|
35
34
|
- !ruby/object:Gem::Dependency
|
@@ -71,20 +70,20 @@ files:
|
|
71
70
|
- README.rdoc
|
72
71
|
- LICENSE
|
73
72
|
- Rakefile
|
74
|
-
- lib/gom/storage
|
75
|
-
- lib/gom/
|
73
|
+
- lib/gom/storage.rb
|
74
|
+
- lib/gom/filesystem-adapter.rb
|
76
75
|
- lib/gom/storage/filesystem/collection/fetcher.rb
|
77
76
|
- lib/gom/storage/filesystem/collection.rb
|
77
|
+
- lib/gom/storage/filesystem/adapter.rb
|
78
|
+
- lib/gom/storage/filesystem/loader.rb
|
78
79
|
- lib/gom/storage/filesystem.rb
|
79
|
-
-
|
80
|
-
-
|
80
|
+
- spec/storage.configuration
|
81
|
+
- spec/gom/storage/filesystem/loader_spec.rb
|
81
82
|
- spec/gom/storage/filesystem/collection/fetcher_spec.rb
|
82
83
|
- spec/gom/storage/filesystem/adapter_spec.rb
|
83
|
-
- spec/gom/storage/filesystem/loader_spec.rb
|
84
|
-
- spec/storage.configuration
|
85
|
-
- spec/spec_helper.rb
|
86
|
-
- spec/acceptance/data/Object.yml
|
87
84
|
- spec/acceptance/adapter_spec.rb
|
85
|
+
- spec/acceptance/data/objects.yml
|
86
|
+
- spec/spec_helper.rb
|
88
87
|
has_rdoc: true
|
89
88
|
homepage: http://github.com/phifty/gom-filesystem-adapter
|
90
89
|
licenses: []
|
@@ -118,7 +117,7 @@ signing_key:
|
|
118
117
|
specification_version: 3
|
119
118
|
summary: Filesystem storage adapter for the General Object Mapper.
|
120
119
|
test_files:
|
120
|
+
- spec/gom/storage/filesystem/loader_spec.rb
|
121
121
|
- spec/gom/storage/filesystem/collection/fetcher_spec.rb
|
122
122
|
- spec/gom/storage/filesystem/adapter_spec.rb
|
123
|
-
- spec/gom/storage/filesystem/loader_spec.rb
|
124
123
|
- spec/acceptance/adapter_spec.rb
|