Class: Jeweler::RubyforgeTasks

Inherits:
Rake::TaskLib
  • Object
show all
Defined in:
lib/jeweler/rubyforge_tasks.rb

Overview

Rake tasks for putting a Jeweler gem on Rubyforge.

Jeweler::Tasks.new needs to be used before this.

Basic usage:

Jeweler::RubyforgeTasks.new

Easy enough, right?

There are a few options you can tweak:

* project: the rubyforge project to operate on. This defaults to whatever you specified in your gemspec. Defaults to your gem name.
* remote_doc_path: the place to upload docs to on Rubyforge under /var/www/gforge-projects/#{project}/

See also wiki.github.com/technicalpickles/jeweler/rubyforge

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize {|_self| ... } ⇒ RubyforgeTasks

Returns a new instance of RubyforgeTasks.

Yields:

  • (_self)

Yield Parameters:



31
32
33
34
35
36
37
# File 'lib/jeweler/rubyforge_tasks.rb', line 31

def initialize
  yield self if block_given?

  $stderr.puts 'Releasing gems to Rubyforge is deprecated. See details at http://wiki.github.com/technicalpickles/jeweler/migrating-from-releasing-gems-to-rubyforge'

  define
end

Instance Attribute Details

#doc_taskObject

Task to be used for generating documentation, before they are uploaded. Defaults to rdoc.



27
28
29
# File 'lib/jeweler/rubyforge_tasks.rb', line 27

def doc_task
  @doc_task
end

#jewelerObject

Returns the value of attribute jeweler.



29
30
31
# File 'lib/jeweler/rubyforge_tasks.rb', line 29

def jeweler
  @jeweler
end

#projectObject

The RubyForge project to interact with. Defaults to whatever is in your jeweler gemspec.



23
24
25
# File 'lib/jeweler/rubyforge_tasks.rb', line 23

def project
  @project
end

#remote_doc_pathObject

The path to upload docs to. It is relative to /var/www/gforge-projects/##project/, and defaults to your gemspec’s name



25
26
27
# File 'lib/jeweler/rubyforge_tasks.rb', line 25

def remote_doc_path
  @remote_doc_path
end

Instance Method Details

#defineObject



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
87
88
89
# File 'lib/jeweler/rubyforge_tasks.rb', line 51

def define
  namespace :rubyforge do
    namespace :release do
      desc 'Release the current gem version to RubyForge.'
      task :gem do
        $stderr.puts 'DEPRECATION: Releasing gems to RubyForge is deprecated. You should see about releasing to Gemcutter instead: http://wiki.github.com/technicalpickles/jeweler/gemcutter'
      end

      if publish_documentation?
        desc 'Publish docs to RubyForge.'
        task docs: doc_task do
          config = YAML.load(
            File.read(File.expand_path('~/.rubyforge/user-config.yml'))
          )

          host = "#{config['username']}@rubyforge.org"
          remote_dir = "/var/www/gforge-projects/#{project}/#{remote_doc_path}"

          local_dir = case doc_task.to_sym
                      when :rdoc then 'rdoc'
                      when :yardoc then 'doc'
                      when 'doc:app'.to_sym then 'doc/app'
                      else
                        raise 'Unsure what to run to generate documentation. Please set doc_task and re-run.'
                      end

          sh %(rsync --archive --verbose --delete #{local_dir}/ #{host}:#{remote_dir})
        end
      end
    end

    if publish_documentation?
      desc 'Release RDoc documentation to RubyForge'
      task release: 'rubyforge:release:docs'
    end
  end

  task release: 'rubyforge:release'
end

#publish_documentation?Boolean

Returns:

  • (Boolean)


91
92
93
# File 'lib/jeweler/rubyforge_tasks.rb', line 91

def publish_documentation?
  ! (doc_task == false || doc_task == :none)
end