Class: Rookie::Tasks::Gem

Inherits:
Rake::TaskLib
  • Object
show all
Defined in:
lib/rookie/tasks/gem.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(gemspec = nil, gem_dir = 'gem') {|_self| ... } ⇒ Gem

Returns a new instance of Gem.

Yields:

  • (_self)

Yield Parameters:



25
26
27
28
29
30
# File 'lib/rookie/tasks/gem.rb', line 25

def initialize(gemspec = nil, gem_dir = 'gem')
  self.spec = gemspec
  self.dir = gem_dir
  yield self if block_given?
  define
end

Instance Attribute Details

#dirObject

Returns the value of attribute dir.



8
9
10
# File 'lib/rookie/tasks/gem.rb', line 8

def dir
  @dir
end

#specObject

Returns the value of attribute spec.



8
9
10
# File 'lib/rookie/tasks/gem.rb', line 8

def spec
  @spec
end

Instance Method Details

#build_gemObject



36
37
38
39
40
# File 'lib/rookie/tasks/gem.rb', line 36

def build_gem
  FileUtils.mkdir_p dir
  gem = ::Gem::Builder.new(spec).build
  FileUtils.mv gem, dir
end

#clean!Object



46
47
48
# File 'lib/rookie/tasks/gem.rb', line 46

def clean!
  FileUtils.rm_rf dir
end

#defineObject



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/rookie/tasks/gem.rb', line 50

def define
  directory dir
  namespace :gem do
    desc 'Builds the gem from the specification'
    task :build => dir do
      build_gem
    end

    desc 'Pushes the gem to rubygems.org'
    task :push => :build do
      sh gem :push
    end

    desc 'Same as gem:release'
    task :release => :push

    desc 'Installs the gem locally'
    task :install => :build do
      sh gem :install
    end

    desc 'Uninstalls the gem'
    task :uninstall do
      sh gem(:uninstall, spec.name)
    end

    desc 'Removes the gem package directory'
    task :clean do
      clean!
    end

    desc 'Installs the gem locally and cleans up'
    task :setup => [ :install, :clean ]
  end
  desc 'Same as gem:build'
  task :gem => 'gem:build'
end

#gem(cmd, arg = gem_file) ⇒ Object



42
43
44
# File 'lib/rookie/tasks/gem.rb', line 42

def gem(cmd, arg = gem_file)
  "gem #{cmd} #{arg}"
end

#gem_fileObject



32
33
34
# File 'lib/rookie/tasks/gem.rb', line 32

def gem_file
  File.join dir, "#{spec.name}-#{spec.version}.gem"
end