fileclip 0.2.3 → 0.2.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3fa875e233d7b35eef0e879d87bfa59834b8c00d
4
- data.tar.gz: ff60c7952f7a7e3647099d7afaf89cd7d9f32a3f
3
+ metadata.gz: 9d40924bf65cf039c91bcceead4b1cf7c74eb45b
4
+ data.tar.gz: f611297bd1576eba94220544c3b3657a92b0b1d2
5
5
  SHA512:
6
- metadata.gz: e48638eb79dfcdfc0aec9cabb8ceb69994ce354426408f72d77389d3c813bf6318f76072d1f33f99b1eedfdbba522690d025884349e1e6bf68bd3c434b19e211
7
- data.tar.gz: e2e0a1a28fd38252f03a15a5309900b19e337db40bbdbc7a2e906a59326607f9c0649df4cf1ca119f187c6200ffdf8dbfd2dc6e4f018136a455ec1ac4d3c2a17
6
+ metadata.gz: dc984b5f899557d9fcf6ba87d799cfe094dd8fa2a04e8c12ec92338a63cb87f4445e71ebb2009d08c3190bacc17a45d7b0f1cb994be6f564158ffb29311020f9
7
+ data.tar.gz: 88cde2cfabb89d4738540c0a2bb4d1e0b09f10495a2e43ccdeee86071fa2bdac9a95b8addf43b8053d05771ec99a59a51febcc121554822e23fcf7c4459818e4
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fileclip (0.2.2)
4
+ fileclip (0.2.3)
5
5
  paperclip
6
6
  paperclip (>= 3.5.1)
7
7
  railties (>= 3.0)
@@ -41,7 +41,7 @@ GEM
41
41
  builder (3.0.4)
42
42
  climate_control (0.0.3)
43
43
  activesupport (>= 3.0)
44
- cocaine (0.5.1)
44
+ cocaine (0.5.2)
45
45
  climate_control (>= 0.0.3, < 1.0)
46
46
  diff-lcs (1.2.4)
47
47
  erubis (2.7.0)
data/lib/fileclip.rb CHANGED
@@ -6,6 +6,8 @@ require 'fileclip/railtie'
6
6
  require 'fileclip/jobs/resque'
7
7
  require 'rest-client'
8
8
 
9
+ # TODO: make fileclip methods only load on fileclipped models
10
+
9
11
  module FileClip
10
12
  mattr_accessor :change_keys
11
13
 
@@ -79,7 +81,7 @@ module FileClip
79
81
 
80
82
  def delay_process!
81
83
  update_column(:"#{attachment_name}_processing", true) if FileClip.delayed?
82
- Resque.enqueue(FileClip::Jobs::Resque, self.class.name, self.id)
84
+ ::Resque.enqueue(FileClip::Jobs::Resque, self.class.name, self.id)
83
85
  end
84
86
 
85
87
  def process_from_filepicker
@@ -96,7 +98,11 @@ module FileClip
96
98
  metadata = JSON.parse(::RestClient.get filepicker_url + "/metadata")
97
99
 
98
100
  self.send(:"#{attachment_name}_content_type=", metadata["mimetype"])
99
- self.send(:"#{attachment_name}_file_name=", metadata["filename"])
101
+
102
+ # Delegate to paperclips filename cleaner
103
+ filename = self.attachment_object.send(:cleanup_filename, metadata["filename"])
104
+ self.send(:"#{attachment_name}_file_name=", filename)
105
+
100
106
  self.send(:"#{attachment_name}_file_size=", metadata["size"])
101
107
  end
102
108
 
@@ -107,6 +113,7 @@ module FileClip
107
113
  end
108
114
 
109
115
  def filepicker_url_not_present?
116
+ return true unless self.class.column_names.include? "filepicker_url"
110
117
  !filepicker_url.present?
111
118
  end
112
119
 
@@ -1,3 +1,3 @@
1
1
  module FileClip
2
- VERSION = "0.2.3"
2
+ VERSION = "0.2.4"
3
3
  end
@@ -32,6 +32,7 @@ describe FileClip::Validators do
32
32
  describe "with filepicker url" do
33
33
  before :each do
34
34
  image.filepicker_url = "image.com"
35
+ image.filepicker_url_not_present?.should be_false
35
36
  end
36
37
 
37
38
  it "observes attachment presence" do
@@ -53,5 +54,34 @@ describe FileClip::Validators do
53
54
  image.errors.should be_empty
54
55
  end
55
56
  end
57
+
58
+ describe "for non fileclipped asset" do
59
+ let(:asset) { Asset.new }
60
+
61
+ before :each do
62
+ Asset.reset_callbacks(:validate)
63
+ Asset._validators.clear
64
+ end
65
+
66
+ describe "if no filepicker_url" do
67
+ it "observes attachment presence" do
68
+ Asset.validates :attachment, :attachment_presence => true
69
+ asset.save.should be_false
70
+ asset.errors.first.last.should == "can't be blank"
71
+ end
72
+
73
+ it "observes attachment size" do
74
+ Asset.validates_attachment :attachment, :size => { :in => 0..1000 }, :presence => true
75
+ asset.save.should be_false
76
+ asset.errors.should_not be_empty
77
+ end
78
+
79
+ it "observes attachment content" do
80
+ Asset.validates_attachment :attachment, :content_type => { :content_type => "image/jpg" }, :presence => true
81
+ asset.save.should be_false
82
+ asset.errors.should_not be_empty
83
+ end
84
+ end
85
+ end
56
86
  end
57
87
  end
@@ -108,6 +108,26 @@ describe FileClip do
108
108
  image.update_from_filepicker!
109
109
  end
110
110
  end
111
+
112
+ context "with delayed paperclip" do
113
+ let(:delayed_image) { DelayedImage.create }
114
+
115
+ before :each do
116
+ FileClip.stub(:delayed?).and_return true
117
+ FileClip.stub(:resque_enabled?).and_return true
118
+ stub_const "Resque", Class.new
119
+
120
+ delayed_image.filepicker_url = filepicker_url
121
+ delayed_image.stub_chain(:previous_changes, :keys).and_return ["filepicker_url"]
122
+ end
123
+
124
+ it "should update processing column" do
125
+ delayed_image.attachment_processing.should be_false
126
+ Resque.should_receive(:enqueue).with(FileClip::Jobs::Resque, "DelayedImage", delayed_image.id)
127
+ delayed_image.update_from_filepicker!
128
+ delayed_image.attachment_processing.should be_true
129
+ end
130
+ end
111
131
  end
112
132
 
113
133
  context "#update_from_filepicker?" do
data/spec/schema.rb CHANGED
@@ -8,3 +8,23 @@ ActiveRecord::Schema.define :version => 0 do
8
8
  t.string :filepicker_url
9
9
  end
10
10
  end
11
+
12
+ ActiveRecord::Schema.define :version => 0 do
13
+ create_table "delayed_images", :force => true do |t|
14
+ t.string :attachment_file_name
15
+ t.string :attachment_content_type
16
+ t.integer :attachment_updated_at
17
+ t.integer :attachment_file_size
18
+ t.boolean :attachment_processing, default: false
19
+ t.string :filepicker_url
20
+ end
21
+ end
22
+
23
+ ActiveRecord::Schema.define :version => 0 do
24
+ create_table "assets", :force => true do |t|
25
+ t.string :attachment_file_name
26
+ t.string :attachment_content_type
27
+ t.integer :attachment_updated_at
28
+ t.integer :attachment_file_size
29
+ end
30
+ end
data/spec/spec_helper.rb CHANGED
@@ -32,3 +32,28 @@ class Image < ActiveRecord::Base
32
32
  fileclip :attachment
33
33
 
34
34
  end
35
+
36
+ class DelayedImage < ActiveRecord::Base
37
+
38
+ has_attached_file :attachment,
39
+ :storage => :filesystem,
40
+ :path => "./spec/tmp/:style/:id.:extension",
41
+ :url => "./spec/tmp/:style/:id.extension"
42
+
43
+ # Not testing DelayedPaperclip directly yet
44
+ # process_in_background :attachment,
45
+ # if: :filepicker_url_not_present?
46
+
47
+ fileclip :attachment
48
+
49
+ end
50
+
51
+
52
+ class Asset < ActiveRecord::Base
53
+
54
+ has_attached_file :attachment,
55
+ :storage => :filesystem,
56
+ :path => "./spec/tmp/:style/:id.:extension",
57
+ :url => "./spec/tmp/:style/:id.extension"
58
+
59
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fileclip
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Carleton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-07 00:00:00.000000000 Z
11
+ date: 2013-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: paperclip