Updated README.rdoc again
[feedcatcher.git] / vendor / rails / railties / lib / tasks / gems.rake
1 desc "List the gems that this rails application depends on"
2 task :gems => 'gems:base' do
3 Rails.configuration.gems.each do |gem|
4 print_gem_status(gem)
5 end
6 puts
7 puts "I = Installed"
8 puts "F = Frozen"
9 puts "R = Framework (loaded before rails starts)"
10 end
11
12 namespace :gems do
13 task :base do
14 $gems_rake_task = true
15 require 'rubygems'
16 require 'rubygems/gem_runner'
17 Rake::Task[:environment].invoke
18 end
19
20 desc "Build any native extensions for unpacked gems"
21 task :build do
22 $gems_build_rake_task = true
23 Rake::Task['gems:unpack'].invoke
24 current_gems.each &:build
25 end
26
27 desc "Installs all required gems."
28 task :install => :base do
29 current_gems.each &:install
30 end
31
32 desc "Unpacks all required gems into vendor/gems."
33 task :unpack => :install do
34 current_gems.each &:unpack
35 end
36
37 namespace :unpack do
38 desc "Unpacks all required gems and their dependencies into vendor/gems."
39 task :dependencies => :install do
40 current_gems.each { |gem| gem.unpack(:recursive => true) }
41 end
42 end
43
44 desc "Regenerate gem specifications in correct format."
45 task :refresh_specs => :base do
46 current_gems.each &:refresh
47 end
48 end
49
50 def current_gems
51 gems = Rails.configuration.gems
52 gems = gems.select { |gem| gem.name == ENV['GEM'] } unless ENV['GEM'].blank?
53 gems
54 end
55
56 def print_gem_status(gem, indent=1)
57 code = case
58 when gem.framework_gem? then 'R'
59 when gem.frozen? then 'F'
60 when gem.installed? then 'I'
61 else ' '
62 end
63 puts " "*(indent-1)+" - [#{code}] #{gem.name} #{gem.requirement.to_s}"
64 gem.dependencies.each { |g| print_gem_status(g, indent+1) }
65 end