dokument 1.0.0.alpha → 1.0.0.beta
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/lib/dokument/association.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
module Dokument
|
2
2
|
class Association
|
3
3
|
|
4
|
-
attr_accessor :name, :key, :bucket
|
4
|
+
attr_accessor :name, :owner, :key, :bucket
|
5
5
|
|
6
|
-
def initialize(name, options = {})
|
6
|
+
def initialize(name, owner, options = {})
|
7
7
|
self.name = name
|
8
|
-
self.
|
8
|
+
self.owner = owner
|
9
|
+
self.bucket = options[:bucket] || "#{owner.name}_#{name}"
|
9
10
|
self.key = options[:key] || :id
|
10
11
|
end
|
11
12
|
|
data/lib/dokument/attachment.rb
CHANGED
@@ -4,7 +4,7 @@ module Dokument
|
|
4
4
|
class Attachment
|
5
5
|
extend Forwardable
|
6
6
|
|
7
|
-
delegate %w[
|
7
|
+
delegate %w[raw_data raw_data= content_type content_type=] => :robject
|
8
8
|
|
9
9
|
attr_reader :model, :association
|
10
10
|
|
@@ -17,9 +17,17 @@ module Dokument
|
|
17
17
|
@robject ||= bucket.get_or_new(model.send(association.key).to_s)
|
18
18
|
end
|
19
19
|
|
20
|
-
def
|
20
|
+
def data
|
21
|
+
raw_data
|
22
|
+
end
|
23
|
+
|
24
|
+
def data=(value)
|
25
|
+
self.raw_data = value
|
26
|
+
end
|
27
|
+
|
28
|
+
def save(options={})
|
21
29
|
raise IncompleteError.new("Attachment is missing content_type or data (#{inspect})") unless complete?
|
22
|
-
robject.store
|
30
|
+
robject.store(options)
|
23
31
|
end
|
24
32
|
|
25
33
|
def incomplete?
|
@@ -35,7 +43,7 @@ module Dokument
|
|
35
43
|
def bucket
|
36
44
|
Dokument.client[association.bucket]
|
37
45
|
end
|
38
|
-
|
46
|
+
|
39
47
|
class IncompleteError < StandardError ; end
|
40
48
|
|
41
49
|
end
|
data/lib/dokument/model.rb
CHANGED
data/lib/dokument/version.rb
CHANGED
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Dokument::Association do
|
4
4
|
|
5
5
|
before :each do
|
6
|
-
@association = Dokument::Association.new(:file)
|
6
|
+
@association = Dokument::Association.new(:file, ExampleModel)
|
7
7
|
end
|
8
8
|
|
9
9
|
it "take a name upon initialization" do
|
@@ -23,14 +23,14 @@ describe Dokument::Association do
|
|
23
23
|
@association.key.should eq(:id)
|
24
24
|
end
|
25
25
|
|
26
|
-
it "defaults the bucket to the string version of the name" do
|
27
|
-
@association.bucket.should eq('
|
26
|
+
it "defaults the bucket to the string version of the name with the model class" do
|
27
|
+
@association.bucket.should eq('ExampleModel_file')
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
31
|
describe "initialization options" do
|
32
32
|
before :each do
|
33
|
-
@association = Dokument::Association.new(:file, :bucket => 'files_bucket', :key => 'some_id')
|
33
|
+
@association = Dokument::Association.new(:file, ExampleModel, :bucket => 'files_bucket', :key => 'some_id')
|
34
34
|
end
|
35
35
|
|
36
36
|
it "can set the bucket name" do
|
@@ -20,11 +20,26 @@ describe Dokument::Attachment do
|
|
20
20
|
@attachment.data.should eq(@data)
|
21
21
|
end
|
22
22
|
|
23
|
-
it "delegates
|
23
|
+
it "delegates data to raw_data" do
|
24
|
+
@attachment.should_receive(:raw_data)
|
25
|
+
@attachment.data
|
26
|
+
end
|
27
|
+
|
28
|
+
it "delegates data= to raw_data=" do
|
29
|
+
@attachment.should_receive(:raw_data=).with('awesome')
|
30
|
+
@attachment.data = 'awesome'
|
31
|
+
end
|
32
|
+
|
33
|
+
it "delegates saving to its robject" do
|
24
34
|
@attachment.robject.should_receive(:store)
|
25
35
|
@attachment.save
|
26
36
|
end
|
27
37
|
|
38
|
+
it "delegates options passed to save to the robject when storing" do
|
39
|
+
@attachment.robject.should_receive(:store).with(:awesome => true)
|
40
|
+
@attachment.save(:awesome => true)
|
41
|
+
end
|
42
|
+
|
28
43
|
describe "completeness" do
|
29
44
|
it "is true if the data and content_type are set" do
|
30
45
|
@attachment.should be_complete
|
@@ -47,11 +62,11 @@ describe Dokument::Attachment do
|
|
47
62
|
end
|
48
63
|
|
49
64
|
describe "robject" do
|
50
|
-
it "uses the
|
65
|
+
it "uses the attachment's data" do
|
51
66
|
@attachment.robject.data.should eq(@data)
|
52
67
|
end
|
53
68
|
|
54
|
-
it "uses the
|
69
|
+
it "uses the attachment's content_type" do
|
55
70
|
@attachment.robject.content_type.should eq(@content_type)
|
56
71
|
end
|
57
72
|
|
@@ -59,7 +74,7 @@ describe Dokument::Attachment do
|
|
59
74
|
@attachment.robject.key.should eq(@model.id.to_s)
|
60
75
|
end
|
61
76
|
|
62
|
-
it "uses the
|
77
|
+
it "uses the association's bucket for the bucket name" do
|
63
78
|
@attachment.robject.bucket.name.should eq(@association.bucket)
|
64
79
|
end
|
65
80
|
end
|
data/spec/dokument/model_spec.rb
CHANGED
@@ -10,6 +10,11 @@ describe Dokument::Model do
|
|
10
10
|
ExampleModel.dokument :file
|
11
11
|
ExampleModel.dokuments[:file].should be_a(Dokument::Association)
|
12
12
|
end
|
13
|
+
|
14
|
+
it "accepts options with the `dokument` class method" do
|
15
|
+
ExampleModel.dokument :file, :bucket => 'files'
|
16
|
+
ExampleModel.dokuments[:file].bucket.should eq('files')
|
17
|
+
end
|
13
18
|
end
|
14
19
|
|
15
20
|
describe "provided instance methods" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dokument
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.beta
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-06-
|
12
|
+
date: 2012-06-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: riak-client
|
16
|
-
requirement: &
|
16
|
+
requirement: &70128315028780 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.0.3
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70128315028780
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &70128315028280 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: 2.10.0
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70128315028280
|
36
36
|
description: Provides a ripple document to give models 1 or n file attachments.
|
37
37
|
email:
|
38
38
|
- adamhunter@me.com
|