Permalink
Browse files

Respect :log_command again

  • Loading branch information...
1 parent 0df4b60 commit f7fdc9f13e348a760ca6ad3b068a66ce3773cb83 @jyurek jyurek committed Oct 6, 2011
Showing with 25 additions and 16 deletions.
  1. +14 −15 lib/paperclip.rb
  2. +11 −1 test/paperclip_test.rb
View
@@ -78,29 +78,28 @@ def interpolates key, &block
Paperclip::Interpolations[key] = block
end
- # The run method takes a command to execute and an array of parameters
- # that get passed to it. The command is prefixed with the :command_path
- # option from Paperclip.options. If you have many commands to run and
- # they are in different paths, the suggested course of action is to
- # symlink them so they are all in the same directory.
+ # The run method takes the name of a binary to run, the arguments to that binary
+ # and some options:
#
- # If the command returns with a result code that is not one of the
- # expected_outcodes, a Cocaine::CommandLineError will be raised. Generally
- # a code of 0 is expected, but a list of codes may be passed if necessary.
- # These codes should be passed as a hash as the last argument, like so:
+ # :command_path -> A $PATH-like variable that defines where to look for the binary
+ # on the filesystem. Colon-separated, just like $PATH.
#
- # Paperclip.run("echo", "something", :expected_outcodes => [0,1,2,3])
+ # :expected_outcodes -> An array of integers that defines the expected exit codes
+ # of the binary. Defaults to [0].
#
- # This method can log the command being run when
- # Paperclip.options[:log_command] is set to true (defaults to false). This
- # will only log if logging in general is set to true as well.
- def run(cmd, *params)
+ # :log_command -> Log the command being run when set to true (defaults to false).
+ # This will only log if logging in general is set to true as well.
+ #
+ # :swallow_stderr -> Set to true if you don't care what happens on STDERR.
+ #
+ def run(cmd, arguments = "", local_options = {})
if options[:image_magick_path]
Paperclip.log("[DEPRECATION] :image_magick_path is deprecated and will be removed. Use :command_path instead")
end
command_path = options[:command_path] || options[:image_magick_path]
Cocaine::CommandLine.path = ( Cocaine::CommandLine.path ? [Cocaine::CommandLine.path, command_path ].flatten : command_path )
- Cocaine::CommandLine.new(cmd, *params).run
+ local_options = local_options.merge(:logger => logger) if logging? && (options[:log_command] || local_options[:log_command])
+ Cocaine::CommandLine.new(cmd, arguments, local_options).run
end
def processor(name) #:nodoc:
View
@@ -3,11 +3,13 @@
class PaperclipTest < Test::Unit::TestCase
context "Calling Paperclip.run" do
setup do
- Cocaine::CommandLine.expects(:new).with("convert", "stuff").returns(stub(:run))
+ Paperclip.options[:log_command] = false
+ Cocaine::CommandLine.expects(:new).with("convert", "stuff", {}).returns(stub(:run))
@original_command_line_path = Cocaine::CommandLine.path
end
teardown do
+ Paperclip.options[:log_command] = true
Cocaine::CommandLine.path = @original_command_line_path
end
@@ -22,6 +24,14 @@ class PaperclipTest < Test::Unit::TestCase
end
end
+ context "Calling Paperclip.run with a logger" do
+ should "pass the defined logger if :log_command is set" do
+ Paperclip.options[:log_command] = true
+ Cocaine::CommandLine.expects(:new).with("convert", "stuff", :logger => Paperclip.logger).returns(stub(:run))
+ Paperclip.run("convert", "stuff")
+ end
+ end
+
context "Paperclip.each_instance_with_attachment" do
setup do
@file = File.new(File.join(FIXTURES_DIR, "5k.png"), 'rb')

0 comments on commit f7fdc9f

Please sign in to comment.