versions 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,9 +1,14 @@
1
+ == 0.2.1 2010-02-16
2
+
3
+ * 1 major enhancement
4
+ * Attachment was not creating the 'file' method
5
+
1
6
  == 0.2.0 2010-02-15
2
7
 
3
8
  * 1 major enhancement
4
- * Changed inverse option from 'as' to 'inverse' in Multi
5
- * Implemented the Attachment module
6
- * Added AfterCommit module
9
+ * changed inverse option from 'as' to 'inverse' in Multi
10
+ * implemented the Attachment module
11
+ * added AfterCommit module
7
12
 
8
13
  == 0.1.0 2010-02-14
9
14
 
data/README.rdoc CHANGED
@@ -77,3 +77,14 @@ and deleted when no more versions are using them. Example:
77
77
  store_attachments_in :version, :attachment_class => 'Attachment'
78
78
  end
79
79
 
80
+ == Testing Gotcha
81
+
82
+ If you are testing your application with AfterCommit, you should note that the 'after_commit' code will
83
+ *NEVER BE EXECUTED* if you have enabled transactional fixtures. You can fix this by disabling transactional
84
+ fixtures in the tests where you need the after_commit code to execute (save file).
85
+
86
+ class DocumentTest < Test::Unit::TestCase
87
+ self.use_transactional_fixtures = false
88
+
89
+ # ...
90
+ end
@@ -67,9 +67,14 @@ module Versions
67
67
  self.attachment = nil
68
68
  end
69
69
  @attachment_need_save = true
70
+ @file = file
70
71
  self.build_attachment(:file => file)
71
72
  end
72
73
 
74
+ def file
75
+ @file ||= attachment ? attachment.file : nil
76
+ end
77
+
73
78
  def filepath
74
79
  attachment ? attachment.filepath : nil
75
80
  end
@@ -18,6 +18,10 @@ module Versions
18
18
  self[:filename] = get_filename(file)
19
19
  end
20
20
 
21
+ def file
22
+ File.new(filepath)
23
+ end
24
+
21
25
  def filepath
22
26
  @filepath ||= begin digest = ::Digest::SHA1.hexdigest(self[:id].to_s)
23
27
  "#{digest[0..0]}/#{digest[1..1]}/#{filename}"
@@ -42,7 +46,11 @@ module Versions
42
46
  if data.respond_to?(:rewind)
43
47
  data.rewind
44
48
  end
45
- File.open(path, "wb") { |f| f.syswrite(data.read) }
49
+ File.open(path, "wb") do |file|
50
+ while buffer = data.read(2_024_000)
51
+ file.syswrite(buffer)
52
+ end
53
+ end
46
54
  end
47
55
 
48
56
  def remove_file
@@ -1,3 +1,3 @@
1
1
  module Versions
2
- VERSION = '0.2.0'
2
+ VERSION = '0.2.1'
3
3
  end
data/test/fixtures.rb CHANGED
@@ -37,7 +37,6 @@ begin
37
37
  end
38
38
 
39
39
  create_table 'attachments' do |t|
40
- t.string 'owner_table'
41
40
  t.string 'filename'
42
41
  t.timestamps
43
42
  end
@@ -53,6 +53,11 @@ class AttachmentTest < Test::Unit::TestCase
53
53
  assert_equal @owner.filepath, attachment.filepath
54
54
  end
55
55
 
56
+ should 'restore the file with the database' do
57
+ attachment = Attachment.find(@owner.attachment_id)
58
+ assert_equal uploaded_jpg('bird.jpg').read, attachment.file.read
59
+ end
60
+
56
61
  should 'rename file on bad original_filename' do
57
62
  file = uploaded_jpg('bird.jpg')
58
63
  class << file
@@ -118,6 +123,15 @@ class AttachmentTest < Test::Unit::TestCase
118
123
  assert_equal uploaded_jpg('lake.jpg').read, File.read(@owner.filepath)
119
124
  assert !File.exist?(old_filepath)
120
125
  end
126
+
127
+ should 'get file when sent :file' do
128
+ assert_equal uploaded_jpg('bird.jpg').read, @owner.file.read
129
+ end
130
+
131
+ should 'get file before save when sent :file' do
132
+ @owner = Version.new(:file => uploaded_jpg('bird.jpg'))
133
+ assert_equal uploaded_jpg('bird.jpg').read, @owner.file.read
134
+ end
121
135
  end
122
136
 
123
137
  context 'Updating document' do
@@ -41,7 +41,7 @@ class AutoTest < Test::Unit::TestCase
41
41
  end
42
42
  end
43
43
  end
44
-
44
+
45
45
  context 'if not changed' do
46
46
  should 'not clone on update' do
47
47
  assert_difference('Version.count', 0) do
data/versions.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{versions}
8
- s.version = "0.2.0"
8
+ s.version = "0.2.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Gaspard Bucher"]
12
- s.date = %q{2010-02-15}
12
+ s.date = %q{2010-02-22}
13
13
  s.description = %q{A list of libraries to work with ActiveRecord model versioning: Auto (duplicate on save), Multi (hide many versions behind a single one), Transparent (hide versions from outside world), Property (define properties on model, store them in versions)}
14
14
  s.email = %q{gaspard@teti.ch}
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: versions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gaspard Bucher
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-02-15 00:00:00 +01:00
12
+ date: 2010-02-22 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency