bulldog 0.0.6 → 0.0.7

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/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