bulldog 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ == 0.0.7 2009-11-17
2
+
3
+ * Allow configuration through config/bulldog.yml in Rails.
4
+
1
5
  == 0.0.6 2009-11-17
2
6
 
3
7
  * Add attachment#reload for when the file changes behind Bulldog's
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.6
1
+ 0.0.7
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{bulldog}
8
- s.version = "0.0.6"
8
+ s.version = "0.0.7"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["George Ogata"]
@@ -58,6 +58,7 @@ Flexible file attachments for active record.
58
58
  "lib/bulldog/validations.rb",
59
59
  "lib/bulldog/vector2.rb",
60
60
  "rails/init.rb",
61
+ "rails/rails.rb",
61
62
  "script/console",
62
63
  "spec/data/empty.txt",
63
64
  "spec/data/test.jpg",
@@ -91,6 +92,7 @@ Flexible file attachments for active record.
91
92
  "spec/unit/processor/ffmpeg_spec.rb",
92
93
  "spec/unit/processor/image_magick_spec.rb",
93
94
  "spec/unit/processor/one_shot_spec.rb",
95
+ "spec/unit/rails_spec.rb",
94
96
  "spec/unit/reflection_spec.rb",
95
97
  "spec/unit/stream_spec.rb",
96
98
  "spec/unit/style_set_spec.rb",
@@ -129,6 +131,7 @@ Flexible file attachments for active record.
129
131
  "spec/unit/processor/ffmpeg_spec.rb",
130
132
  "spec/unit/processor/image_magick_spec.rb",
131
133
  "spec/unit/processor/one_shot_spec.rb",
134
+ "spec/unit/rails_spec.rb",
132
135
  "spec/unit/reflection_spec.rb",
133
136
  "spec/unit/stream_spec.rb",
134
137
  "spec/unit/style_set_spec.rb",
@@ -37,6 +37,24 @@ module Bulldog
37
37
  #
38
38
  attr_accessor :default_url_template
39
39
 
40
+ #
41
+ # The path to `ffmpeg'. Only required if you use ffmpeg
42
+ # (processing videos, or retrieving video attributes).
43
+ #
44
+ delegate :ffmpeg_path, :ffmpeg_path=, :to => Processor::Ffmpeg
45
+
46
+ #
47
+ # The path to `convert'. Only required if you use convert
48
+ # (processing images or pdfs).
49
+ #
50
+ delegate :convert_path, :convert_path=, :to => Processor::ImageMagick
51
+
52
+ #
53
+ # The path to `identify'. Only required if you use identify
54
+ # (retrieving image attributes).
55
+ #
56
+ delegate :identify_path, :identify_path=, :to => Processor::ImageMagick
57
+
40
58
  #
41
59
  # Define an interpolation token.
42
60
  #
@@ -89,6 +107,9 @@ module Bulldog
89
107
  self.logger = nil
90
108
  self.default_path_template = nil
91
109
  self.default_url_template = "/assets/:class/:id.:style.:extension"
110
+ self.convert_path = 'convert'
111
+ self.identify_path = 'identify'
112
+ self.ffmpeg_path = 'ffmpeg'
92
113
  end
93
114
 
94
115
  ActiveRecord::Base.send :include, Bulldog::HasAttachment
@@ -2,11 +2,9 @@ module Bulldog
2
2
  module Processor
3
3
  class Ffmpeg < Base
4
4
  class << self
5
- attr_accessor :ffmpeg_command
5
+ attr_accessor :ffmpeg_path
6
6
  end
7
7
 
8
- self.ffmpeg_command = Bulldog.find_in_path('ffmpeg')
9
-
10
8
  def initialize(*args)
11
9
  super
12
10
  @operation = nil
@@ -155,7 +153,7 @@ module Bulldog
155
153
 
156
154
  def run_ffmpeg
157
155
  @arguments.each do |style, arguments|
158
- command = [self.class.ffmpeg_command]
156
+ command = [self.class.ffmpeg_path]
159
157
  command << '-i' << input_file
160
158
  command.concat(arguments)
161
159
  Bulldog.run(*command) or
@@ -4,13 +4,10 @@ module Bulldog
4
4
  module Processor
5
5
  class ImageMagick < Base
6
6
  class << self
7
- attr_accessor :convert_command
8
- attr_accessor :identify_command
7
+ attr_accessor :convert_path
8
+ attr_accessor :identify_path
9
9
  end
10
10
 
11
- self.convert_command = Bulldog.find_in_path('convert')
12
- self.identify_command = Bulldog.find_in_path('identify')
13
-
14
11
  def initialize(*args)
15
12
  super
16
13
  @tree = ArgumentTree.new(styles)
@@ -119,7 +116,7 @@ module Bulldog
119
116
  end
120
117
 
121
118
  def run_convert_command
122
- command = [self.class.convert_command, "#{input_file}[0]", *@tree.arguments].flatten
119
+ command = [self.class.convert_path, "#{input_file}[0]", *@tree.arguments].flatten
123
120
  output = Bulldog.run(*command) or
124
121
  record.errors.add name, "convert failed (status #$?)"
125
122
  output
@@ -1,19 +1,5 @@
1
1
  module Bulldog
2
2
  module Util
3
- #
4
- # Return the path of the first occurrence of +basename+ in the
5
- # current PATH, or nil if the file cannot be found.
6
- #
7
- def find_in_path(basename)
8
- ENV['PATH'].split(/:+/).each do |dirname|
9
- path = File.join(dirname, basename)
10
- if File.file?(path) && File.executable?(path)
11
- return path
12
- end
13
- end
14
- nil
15
- end
16
-
17
3
  #
18
4
  # Run the given command, logging everything obsessively.
19
5
  #
@@ -1,9 +1,4 @@
1
1
  require 'bulldog'
2
+ require File.dirname(__FILE__) + '/rails'
2
3
 
3
- Bulldog.instance_eval do
4
- self.logger = Rails.logger
5
-
6
- to_interpolate(:rails_root){Rails.root}
7
- to_interpolate(:rails_env){Rails.env}
8
- to_interpolate(:public_path){Rails.public_path}
9
- end
4
+ Bulldog::Rails.init("#{Rails.root}/config/bulldog.yml", Rails)
@@ -0,0 +1,47 @@
1
+ #
2
+ # Helper library for rails/init.rb.
3
+ #
4
+ module Bulldog
5
+ module Rails
6
+ class << self
7
+ def init(config_path, rails)
8
+ config = read_config(config_path, rails.env)
9
+ set_logger(config, rails.logger)
10
+ set_attribute config, :default_path_template
11
+ set_attribute config, :default_url_template
12
+ set_attribute config, :convert_path
13
+ set_attribute config, :identify_path
14
+ set_attribute config, :ffmpeg_path
15
+ define_interpolations(rails)
16
+ end
17
+
18
+ def read_config(path, environment)
19
+ File.exist?(path) or
20
+ return {}
21
+ YAML.load_file(path)[environment]
22
+ end
23
+
24
+ def set_logger(config, default_logger)
25
+ case (log_path = config['log_path'])
26
+ when false
27
+ Bulldog.logger = nil
28
+ when nil
29
+ Bulldog.logger = default_logger
30
+ else
31
+ Bulldog.logger = Logger.new(log_path)
32
+ end
33
+ end
34
+
35
+ def set_attribute(config, name)
36
+ value = config[name.to_s] and
37
+ Bulldog.send("#{name}=", value)
38
+ end
39
+
40
+ def define_interpolations(rails)
41
+ Bulldog.to_interpolate(:rails_root){rails.root}
42
+ Bulldog.to_interpolate(:rails_env){rails.env}
43
+ Bulldog.to_interpolate(:public_path){rails.public_path}
44
+ end
45
+ end
46
+ end
47
+ end
@@ -1,7 +1,7 @@
1
1
  module ImageCreation
2
2
  def create_image(path, options={})
3
3
  options[:size] ||= '10x10'
4
- convert = Bulldog::Processor::ImageMagick.convert_command
4
+ convert = Bulldog::Processor::ImageMagick.convert_path
5
5
  system(convert, '-geometry', "#{options[:size]}!", 'pattern:checkerboard', path)
6
6
  path
7
7
  end
@@ -6,7 +6,7 @@ describe "Processing image attachments" do
6
6
  :height => :integer)
7
7
 
8
8
  def identify
9
- Bulldog::Processor::ImageMagick.identify_command
9
+ Bulldog::Processor::ImageMagick.identify_path
10
10
  end
11
11
 
12
12
  before do
@@ -42,7 +42,6 @@ module SpecHelper
42
42
  mod.use_temporary_attribute_value Bulldog, :default_path_template do
43
43
  "#{temporary_directory}/attachments/:class/:id.:style"
44
44
  end
45
-
46
45
  mod.use_temporary_attribute_value Bulldog, :logger do
47
46
  buffer = StringIO.new
48
47
  logger = Logger.new(buffer)
@@ -51,6 +50,9 @@ module SpecHelper
51
50
  end
52
51
  logger
53
52
  end
53
+ mod.use_temporary_attribute_value Bulldog, :convert_path, 'convert'
54
+ mod.use_temporary_attribute_value Bulldog, :identify_path, 'identify'
55
+ mod.use_temporary_attribute_value Bulldog, :ffmpeg_path, 'ffmpeg'
54
56
  end
55
57
 
56
58
  #
@@ -22,7 +22,7 @@ describe Processor::Ffmpeg do
22
22
  end
23
23
 
24
24
  def ffmpeg
25
- Bulldog::Processor::Ffmpeg.ffmpeg_command
25
+ Bulldog::Processor::Ffmpeg.ffmpeg_path
26
26
  end
27
27
 
28
28
  def original_video_path
@@ -13,7 +13,7 @@ describe Processor::ImageMagick do
13
13
  end
14
14
 
15
15
  def convert
16
- Processor::ImageMagick.convert_command
16
+ Processor::ImageMagick.convert_path
17
17
  end
18
18
 
19
19
  def original_path
@@ -0,0 +1,84 @@
1
+ require 'spec_helper'
2
+ require "#{ROOT}/rails/rails"
3
+
4
+ describe Rails do
5
+ describe "#init" do
6
+ def config_path
7
+ "#{temporary_directory}/config.yml"
8
+ end
9
+
10
+ def make_config(attributes)
11
+ config = {'ENVIRONMENT' => attributes}
12
+ open(config_path, 'w') do |file|
13
+ file.puts config.to_yaml
14
+ end
15
+ end
16
+
17
+ def init
18
+ fake_rails = OpenStruct.new(
19
+ :env => 'ENVIRONMENT',
20
+ :logger => Logger.new('/dev/null'),
21
+ :root => 'ROOT',
22
+ :public_path => 'PUBLIC'
23
+ )
24
+ Rails.init(config_path, fake_rails)
25
+ end
26
+
27
+ it "should set the default path template from the configuration file, if present" do
28
+ make_config('default_path_template' => 'DEFAULT PATH TEMPLATE')
29
+ init
30
+ Bulldog.default_path_template.should == 'DEFAULT PATH TEMPLATE'
31
+ end
32
+
33
+ it "should set the default url template from the configuration file, if present" do
34
+ make_config('default_url_template' => 'DEFAULT URL TEMPLATE')
35
+ init
36
+ Bulldog.default_url_template.should == 'DEFAULT URL TEMPLATE'
37
+ end
38
+
39
+ it "should set the ffmpeg path from the configuration file, if present" do
40
+ make_config('ffmpeg_path' => 'FFMPEG')
41
+ init
42
+ Bulldog.ffmpeg_path.should == 'FFMPEG'
43
+ end
44
+
45
+ it "should set the convert path from the configuration file, if present" do
46
+ make_config('convert_path' => 'CONVERT')
47
+ init
48
+ Bulldog.convert_path.should == 'CONVERT'
49
+ end
50
+
51
+ it "should set the identify path from the configuration file, if present" do
52
+ make_config('identify_path' => 'IDENTIFY')
53
+ init
54
+ Bulldog.identify_path.should == 'IDENTIFY'
55
+ end
56
+
57
+ it "should not set anything if the configuration file does not exist" do
58
+ default_default_path_template = Bulldog.default_path_template
59
+ init
60
+ Bulldog.default_path_template.should == default_default_path_template
61
+ end
62
+
63
+ describe "interpolations" do
64
+ def interpolate(template)
65
+ Interpolation.interpolate(template, @thing, :photo, Style.new(:style))
66
+ end
67
+
68
+ it "should interpolate :rails_root as Rails.root" do
69
+ init
70
+ interpolate("a/:rails_root/b").should == "a/ROOT/b"
71
+ end
72
+
73
+ it "should interpolate :rails_env as Rails.env" do
74
+ init
75
+ interpolate("a/:rails_env/b").should == "a/ENVIRONMENT/b"
76
+ end
77
+
78
+ it "should interpolate :public_path as Rails.public_path" do
79
+ init
80
+ interpolate("a/:public_path/b").should == "a/PUBLIC/b"
81
+ end
82
+ end
83
+ end
84
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bulldog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - George Ogata
@@ -94,6 +94,7 @@ files:
94
94
  - lib/bulldog/validations.rb
95
95
  - lib/bulldog/vector2.rb
96
96
  - rails/init.rb
97
+ - rails/rails.rb
97
98
  - script/console
98
99
  - spec/data/empty.txt
99
100
  - spec/data/test.jpg
@@ -127,6 +128,7 @@ files:
127
128
  - spec/unit/processor/ffmpeg_spec.rb
128
129
  - spec/unit/processor/image_magick_spec.rb
129
130
  - spec/unit/processor/one_shot_spec.rb
131
+ - spec/unit/rails_spec.rb
130
132
  - spec/unit/reflection_spec.rb
131
133
  - spec/unit/stream_spec.rb
132
134
  - spec/unit/style_set_spec.rb
@@ -187,6 +189,7 @@ test_files:
187
189
  - spec/unit/processor/ffmpeg_spec.rb
188
190
  - spec/unit/processor/image_magick_spec.rb
189
191
  - spec/unit/processor/one_shot_spec.rb
192
+ - spec/unit/rails_spec.rb
190
193
  - spec/unit/reflection_spec.rb
191
194
  - spec/unit/stream_spec.rb
192
195
  - spec/unit/style_set_spec.rb