callisto 0.9 → 0.9.1
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/callisto/configuration.rb +20 -7
- data/lib/callisto/pool.rb +2 -2
- data/lib/callisto/shell.rb +6 -6
- data/lib/callisto/thumbnail.rb +1 -1
- data/lib/callisto/version.rb +1 -1
- data/spec/configuration_spec.rb +16 -0
- data/spec/minitest_helper.rb +5 -0
- data/spec/thumbnail_spec.rb +1 -6
- metadata +4 -4
@@ -1,3 +1,5 @@
|
|
1
|
+
require "delegate"
|
2
|
+
|
1
3
|
module Callisto
|
2
4
|
|
3
5
|
class Configuration
|
@@ -10,32 +12,43 @@ module Callisto
|
|
10
12
|
:max_workers => 4
|
11
13
|
}
|
12
14
|
|
15
|
+
THUMBNAIL = {
|
16
|
+
:quality => 90
|
17
|
+
}
|
18
|
+
|
19
|
+
SHELL = {}
|
20
|
+
|
13
21
|
end
|
14
22
|
|
15
23
|
attr_accessor :thumbnail_defaults
|
16
24
|
|
17
25
|
def initialize
|
18
|
-
|
19
|
-
load_defaults
|
26
|
+
reset
|
20
27
|
end
|
21
28
|
|
22
|
-
def
|
23
|
-
|
29
|
+
def reset
|
30
|
+
self.thumbnail_defaults = Defaults::THUMBNAIL.clone
|
31
|
+
Pool.settings = Defaults::POOL.clone
|
32
|
+
Shell.bin_path = Defaults::SHELL.clone[:bin_path]
|
24
33
|
end
|
25
34
|
|
26
35
|
def max_workers=(val)
|
27
36
|
Pool.settings.max_workers = val
|
28
37
|
end
|
29
38
|
|
39
|
+
def bin_path=(val)
|
40
|
+
Shell.bin_path = val
|
41
|
+
end
|
42
|
+
|
30
43
|
def method_missing(method, *args, &block)
|
31
44
|
if /^thumbnail_(?<name>[a-z\_]+)(?<setter>=)?/ =~ method
|
32
45
|
if setter
|
33
|
-
self.thumbnail_defaults[name] = args.first
|
46
|
+
self.thumbnail_defaults[name.to_sym] = args.first
|
34
47
|
else
|
35
|
-
thumbnail_defaults[name]
|
48
|
+
thumbnail_defaults[name.to_sym]
|
36
49
|
end
|
37
50
|
else
|
38
|
-
super
|
51
|
+
super(method, *args, &block)
|
39
52
|
end
|
40
53
|
end
|
41
54
|
|
data/lib/callisto/pool.rb
CHANGED
@@ -17,11 +17,11 @@ module Callisto
|
|
17
17
|
:identifier => proc { |entry| entry.object_id },
|
18
18
|
:callback => proc { |entry| entry.call }
|
19
19
|
}
|
20
|
-
|
20
|
+
@settings = OpenStruct.new(defaults.merge(options))
|
21
21
|
end
|
22
22
|
|
23
23
|
def settings
|
24
|
-
|
24
|
+
@settings
|
25
25
|
end
|
26
26
|
|
27
27
|
end
|
data/lib/callisto/shell.rb
CHANGED
@@ -5,7 +5,11 @@ module Callisto
|
|
5
5
|
attr_accessor :executable, :arguments
|
6
6
|
|
7
7
|
def self.bin_path=(path)
|
8
|
-
|
8
|
+
@bin_path = path
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.bin_path
|
12
|
+
@bin_path
|
9
13
|
end
|
10
14
|
|
11
15
|
def initialize(executable, arguments)
|
@@ -14,11 +18,7 @@ module Callisto
|
|
14
18
|
end
|
15
19
|
|
16
20
|
def command
|
17
|
-
prefix =
|
18
|
-
File.join(@@bin_path, executable)
|
19
|
-
else
|
20
|
-
executable
|
21
|
-
end
|
21
|
+
prefix = File.join(*[self.class.bin_path, executable].compact)
|
22
22
|
"#{prefix} #{arguments}"
|
23
23
|
end
|
24
24
|
|
data/lib/callisto/thumbnail.rb
CHANGED
@@ -25,7 +25,7 @@ module Callisto
|
|
25
25
|
location = File.join(root_path, prefix)
|
26
26
|
if !File.exist?(save_path)
|
27
27
|
FileUtils.mkdir_p(location) unless File.directory?(location)
|
28
|
-
task = Shell.new("convert", "#{file_path} -strip -quality #{quality
|
28
|
+
task = Shell.new("convert", "#{file_path} -strip -quality #{quality} -resize #{size}#{flag} #{crop} #{save_path}")
|
29
29
|
pid = Callisto::Pool.instance << task
|
30
30
|
Callisto::Pool.instance.wait(pid)
|
31
31
|
end
|
data/lib/callisto/version.rb
CHANGED
data/spec/configuration_spec.rb
CHANGED
@@ -3,6 +3,10 @@ require File.expand_path("../minitest_helper", __FILE__)
|
|
3
3
|
|
4
4
|
describe "Configuration" do
|
5
5
|
|
6
|
+
before do
|
7
|
+
Callisto.configuration.reset
|
8
|
+
end
|
9
|
+
|
6
10
|
it "should assign max workers to pool" do
|
7
11
|
Callisto.configure do |config|
|
8
12
|
config.max_workers = 13
|
@@ -20,4 +24,16 @@ describe "Configuration" do
|
|
20
24
|
Callisto.configuration.thumbnail_quality.must_equal 75
|
21
25
|
end
|
22
26
|
|
27
|
+
it "can be reset" do
|
28
|
+
default_size = Callisto::Configuration::Defaults::THUMBNAIL[:size]
|
29
|
+
default_quality = Callisto::Configuration::Defaults::THUMBNAIL[:quality]
|
30
|
+
Callisto.configure do |config|
|
31
|
+
config.thumbnail_size = "20x45"
|
32
|
+
config.thumbnail_quality = 75
|
33
|
+
end
|
34
|
+
Callisto.configuration.reset
|
35
|
+
Callisto.configuration.thumbnail_size.must_equal default_size
|
36
|
+
Callisto.configuration.thumbnail_quality.must_equal default_quality
|
37
|
+
end
|
38
|
+
|
23
39
|
end
|
data/spec/minitest_helper.rb
CHANGED
data/spec/thumbnail_spec.rb
CHANGED
@@ -1,16 +1,11 @@
|
|
1
1
|
require "minitest/autorun"
|
2
2
|
require File.expand_path("../minitest_helper", __FILE__)
|
3
3
|
|
4
|
-
def cleanup(path)
|
5
|
-
matcher = File.join(path, "*.*")
|
6
|
-
Dir[matcher].each { |entry| File.unlink(entry) }
|
7
|
-
end
|
8
|
-
|
9
4
|
describe "Thumbnail" do
|
10
5
|
|
11
6
|
before do
|
12
7
|
reset_pool
|
13
|
-
Callisto.configuration.
|
8
|
+
Callisto.configuration.reset
|
14
9
|
end
|
15
10
|
|
16
11
|
describe "when saving" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: callisto
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.9.1
|
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-04-
|
12
|
+
date: 2012-04-26 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: minitest
|
16
|
-
requirement: &
|
16
|
+
requirement: &27777500 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *27777500
|
25
25
|
description: Image thumbnails on the fly
|
26
26
|
email:
|
27
27
|
- daniel@thegeek.ro
|