From 4f15f45492a3251dd58e659d7ae85d6e9aec68e5 Mon Sep 17 00:00:00 2001 From: John Bintz Date: Tue, 3 Jul 2012 11:14:43 -0400 Subject: [PATCH] fix defaults precedence for gems --- features/ruby_gemfile.feature | 15 +++++++++++++++ lib/penchant/gemfile.rb | 2 +- lib/penchant/version.rb | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/features/ruby_gemfile.feature b/features/ruby_gemfile.feature index d5268ae..297ef91 100644 --- a/features/ruby_gemfile.feature +++ b/features/ruby_gemfile.feature @@ -234,3 +234,18 @@ Feature: Gemfiles # generated by penchant, environment: local gem "one", "1.2.3", {:path=>"../one"} """ + + Scenario: Override defaults for an environment + Given I have the file "Gemfile.penchant" with the content: + """ + defaults_for env(:local), :path => '../%s' + env :local do + gem 'one', '1.2.3', :path => '../cats' + end + """ + When I rebuild the Gemfile for "local" mode + Then the file "Gemfile" should have the following content: + """ + # generated by penchant, environment: local + gem "one", "1.2.3", {:path=>"../cats"} + """ diff --git a/lib/penchant/gemfile.rb b/lib/penchant/gemfile.rb index dfaa076..4017a56 100644 --- a/lib/penchant/gemfile.rb +++ b/lib/penchant/gemfile.rb @@ -193,7 +193,7 @@ module Penchant def process_options(gem_name, template = {}) Hash[ - template.merge(_defaults_for(gem_name)).collect { |key, value| + _defaults_for(gem_name).dup.merge(template).collect { |key, value| value = value % gem_name if value.respond_to?(:%) [ key, value ] diff --git a/lib/penchant/version.rb b/lib/penchant/version.rb index 0dcf9fd..225e4db 100644 --- a/lib/penchant/version.rb +++ b/lib/penchant/version.rb @@ -1,3 +1,3 @@ module Penchant - VERSION = "0.2.8.1" + VERSION = "0.2.9" end