diff --git a/lib/paleta.rb b/lib/paleta.rb index e3c0bcd..4336af2 100644 --- a/lib/paleta.rb +++ b/lib/paleta.rb @@ -3,6 +3,8 @@ require 'paleta/palette' module Paleta + class MissingDependencyError < StandardError; end + @rmagick_available = begin require "rmagick" rescue LoadError diff --git a/lib/paleta/palette.rb b/lib/paleta/palette.rb index 5bec956..3b78115 100644 --- a/lib/paleta/palette.rb +++ b/lib/paleta/palette.rb @@ -211,7 +211,7 @@ def fit def self.generate_from_image(path, size = 5) unless Paleta.rmagick_available? - return puts "You must install RMagick to use Palette.generate(:from => :image, ...)" + raise Paleta::MissingDependencyError, "You must install RMagick to use Palette.generate(:from => :image, ...)" end begin diff --git a/spec/models/palette_spec.rb b/spec/models/palette_spec.rb index c5af58d..4bfe504 100644 --- a/spec/models/palette_spec.rb +++ b/spec/models/palette_spec.rb @@ -231,6 +231,17 @@ palette.size.should == size end + it "should raise when generating a Palette from an image without RMagick" do + # stub Paleta.rmagick_available? to return false + allow(Paleta).to receive(:rmagick_available?).and_return(false) + + path = File.join(File.dirname(__FILE__), '..', 'images/test.jpg') + size = 5 + expect do + Paleta::Palette.generate(:from => :image, :image => path, :size => size) + end.to raise_error(Paleta::MissingDependencyError) + end + it "should raise an error when generating a Palette from an invalid image" do expect{ Paleta::Palette.generate(:from => :image, :image => "/no/image.here") }.to raise_error(RuntimeError) end