~michaelforrest/use-case-mapper/trunk

« back to all changes in this revision

Viewing changes to vendor/rails/railties/lib/tasks/gems.rake

  • Committer: Michael Forrest
  • Date: 2010-10-15 16:28:50 UTC
  • Revision ID: michael.forrest@canonical.com-20101015162850-tj2vchanv0kr0dun
refrozeĀ gems

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
    frozen_gems.each { |gem| gem.build }
 
24
  end
 
25
 
 
26
  namespace :build do
 
27
    desc "Force the build of all gems"
 
28
    task :force do
 
29
      $gems_build_rake_task = true
 
30
      frozen_gems.each { |gem| gem.build(:force => true) }
 
31
    end
 
32
  end
 
33
 
 
34
  desc "Installs all required gems."
 
35
  task :install => :base do
 
36
    current_gems.each { |gem| gem.install }
 
37
  end
 
38
 
 
39
  desc "Unpacks all required gems into vendor/gems."
 
40
  task :unpack => :install do
 
41
    current_gems.each { |gem| gem.unpack }
 
42
  end
 
43
 
 
44
  namespace :unpack do
 
45
    desc "Unpacks all required gems and their dependencies into vendor/gems."
 
46
    task :dependencies => :install do
 
47
      current_gems.each { |gem| gem.unpack(:recursive => true) }
 
48
    end
 
49
  end
 
50
 
 
51
  desc "Regenerate gem specifications in correct format."
 
52
  task :refresh_specs do
 
53
    frozen_gems(false).each { |gem| gem.refresh }
 
54
  end
 
55
end
 
56
 
 
57
def current_gems
 
58
  gems = Rails.configuration.gems
 
59
  gems = gems.select { |gem| gem.name == ENV['GEM'] } unless ENV['GEM'].blank?
 
60
  gems
 
61
end
 
62
 
 
63
def frozen_gems(load_specs=true)
 
64
  Dir[File.join(RAILS_ROOT, 'vendor', 'gems', '*-*')].map do |gem_dir|
 
65
    Rails::GemDependency.from_directory_name(gem_dir, load_specs)
 
66
  end
 
67
end
 
68
 
 
69
def print_gem_status(gem, indent=1)
 
70
  code = case
 
71
    when gem.framework_gem? then 'R'
 
72
    when gem.frozen?        then 'F'
 
73
    when gem.installed?     then 'I'
 
74
    else                         ' '
 
75
  end
 
76
  puts "   "*(indent-1)+" - [#{code}] #{gem.name} #{gem.requirement.to_s}"
 
77
  gem.dependencies.each { |g| print_gem_status(g, indent+1) }
 
78
end