From 764a876f4789b1c658b243e1496f614dc9fdb6b1 Mon Sep 17 00:00:00 2001 From: Lee Jones Date: Wed, 25 May 2011 14:08:12 -0400 Subject: [PATCH] Add optional configuration for rake version * applies to deploy:setup and normal deploy --- lib/moonshine/capistrano_integration.rb | 3 ++- lib/moonshine/manifest/rails/rails.rb | 3 ++- spec/moonshine/manifest/rails_spec.rb | 14 ++++++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/moonshine/capistrano_integration.rb b/lib/moonshine/capistrano_integration.rb index 5cda8de1..2475f460 100644 --- a/lib/moonshine/capistrano_integration.rb +++ b/lib/moonshine/capistrano_integration.rb @@ -438,7 +438,8 @@ def self.load_into(capistrano_config) end task :install_moonshine_deps do - sudo 'gem install rake --no-rdoc --no-ri' + rake_version = fetch(:rake_version, '>= 0') + sudo "gem install rake --no-rdoc --no-ri --version='#{rake_version}'" sudo 'gem install i18n --no-rdoc --no-ri' # workaround for missing activesupport-3.0.2 dep on i18n sudo 'gem install shadow_puppet --no-rdoc --no-ri' if rails_root.join('Gemfile').exist? diff --git a/lib/moonshine/manifest/rails/rails.rb b/lib/moonshine/manifest/rails/rails.rb index 4566edcf..7e4ee991 100644 --- a/lib/moonshine/manifest/rails/rails.rb +++ b/lib/moonshine/manifest/rails/rails.rb @@ -59,7 +59,8 @@ def rails_logrotate # This task ensures Rake is installed and that rake environment # executes without error in your rails_root. def rails_rake_environment - package 'rake', :provider => :gem, :ensure => :installed + rake_version = configuration[:rake_version] || :installed + package 'rake', :provider => :gem, :ensure => rake_version file '/var/log/moonshine_rake.log', :ensure => :present, :owner => configuration[:user], diff --git a/spec/moonshine/manifest/rails_spec.rb b/spec/moonshine/manifest/rails_spec.rb index 3ec012ae..cde513c4 100644 --- a/spec/moonshine/manifest/rails_spec.rb +++ b/spec/moonshine/manifest/rails_spec.rb @@ -534,4 +534,18 @@ def search(gem_pattern, platform_only = false) end end + describe "rake" do + it "installs :installed by default" do + @manifest.configure(:rake_version => nil) + @manifest.rails_rake_environment + @manifest.should have_package('rake').version(:installed) + end + + it "can be pinned to a specific version" do + @manifest.configure(:rake_version => '1.2.3') + @manifest.rails_rake_environment + @manifest.should have_package('rake').version('1.2.3') + end + end + end