dragonfly 0.9.10 → 0.9.11
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of dragonfly might be problematic. Click here for more details.
- data/.yardopts +2 -0
- data/Gemfile +3 -1
- data/History.md +19 -0
- data/README.md +1 -1
- data/VERSION +1 -1
- data/dragonfly.gemspec +12 -6
- data/extra_docs/Configuration.md +1 -1
- data/extra_docs/DataStorage.md +5 -0
- data/extra_docs/ImageMagick.md +1 -1
- data/extra_docs/Rails3.md +1 -1
- data/lib/dragonfly/active_model_extensions/attachment.rb +2 -2
- data/lib/dragonfly/app.rb +15 -6
- data/lib/dragonfly/data_storage.rb +1 -0
- data/lib/dragonfly/data_storage/s3data_store.rb +15 -7
- data/lib/dragonfly/function_manager.rb +1 -1
- data/lib/dragonfly/image_magick/analyser.rb +2 -0
- data/lib/dragonfly/job.rb +1 -1
- data/lib/dragonfly/job_endpoint.rb +4 -0
- data/lib/dragonfly/routed_endpoint.rb +4 -0
- data/lib/dragonfly/server.rb +1 -0
- data/lib/dragonfly/temp_object.rb +1 -1
- data/spec/dragonfly/active_model_extensions/model_spec.rb +38 -13
- data/spec/dragonfly/app_spec.rb +6 -0
- data/spec/dragonfly/data_storage/s3_data_store_spec.rb +10 -0
- data/spec/dragonfly/job_endpoint_spec.rb +6 -0
- data/spec/dragonfly/routed_endpoint_spec.rb +4 -0
- data/spec/spec_helper.rb +2 -1
- metadata +62 -40
data/.yardopts
CHANGED
data/Gemfile
CHANGED
@@ -10,10 +10,12 @@ group :development, :test, :cucumber do
|
|
10
10
|
gem 'database_cleaner'
|
11
11
|
gem 'jeweler', '~> 1.5.2'
|
12
12
|
gem 'fog'
|
13
|
+
gem 'github-markup'
|
13
14
|
gem 'mongo'
|
14
15
|
gem 'couchrest', '~> 1.0'
|
15
16
|
gem 'rack-cache'
|
16
17
|
gem 'rails', '~>3.1.0', :require => nil
|
18
|
+
gem 'redcarpet', '~>1.0'
|
17
19
|
gem 'rspec', '~> 2.5'
|
18
20
|
gem 'webmock'
|
19
21
|
gem 'yard'
|
@@ -23,7 +25,7 @@ group :development, :test, :cucumber do
|
|
23
25
|
gem "jruby-openssl"
|
24
26
|
else
|
25
27
|
gem 'bluecloth'
|
26
|
-
gem 'bson_ext'
|
28
|
+
gem 'bson_ext'
|
27
29
|
gem 'sqlite3-ruby'
|
28
30
|
end
|
29
31
|
end
|
data/History.md
CHANGED
@@ -1,3 +1,22 @@
|
|
1
|
+
0.9.11 (2012-03-12)
|
2
|
+
===================
|
3
|
+
Features
|
4
|
+
-------
|
5
|
+
- Allow the S3 base URL to be customised with `url_host` (or per-request)
|
6
|
+
- Added App#name (name as per `Dragonfly[:app_name]`)
|
7
|
+
|
8
|
+
Changes
|
9
|
+
-------
|
10
|
+
- Better inspect for App, Processor, Analyser, Encoder, Generator, Job, TempObject, RoutedEndpoint, JobEndpoint
|
11
|
+
|
12
|
+
Fixes
|
13
|
+
-----
|
14
|
+
- Rescue from Excon::Errors::Conflict which apparently gets raised sometimes (don't know why - see https://github.com/markevans/dragonfly/issues/167)
|
15
|
+
- Alias portrait and landscape without question marks, so magic_attributes can be used with them
|
16
|
+
- Fixed stack error when using `define_macro_on_include` twice
|
17
|
+
- Use fog's `sync_clock` to overcome potential S3 time skew problems
|
18
|
+
- Using :name in urls was causing problems when filenames had dashes in them
|
19
|
+
|
1
20
|
0.9.10 (2012-01-11)
|
2
21
|
===================
|
3
22
|
Fixes
|
data/README.md
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.9.
|
1
|
+
0.9.11
|
data/dragonfly.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "dragonfly"
|
8
|
-
s.version = "0.9.
|
8
|
+
s.version = "0.9.11"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Mark Evans"]
|
12
|
-
s.date = "2012-
|
12
|
+
s.date = "2012-03-12"
|
13
13
|
s.description = "Dragonfly is a framework that enables on-the-fly processing for any content type.\n It is especially suited to image handling. Its uses range from image thumbnails to standard attachments to on-demand text generation."
|
14
14
|
s.email = "mark@new-bamboo.co.uk"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -192,7 +192,7 @@ Gem::Specification.new do |s|
|
|
192
192
|
s.homepage = "http://github.com/markevans/dragonfly"
|
193
193
|
s.licenses = ["MIT"]
|
194
194
|
s.require_paths = ["lib"]
|
195
|
-
s.rubygems_version = "1.8.
|
195
|
+
s.rubygems_version = "1.8.11"
|
196
196
|
s.summary = "Ideal gem for handling attachments in Rails, Sinatra and Rack applications."
|
197
197
|
s.test_files = [
|
198
198
|
"spec/dragonfly/active_model_extensions/model_spec.rb",
|
@@ -253,15 +253,17 @@ Gem::Specification.new do |s|
|
|
253
253
|
s.add_development_dependency(%q<database_cleaner>, [">= 0"])
|
254
254
|
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
255
255
|
s.add_development_dependency(%q<fog>, [">= 0"])
|
256
|
+
s.add_development_dependency(%q<github-markup>, [">= 0"])
|
256
257
|
s.add_development_dependency(%q<mongo>, [">= 0"])
|
257
258
|
s.add_development_dependency(%q<couchrest>, ["~> 1.0"])
|
258
259
|
s.add_development_dependency(%q<rack-cache>, [">= 0"])
|
259
260
|
s.add_development_dependency(%q<rails>, ["~> 3.1.0"])
|
261
|
+
s.add_development_dependency(%q<redcarpet>, ["~> 1.0"])
|
260
262
|
s.add_development_dependency(%q<rspec>, ["~> 2.5"])
|
261
263
|
s.add_development_dependency(%q<webmock>, [">= 0"])
|
262
264
|
s.add_development_dependency(%q<yard>, [">= 0"])
|
263
265
|
s.add_development_dependency(%q<bluecloth>, [">= 0"])
|
264
|
-
s.add_development_dependency(%q<bson_ext>, ["
|
266
|
+
s.add_development_dependency(%q<bson_ext>, [">= 0"])
|
265
267
|
s.add_development_dependency(%q<sqlite3-ruby>, [">= 0"])
|
266
268
|
else
|
267
269
|
s.add_dependency(%q<rack>, [">= 0"])
|
@@ -271,15 +273,17 @@ Gem::Specification.new do |s|
|
|
271
273
|
s.add_dependency(%q<database_cleaner>, [">= 0"])
|
272
274
|
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
273
275
|
s.add_dependency(%q<fog>, [">= 0"])
|
276
|
+
s.add_dependency(%q<github-markup>, [">= 0"])
|
274
277
|
s.add_dependency(%q<mongo>, [">= 0"])
|
275
278
|
s.add_dependency(%q<couchrest>, ["~> 1.0"])
|
276
279
|
s.add_dependency(%q<rack-cache>, [">= 0"])
|
277
280
|
s.add_dependency(%q<rails>, ["~> 3.1.0"])
|
281
|
+
s.add_dependency(%q<redcarpet>, ["~> 1.0"])
|
278
282
|
s.add_dependency(%q<rspec>, ["~> 2.5"])
|
279
283
|
s.add_dependency(%q<webmock>, [">= 0"])
|
280
284
|
s.add_dependency(%q<yard>, [">= 0"])
|
281
285
|
s.add_dependency(%q<bluecloth>, [">= 0"])
|
282
|
-
s.add_dependency(%q<bson_ext>, ["
|
286
|
+
s.add_dependency(%q<bson_ext>, [">= 0"])
|
283
287
|
s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
|
284
288
|
end
|
285
289
|
else
|
@@ -290,15 +294,17 @@ Gem::Specification.new do |s|
|
|
290
294
|
s.add_dependency(%q<database_cleaner>, [">= 0"])
|
291
295
|
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
292
296
|
s.add_dependency(%q<fog>, [">= 0"])
|
297
|
+
s.add_dependency(%q<github-markup>, [">= 0"])
|
293
298
|
s.add_dependency(%q<mongo>, [">= 0"])
|
294
299
|
s.add_dependency(%q<couchrest>, ["~> 1.0"])
|
295
300
|
s.add_dependency(%q<rack-cache>, [">= 0"])
|
296
301
|
s.add_dependency(%q<rails>, ["~> 3.1.0"])
|
302
|
+
s.add_dependency(%q<redcarpet>, ["~> 1.0"])
|
297
303
|
s.add_dependency(%q<rspec>, ["~> 2.5"])
|
298
304
|
s.add_dependency(%q<webmock>, [">= 0"])
|
299
305
|
s.add_dependency(%q<yard>, [">= 0"])
|
300
306
|
s.add_dependency(%q<bluecloth>, [">= 0"])
|
301
|
-
s.add_dependency(%q<bson_ext>, ["
|
307
|
+
s.add_dependency(%q<bson_ext>, [">= 0"])
|
302
308
|
s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
|
303
309
|
end
|
304
310
|
end
|
data/extra_docs/Configuration.md
CHANGED
@@ -72,7 +72,7 @@ Here is an example of an app with all attributes configured:
|
|
72
72
|
|
73
73
|
# When using ImageMagick only...
|
74
74
|
c.convert_command = "/opt/local/bin/convert" # defaults to "convert"
|
75
|
-
c.identify_command = "/opt/local/bin/
|
75
|
+
c.identify_command = "/opt/local/bin/identify" # defaults to "identify"
|
76
76
|
c.log_commands = true # defaults to false
|
77
77
|
end
|
78
78
|
|
data/extra_docs/DataStorage.md
CHANGED
@@ -90,6 +90,7 @@ To configure with the {Dragonfly::DataStorage::S3DataStore S3DataStore}:
|
|
90
90
|
c.region = 'eu-west-1' # defaults to 'us-east-1'
|
91
91
|
c.storage_headers = {'some' => 'thing'} # defaults to {'x-amz-acl' => 'public-read'}
|
92
92
|
c.url_scheme = 'https' # defaults to 'http'
|
93
|
+
c.url_host = 'some.custom.host' # defaults to "<bucket_name>.s3.amazonaws.com"
|
93
94
|
end
|
94
95
|
|
95
96
|
You can also pass these options to `S3DataStore.new` as an options hash.
|
@@ -106,6 +107,10 @@ or with an https url:
|
|
106
107
|
|
107
108
|
my_model.attachment.remote_url(:scheme => 'https') # also configurable for all urls with 'url_scheme'
|
108
109
|
|
110
|
+
or with a custom host:
|
111
|
+
|
112
|
+
my_model.attachment.remote_url(:host => 'custom.domain') # also configurable for all urls with 'url_host'
|
113
|
+
|
109
114
|
Extra options you can use on store are `:path` and `:headers`
|
110
115
|
|
111
116
|
app.store("SOME CONTENT", :path => 'some/path.txt', :headers => {'x-amz-acl' => 'public-read-write'})
|
data/extra_docs/ImageMagick.md
CHANGED
@@ -131,6 +131,6 @@ There are some options that can be set, e.g. if the imagemagick convert command
|
|
131
131
|
|
132
132
|
app.configure do |c|
|
133
133
|
c.convert_command = "/opt/local/bin/convert" # defaults to "convert"
|
134
|
-
c.identify_command = "/opt/local/bin/
|
134
|
+
c.identify_command = "/opt/local/bin/identify" # defaults to "identify"
|
135
135
|
c.log_commands = true # defaults to false
|
136
136
|
end
|
data/extra_docs/Rails3.md
CHANGED
@@ -158,7 +158,7 @@ module Dragonfly
|
|
158
158
|
end
|
159
159
|
|
160
160
|
def inspect
|
161
|
-
"<Dragonfly Attachment uid=#{uid.inspect}, app=#{app.inspect}>"
|
161
|
+
"<Dragonfly Attachment uid=#{uid.inspect}, app=#{app.name.inspect}>"
|
162
162
|
end
|
163
163
|
|
164
164
|
protected
|
@@ -182,7 +182,7 @@ module Dragonfly
|
|
182
182
|
|
183
183
|
def destroy_content(uid)
|
184
184
|
app.datastore.destroy(uid)
|
185
|
-
rescue DataStorage::DataNotFound => e
|
185
|
+
rescue DataStorage::DataNotFound, DataStorage::DestroyError => e
|
186
186
|
app.log.warn("*** WARNING ***: tried to destroy data with uid #{uid}, but got error: #{e}")
|
187
187
|
end
|
188
188
|
|
data/lib/dragonfly/app.rb
CHANGED
@@ -10,7 +10,8 @@ module Dragonfly
|
|
10
10
|
private :new # Hide 'new' - need to use 'instance'
|
11
11
|
|
12
12
|
def instance(name)
|
13
|
-
|
13
|
+
name = name.to_sym
|
14
|
+
apps[name] ||= new(name)
|
14
15
|
end
|
15
16
|
|
16
17
|
alias [] instance
|
@@ -23,7 +24,8 @@ module Dragonfly
|
|
23
24
|
|
24
25
|
end
|
25
26
|
|
26
|
-
def initialize
|
27
|
+
def initialize(name)
|
28
|
+
@name = name
|
27
29
|
@analyser, @processor, @encoder, @generator = Analyser.new, Processor.new, Encoder.new, Generator.new
|
28
30
|
[@analyser, @processor, @encoder, @generator].each do |obj|
|
29
31
|
obj.use_same_log_as(self)
|
@@ -33,6 +35,8 @@ module Dragonfly
|
|
33
35
|
@job_definitions = JobDefinitions.new
|
34
36
|
end
|
35
37
|
|
38
|
+
attr_reader :name
|
39
|
+
|
36
40
|
include Configurable
|
37
41
|
|
38
42
|
extend Forwardable
|
@@ -135,13 +139,14 @@ module Dragonfly
|
|
135
139
|
|
136
140
|
def define_macro_on_include(mod, macro_name)
|
137
141
|
app = self
|
142
|
+
name = self.name
|
138
143
|
(class << mod; self; end).class_eval do
|
139
|
-
|
140
|
-
define_method
|
141
|
-
|
144
|
+
alias_method "included_without_dragonfly_#{name}", :included
|
145
|
+
define_method "included_with_dragonfly_#{name}" do |mod|
|
146
|
+
send "included_without_dragonfly_#{name}", mod
|
142
147
|
app.define_macro(mod, macro_name)
|
143
148
|
end
|
144
|
-
|
149
|
+
alias_method :included, "included_with_dragonfly_#{name}"
|
145
150
|
end
|
146
151
|
end
|
147
152
|
|
@@ -162,6 +167,10 @@ module Dragonfly
|
|
162
167
|
job_definitions.definition_names
|
163
168
|
end
|
164
169
|
|
170
|
+
def inspect
|
171
|
+
"<#{self.class.name} name=#{name.inspect} >"
|
172
|
+
end
|
173
|
+
|
165
174
|
# Deprecated methods
|
166
175
|
def url_path_prefix=(thing)
|
167
176
|
raise NoMethodError, "url_path_prefix is deprecated - please use url_format, e.g. url_format = '/media/:job/:basename.:format' - see docs for more details"
|
@@ -15,6 +15,7 @@ module Dragonfly
|
|
15
15
|
configurable_attr :use_filesystem, true
|
16
16
|
configurable_attr :storage_headers, {'x-amz-acl' => 'public-read'}
|
17
17
|
configurable_attr :url_scheme, 'http'
|
18
|
+
configurable_attr :url_host
|
18
19
|
|
19
20
|
REGIONS = {
|
20
21
|
'us-east-1' => 's3.amazonaws.com', #default
|
@@ -71,6 +72,8 @@ module Dragonfly
|
|
71
72
|
rescuing_socket_errors{ storage.delete_object(bucket_name, uid) }
|
72
73
|
rescue Excon::Errors::NotFound => e
|
73
74
|
raise DataNotFound, "#{e} - #{uid}"
|
75
|
+
rescue Excon::Errors::Conflict => e
|
76
|
+
raise DestroyError, "#{e} - #{uid}"
|
74
77
|
end
|
75
78
|
|
76
79
|
def url_for(uid, opts={})
|
@@ -82,7 +85,8 @@ module Dragonfly
|
|
82
85
|
end
|
83
86
|
else
|
84
87
|
scheme = opts[:scheme] || url_scheme
|
85
|
-
"#{
|
88
|
+
host = opts[:host] || url_host || "#{bucket_name}.s3.amazonaws.com"
|
89
|
+
"#{scheme}://#{host}/#{uid}"
|
86
90
|
end
|
87
91
|
end
|
88
92
|
|
@@ -91,12 +95,16 @@ module Dragonfly
|
|
91
95
|
end
|
92
96
|
|
93
97
|
def storage
|
94
|
-
@storage ||=
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
98
|
+
@storage ||= begin
|
99
|
+
storage = Fog::Storage.new(
|
100
|
+
:provider => 'AWS',
|
101
|
+
:aws_access_key_id => access_key_id,
|
102
|
+
:aws_secret_access_key => secret_access_key,
|
103
|
+
:region => region
|
104
|
+
)
|
105
|
+
storage.sync_clock
|
106
|
+
storage
|
107
|
+
end
|
100
108
|
end
|
101
109
|
|
102
110
|
def bucket_exists?
|
@@ -22,11 +22,13 @@ module Dragonfly
|
|
22
22
|
attrs = identify(temp_object)
|
23
23
|
attrs[:width] <= attrs[:height]
|
24
24
|
end
|
25
|
+
alias portrait portrait?
|
25
26
|
|
26
27
|
def landscape?(temp_object)
|
27
28
|
attrs = identify(temp_object)
|
28
29
|
attrs[:width] >= attrs[:height]
|
29
30
|
end
|
31
|
+
alias landscape landscape?
|
30
32
|
|
31
33
|
def depth(temp_object)
|
32
34
|
identify(temp_object)[:depth]
|
data/lib/dragonfly/job.rb
CHANGED
@@ -378,7 +378,7 @@ module Dragonfly
|
|
378
378
|
end
|
379
379
|
|
380
380
|
def inspect
|
381
|
-
|
381
|
+
"<Dragonfly::Job app=#{app.name.inspect}, steps=#{steps.inspect}, temp_object=#{temp_object.inspect}, steps applied:#{applied_steps.length}/#{steps.length} >"
|
382
382
|
end
|
383
383
|
|
384
384
|
def update(content, new_meta)
|
data/lib/dragonfly/server.rb
CHANGED
@@ -165,7 +165,7 @@ module Dragonfly
|
|
165
165
|
when @pathname then "pathname=#{@pathname.inspect}"
|
166
166
|
when @tempfile then "tempfile=#{@tempfile.inspect}"
|
167
167
|
end
|
168
|
-
|
168
|
+
"<#{self.class.name} #{content_string} >"
|
169
169
|
end
|
170
170
|
|
171
171
|
def unique_id
|
@@ -49,18 +49,37 @@ describe Item do
|
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
52
|
+
describe "included modules (e.g. Mongoid::Document)" do
|
53
|
+
|
54
|
+
it "should work" do
|
55
|
+
mongoid_document = Module.new
|
56
|
+
app1.define_macro_on_include(mongoid_document, :dog_accessor)
|
57
|
+
model_class = Class.new do
|
58
|
+
def self.before_save(*args); end
|
59
|
+
def self.before_destroy(*args); end
|
60
|
+
include mongoid_document
|
61
|
+
dog_accessor :doogie
|
62
|
+
end
|
63
|
+
klass = model_class.dragonfly_attachment_classes.first
|
64
|
+
klass.app.should == app1
|
65
|
+
klass.attribute.should == :doogie
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should work with two apps" do
|
69
|
+
mongoid_document = Module.new
|
70
|
+
app1.define_macro_on_include(mongoid_document, :image_accessor)
|
71
|
+
app2.define_macro_on_include(mongoid_document, :video_accessor)
|
72
|
+
model_class = Class.new do
|
73
|
+
def self.before_save(*args); end
|
74
|
+
def self.before_destroy(*args); end
|
75
|
+
include mongoid_document
|
76
|
+
image_accessor :doogie
|
77
|
+
video_accessor :boogie
|
78
|
+
end
|
79
|
+
model_class.dragonfly_attachment_classes[0].app.should == app1
|
80
|
+
model_class.dragonfly_attachment_classes[1].app.should == app2
|
60
81
|
end
|
61
|
-
|
62
|
-
klass.app.should == app1
|
63
|
-
klass.attribute.should == :doogie
|
82
|
+
|
64
83
|
end
|
65
84
|
|
66
85
|
end
|
@@ -288,12 +307,18 @@ describe Item do
|
|
288
307
|
|
289
308
|
end
|
290
309
|
|
291
|
-
describe "
|
310
|
+
describe "destroy errors" do
|
292
311
|
it "should log a warning if the data wasn't found on destroy" do
|
293
312
|
@app.datastore.should_receive(:destroy).with('some_uid').and_raise(Dragonfly::DataStorage::DataNotFound)
|
294
313
|
@app.log.should_receive(:warn)
|
295
314
|
@item.destroy
|
296
315
|
end
|
316
|
+
|
317
|
+
it "should log a warning if the data wasn't found on destroy" do
|
318
|
+
@app.datastore.should_receive(:destroy).with('some_uid').and_raise(Dragonfly::DataStorage::DestroyError)
|
319
|
+
@app.log.should_receive(:warn)
|
320
|
+
@item.destroy
|
321
|
+
end
|
297
322
|
end
|
298
323
|
|
299
324
|
end
|
@@ -1446,7 +1471,7 @@ describe Item do
|
|
1446
1471
|
@item.save!
|
1447
1472
|
end
|
1448
1473
|
it "should be awesome" do
|
1449
|
-
@item.preview_image.inspect.should =~ %r{^<Dragonfly Attachment uid="[^"]+"
|
1474
|
+
@item.preview_image.inspect.should =~ %r{^<Dragonfly Attachment uid="[^"]+", app=:test[_\w]*>$}
|
1450
1475
|
end
|
1451
1476
|
end
|
1452
1477
|
|
data/spec/dragonfly/app_spec.rb
CHANGED
@@ -261,6 +261,16 @@ describe Dragonfly::DataStorage::S3DataStore do
|
|
261
261
|
@data_store.url_scheme = 'https'
|
262
262
|
@data_store.url_for(@uid).should == "https://#{BUCKET_NAME}.s3.amazonaws.com/some/path/on/s3"
|
263
263
|
end
|
264
|
+
|
265
|
+
it "should allow for customizing the host" do
|
266
|
+
@data_store.url_for(@uid, :host => 'customised.domain.com/and/path').should == "http://customised.domain.com/and/path/some/path/on/s3"
|
267
|
+
end
|
268
|
+
|
269
|
+
it "should allow the url_host to be customised permanently" do
|
270
|
+
url_host = 'customised.domain.com/and/path'
|
271
|
+
@data_store.url_host = url_host
|
272
|
+
@data_store.url_for(@uid).should == "http://#{url_host}/some/path/on/s3"
|
273
|
+
end
|
264
274
|
|
265
275
|
end
|
266
276
|
|
@@ -44,5 +44,9 @@ describe Dragonfly::RoutedEndpoint do
|
|
44
44
|
response = response_for @endpoint.call(env)
|
45
45
|
response.body.should == 'wassup'
|
46
46
|
end
|
47
|
+
|
48
|
+
it "should have nice inspect output" do
|
49
|
+
@endpoint.inspect.should =~ /<Dragonfly::RoutedEndpoint for app :test_[_\w]* >/
|
50
|
+
end
|
47
51
|
|
48
52
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -37,7 +37,8 @@ def mock_app(extra_stubs={})
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def test_app
|
40
|
-
|
40
|
+
time = Time.now
|
41
|
+
app = Dragonfly::App.send(:new, "test_#{time.sec}_#{time.usec}".to_sym)
|
41
42
|
app.log = Logger.new(LOG_FILE)
|
42
43
|
app.datastore.root_path = 'tmp/file_data_store_test'
|
43
44
|
app
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dragonfly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.11
|
5
5
|
prerelease:
|
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-
|
12
|
+
date: 2012-03-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rack
|
16
|
-
requirement: &
|
16
|
+
requirement: &70236021927120 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70236021927120
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: capybara
|
27
|
-
requirement: &
|
27
|
+
requirement: &70236021942780 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70236021942780
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: cucumber
|
38
|
-
requirement: &
|
38
|
+
requirement: &70236021941780 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 0.10.0
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70236021941780
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: cucumber-rails
|
49
|
-
requirement: &
|
49
|
+
requirement: &70236021940000 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 0.5.2
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70236021940000
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: database_cleaner
|
60
|
-
requirement: &
|
60
|
+
requirement: &70236021938420 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70236021938420
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: jeweler
|
71
|
-
requirement: &
|
71
|
+
requirement: &70236021937080 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 1.5.2
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70236021937080
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: fog
|
82
|
-
requirement: &
|
82
|
+
requirement: &70236021936400 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,21 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70236021936400
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: github-markup
|
93
|
+
requirement: &70236021935700 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
type: :development
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *70236021935700
|
91
102
|
- !ruby/object:Gem::Dependency
|
92
103
|
name: mongo
|
93
|
-
requirement: &
|
104
|
+
requirement: &70236021976980 !ruby/object:Gem::Requirement
|
94
105
|
none: false
|
95
106
|
requirements:
|
96
107
|
- - ! '>='
|
@@ -98,10 +109,10 @@ dependencies:
|
|
98
109
|
version: '0'
|
99
110
|
type: :development
|
100
111
|
prerelease: false
|
101
|
-
version_requirements: *
|
112
|
+
version_requirements: *70236021976980
|
102
113
|
- !ruby/object:Gem::Dependency
|
103
114
|
name: couchrest
|
104
|
-
requirement: &
|
115
|
+
requirement: &70236021976260 !ruby/object:Gem::Requirement
|
105
116
|
none: false
|
106
117
|
requirements:
|
107
118
|
- - ~>
|
@@ -109,10 +120,10 @@ dependencies:
|
|
109
120
|
version: '1.0'
|
110
121
|
type: :development
|
111
122
|
prerelease: false
|
112
|
-
version_requirements: *
|
123
|
+
version_requirements: *70236021976260
|
113
124
|
- !ruby/object:Gem::Dependency
|
114
125
|
name: rack-cache
|
115
|
-
requirement: &
|
126
|
+
requirement: &70236021975280 !ruby/object:Gem::Requirement
|
116
127
|
none: false
|
117
128
|
requirements:
|
118
129
|
- - ! '>='
|
@@ -120,10 +131,10 @@ dependencies:
|
|
120
131
|
version: '0'
|
121
132
|
type: :development
|
122
133
|
prerelease: false
|
123
|
-
version_requirements: *
|
134
|
+
version_requirements: *70236021975280
|
124
135
|
- !ruby/object:Gem::Dependency
|
125
136
|
name: rails
|
126
|
-
requirement: &
|
137
|
+
requirement: &70236021974280 !ruby/object:Gem::Requirement
|
127
138
|
none: false
|
128
139
|
requirements:
|
129
140
|
- - ~>
|
@@ -131,10 +142,21 @@ dependencies:
|
|
131
142
|
version: 3.1.0
|
132
143
|
type: :development
|
133
144
|
prerelease: false
|
134
|
-
version_requirements: *
|
145
|
+
version_requirements: *70236021974280
|
146
|
+
- !ruby/object:Gem::Dependency
|
147
|
+
name: redcarpet
|
148
|
+
requirement: &70236021973200 !ruby/object:Gem::Requirement
|
149
|
+
none: false
|
150
|
+
requirements:
|
151
|
+
- - ~>
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '1.0'
|
154
|
+
type: :development
|
155
|
+
prerelease: false
|
156
|
+
version_requirements: *70236021973200
|
135
157
|
- !ruby/object:Gem::Dependency
|
136
158
|
name: rspec
|
137
|
-
requirement: &
|
159
|
+
requirement: &70236021971360 !ruby/object:Gem::Requirement
|
138
160
|
none: false
|
139
161
|
requirements:
|
140
162
|
- - ~>
|
@@ -142,10 +164,10 @@ dependencies:
|
|
142
164
|
version: '2.5'
|
143
165
|
type: :development
|
144
166
|
prerelease: false
|
145
|
-
version_requirements: *
|
167
|
+
version_requirements: *70236021971360
|
146
168
|
- !ruby/object:Gem::Dependency
|
147
169
|
name: webmock
|
148
|
-
requirement: &
|
170
|
+
requirement: &70236021970020 !ruby/object:Gem::Requirement
|
149
171
|
none: false
|
150
172
|
requirements:
|
151
173
|
- - ! '>='
|
@@ -153,10 +175,10 @@ dependencies:
|
|
153
175
|
version: '0'
|
154
176
|
type: :development
|
155
177
|
prerelease: false
|
156
|
-
version_requirements: *
|
178
|
+
version_requirements: *70236021970020
|
157
179
|
- !ruby/object:Gem::Dependency
|
158
180
|
name: yard
|
159
|
-
requirement: &
|
181
|
+
requirement: &70236021985140 !ruby/object:Gem::Requirement
|
160
182
|
none: false
|
161
183
|
requirements:
|
162
184
|
- - ! '>='
|
@@ -164,10 +186,10 @@ dependencies:
|
|
164
186
|
version: '0'
|
165
187
|
type: :development
|
166
188
|
prerelease: false
|
167
|
-
version_requirements: *
|
189
|
+
version_requirements: *70236021985140
|
168
190
|
- !ruby/object:Gem::Dependency
|
169
191
|
name: bluecloth
|
170
|
-
requirement: &
|
192
|
+
requirement: &70236021984320 !ruby/object:Gem::Requirement
|
171
193
|
none: false
|
172
194
|
requirements:
|
173
195
|
- - ! '>='
|
@@ -175,21 +197,21 @@ dependencies:
|
|
175
197
|
version: '0'
|
176
198
|
type: :development
|
177
199
|
prerelease: false
|
178
|
-
version_requirements: *
|
200
|
+
version_requirements: *70236021984320
|
179
201
|
- !ruby/object:Gem::Dependency
|
180
202
|
name: bson_ext
|
181
|
-
requirement: &
|
203
|
+
requirement: &70236021983000 !ruby/object:Gem::Requirement
|
182
204
|
none: false
|
183
205
|
requirements:
|
184
|
-
- -
|
206
|
+
- - ! '>='
|
185
207
|
- !ruby/object:Gem::Version
|
186
|
-
version:
|
208
|
+
version: '0'
|
187
209
|
type: :development
|
188
210
|
prerelease: false
|
189
|
-
version_requirements: *
|
211
|
+
version_requirements: *70236021983000
|
190
212
|
- !ruby/object:Gem::Dependency
|
191
213
|
name: sqlite3-ruby
|
192
|
-
requirement: &
|
214
|
+
requirement: &70236021981600 !ruby/object:Gem::Requirement
|
193
215
|
none: false
|
194
216
|
requirements:
|
195
217
|
- - ! '>='
|
@@ -197,7 +219,7 @@ dependencies:
|
|
197
219
|
version: '0'
|
198
220
|
type: :development
|
199
221
|
prerelease: false
|
200
|
-
version_requirements: *
|
222
|
+
version_requirements: *70236021981600
|
201
223
|
description: ! "Dragonfly is a framework that enables on-the-fly processing for any
|
202
224
|
content type.\n It is especially suited to image handling. Its uses range from
|
203
225
|
image thumbnails to standard attachments to on-demand text generation."
|
@@ -394,7 +416,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
394
416
|
version: '0'
|
395
417
|
segments:
|
396
418
|
- 0
|
397
|
-
hash:
|
419
|
+
hash: -783174098517993028
|
398
420
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
399
421
|
none: false
|
400
422
|
requirements:
|
@@ -403,7 +425,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
403
425
|
version: '0'
|
404
426
|
requirements: []
|
405
427
|
rubyforge_project:
|
406
|
-
rubygems_version: 1.8.
|
428
|
+
rubygems_version: 1.8.11
|
407
429
|
signing_key:
|
408
430
|
specification_version: 3
|
409
431
|
summary: Ideal gem for handling attachments in Rails, Sinatra and Rack applications.
|