diff --git a/lib/jekyll.rb b/lib/jekyll.rb index a669c911..ca729c87 100644 --- a/lib/jekyll.rb +++ b/lib/jekyll.rb @@ -58,8 +58,7 @@ module Jekyll DEFAULTS = { 'source' => Dir.pwd, 'destination' => File.join(Dir.pwd, '_site'), - - 'plugins' => File.join(Dir.pwd, '_plugins'), + 'plugins' => '_plugins', 'layouts' => '_layouts', 'keep_files' => ['.git','.svn'], diff --git a/lib/jekyll/site.rb b/lib/jekyll/site.rb index 2deae484..74ebd112 100644 --- a/lib/jekyll/site.rb +++ b/lib/jekyll/site.rb @@ -18,7 +18,7 @@ module Jekyll self.safe = config['safe'] self.source = File.expand_path(config['source']) self.dest = File.expand_path(config['destination']) - self.plugins = Array(config['plugins']).map { |d| File.expand_path(d) } + self.plugins = plugins_path self.lsi = config['lsi'] self.pygments = config['pygments'] self.permalink_style = config['permalink'].to_sym @@ -100,6 +100,17 @@ module Jekyll end end + # Internal: Setup the plugin search path + # + # Returns an Array of plugin search paths + def plugins_path + if (config['plugins'] == Jekyll::DEFAULTS['plugins']) + [File.join(self.source, config['plugins'])] + else + Array(config['plugins']).map { |d| File.expand_path(d) } + end + end + # Read Site data from disk and load it into internal data structures. # # Returns nothing. diff --git a/test/test_site.rb b/test/test_site.rb index c698a887..64cc8437 100644 --- a/test/test_site.rb +++ b/test/test_site.rb @@ -7,6 +7,11 @@ class TestSite < Test::Unit::TestCase assert_equal [File.join(Dir.pwd, '_plugins')], site.plugins end + should "look for plugins under the site directory by default" do + site = Site.new(Jekyll::DEFAULTS.merge({'source' => source_dir})) + assert_equal [File.join(source_dir, '_plugins')], site.plugins + end + should "have an array for plugins if passed as a string" do site = Site.new(Jekyll::DEFAULTS.merge({'plugins' => '/tmp/plugins'})) assert_equal ['/tmp/plugins'], site.plugins @@ -26,6 +31,7 @@ class TestSite < Test::Unit::TestCase site = Site.new(Jekyll::DEFAULTS.merge({'plugins' => nil})) assert_equal [], site.plugins end + end context "creating sites" do setup do