rjspotter-innate 2009.06.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/AUTHORS +10 -0
- data/CHANGELOG +3261 -0
- data/COPYING +18 -0
- data/MANIFEST +127 -0
- data/README.md +563 -0
- data/Rakefile +39 -0
- data/example/app/retro_games.rb +60 -0
- data/example/app/todo/layout/default.xhtml +11 -0
- data/example/app/todo/spec/todo.rb +63 -0
- data/example/app/todo/start.rb +51 -0
- data/example/app/todo/view/index.xhtml +39 -0
- data/example/app/whywiki_erb/layout/wiki.html.erb +15 -0
- data/example/app/whywiki_erb/spec/wiki.rb +19 -0
- data/example/app/whywiki_erb/start.rb +42 -0
- data/example/app/whywiki_erb/view/edit.erb +6 -0
- data/example/app/whywiki_erb/view/index.erb +12 -0
- data/example/custom_middleware.rb +35 -0
- data/example/hello.rb +11 -0
- data/example/howto_spec.rb +35 -0
- data/example/link.rb +27 -0
- data/example/provides.rb +31 -0
- data/example/session.rb +38 -0
- data/innate.gemspec +41 -0
- data/lib/innate.rb +269 -0
- data/lib/innate/action.rb +137 -0
- data/lib/innate/adapter.rb +76 -0
- data/lib/innate/cache.rb +134 -0
- data/lib/innate/cache/api.rb +128 -0
- data/lib/innate/cache/drb.rb +58 -0
- data/lib/innate/cache/file_based.rb +44 -0
- data/lib/innate/cache/marshal.rb +20 -0
- data/lib/innate/cache/memory.rb +21 -0
- data/lib/innate/cache/yaml.rb +20 -0
- data/lib/innate/current.rb +35 -0
- data/lib/innate/dynamap.rb +96 -0
- data/lib/innate/helper.rb +185 -0
- data/lib/innate/helper/aspect.rb +124 -0
- data/lib/innate/helper/cgi.rb +54 -0
- data/lib/innate/helper/flash.rb +36 -0
- data/lib/innate/helper/link.rb +94 -0
- data/lib/innate/helper/redirect.rb +85 -0
- data/lib/innate/helper/render.rb +152 -0
- data/lib/innate/helper/send_file.rb +26 -0
- data/lib/innate/log.rb +20 -0
- data/lib/innate/log/color_formatter.rb +49 -0
- data/lib/innate/log/hub.rb +77 -0
- data/lib/innate/middleware_compiler.rb +65 -0
- data/lib/innate/mock.rb +49 -0
- data/lib/innate/node.rb +1029 -0
- data/lib/innate/options.rb +37 -0
- data/lib/innate/options/dsl.rb +205 -0
- data/lib/innate/options/stub.rb +7 -0
- data/lib/innate/request.rb +141 -0
- data/lib/innate/response.rb +24 -0
- data/lib/innate/route.rb +114 -0
- data/lib/innate/session.rb +133 -0
- data/lib/innate/session/flash.rb +94 -0
- data/lib/innate/spec.rb +1 -0
- data/lib/innate/spec/bacon.rb +28 -0
- data/lib/innate/state.rb +26 -0
- data/lib/innate/state/accessor.rb +130 -0
- data/lib/innate/traited.rb +90 -0
- data/lib/innate/trinity.rb +18 -0
- data/lib/innate/version.rb +3 -0
- data/lib/innate/view.rb +97 -0
- data/lib/innate/view/erb.rb +14 -0
- data/lib/innate/view/etanni.rb +33 -0
- data/lib/innate/view/none.rb +9 -0
- data/spec/example/app/retro_games.rb +30 -0
- data/spec/example/hello.rb +13 -0
- data/spec/example/link.rb +25 -0
- data/spec/example/provides.rb +16 -0
- data/spec/example/session.rb +22 -0
- data/spec/helper.rb +10 -0
- data/spec/innate/action/layout.rb +121 -0
- data/spec/innate/action/layout/file_layout.xhtml +1 -0
- data/spec/innate/cache/common.rb +47 -0
- data/spec/innate/cache/marshal.rb +5 -0
- data/spec/innate/cache/memory.rb +5 -0
- data/spec/innate/cache/yaml.rb +5 -0
- data/spec/innate/dynamap.rb +22 -0
- data/spec/innate/helper.rb +86 -0
- data/spec/innate/helper/aspect.rb +75 -0
- data/spec/innate/helper/cgi.rb +37 -0
- data/spec/innate/helper/flash.rb +115 -0
- data/spec/innate/helper/link.rb +139 -0
- data/spec/innate/helper/redirect.rb +171 -0
- data/spec/innate/helper/render.rb +165 -0
- data/spec/innate/helper/send_file.rb +21 -0
- data/spec/innate/helper/view/aspect_hello.xhtml +1 -0
- data/spec/innate/helper/view/locals.xhtml +1 -0
- data/spec/innate/helper/view/loop.xhtml +4 -0
- data/spec/innate/helper/view/num.xhtml +1 -0
- data/spec/innate/helper/view/partial.xhtml +1 -0
- data/spec/innate/helper/view/recursive.xhtml +7 -0
- data/spec/innate/mock.rb +84 -0
- data/spec/innate/modes.rb +61 -0
- data/spec/innate/node/mapping.rb +37 -0
- data/spec/innate/node/node.rb +135 -0
- data/spec/innate/node/resolve.rb +82 -0
- data/spec/innate/node/view/another_layout/another_layout.xhtml +3 -0
- data/spec/innate/node/view/bar.xhtml +1 -0
- data/spec/innate/node/view/foo.html.xhtml +1 -0
- data/spec/innate/node/view/only_view.xhtml +1 -0
- data/spec/innate/node/view/with_layout.xhtml +1 -0
- data/spec/innate/node/wrap_action_call.rb +83 -0
- data/spec/innate/options.rb +123 -0
- data/spec/innate/parameter.rb +154 -0
- data/spec/innate/provides.rb +99 -0
- data/spec/innate/provides/list.html.xhtml +1 -0
- data/spec/innate/provides/list.txt.xhtml +1 -0
- data/spec/innate/request.rb +79 -0
- data/spec/innate/route.rb +135 -0
- data/spec/innate/session.rb +58 -0
- data/spec/innate/traited.rb +55 -0
- data/tasks/authors.rake +30 -0
- data/tasks/bacon.rake +66 -0
- data/tasks/changelog.rake +18 -0
- data/tasks/gem.rake +22 -0
- data/tasks/gem_setup.rake +99 -0
- data/tasks/grancher.rake +12 -0
- data/tasks/manifest.rake +4 -0
- data/tasks/rcov.rake +19 -0
- data/tasks/release.rake +53 -0
- data/tasks/reversion.rake +8 -0
- data/tasks/setup.rake +6 -0
- data/tasks/ycov.rake +84 -0
- metadata +218 -0
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'spec/helper'
|
2
|
+
|
3
|
+
class SpecSession
|
4
|
+
Innate.node('/').provide(:html, :None)
|
5
|
+
|
6
|
+
def index
|
7
|
+
'No session here'
|
8
|
+
end
|
9
|
+
|
10
|
+
def init
|
11
|
+
session[:counter] = 0
|
12
|
+
end
|
13
|
+
|
14
|
+
def view
|
15
|
+
session[:counter]
|
16
|
+
end
|
17
|
+
|
18
|
+
def increment
|
19
|
+
session[:counter] += 1
|
20
|
+
end
|
21
|
+
|
22
|
+
def decrement
|
23
|
+
session[:counter] -= 1
|
24
|
+
end
|
25
|
+
|
26
|
+
def reset
|
27
|
+
session.clear
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe Innate::Session do
|
32
|
+
behaves_like :rack_test
|
33
|
+
|
34
|
+
should 'initiate session as needed' do
|
35
|
+
get '/'
|
36
|
+
last_response.body.should == 'No session here'
|
37
|
+
last_response['Set-Cookie'].should == nil
|
38
|
+
|
39
|
+
get('/init')
|
40
|
+
last_response.body.should == '0'
|
41
|
+
|
42
|
+
1.upto(10) do |n|
|
43
|
+
get('/increment').body.should == n.to_s
|
44
|
+
end
|
45
|
+
|
46
|
+
get('/reset')
|
47
|
+
get('/view').body.should == ''
|
48
|
+
get('/init').body.should == '0'
|
49
|
+
|
50
|
+
-1.downto(-10) do |n|
|
51
|
+
get('/decrement').body.should == n.to_s
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
should 'expose sid method' do
|
56
|
+
Innate::Current.session.sid.should.not.be.empty
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'spec/helper'
|
2
|
+
|
3
|
+
class Animal
|
4
|
+
include Innate::Traited
|
5
|
+
end
|
6
|
+
|
7
|
+
class Cat < Animal
|
8
|
+
end
|
9
|
+
|
10
|
+
class Tiger < Animal
|
11
|
+
end
|
12
|
+
|
13
|
+
describe Innate::Traited do
|
14
|
+
should 'set trait on superclass' do
|
15
|
+
Animal.trait :wild => :depends
|
16
|
+
Animal.trait[:wild].should == :depends
|
17
|
+
end
|
18
|
+
|
19
|
+
should 'reset trait on superclass' do
|
20
|
+
Animal.trait :wild => :naturally
|
21
|
+
Animal.trait[:wild].should == :naturally
|
22
|
+
end
|
23
|
+
|
24
|
+
should 'set trait on instance' do
|
25
|
+
animal = Animal.new
|
26
|
+
animal.trait[:wild].should == nil
|
27
|
+
animal.trait :wild => :depends
|
28
|
+
animal.trait[:wild].should == :depends
|
29
|
+
end
|
30
|
+
|
31
|
+
should 'get ancestral trait from instance' do
|
32
|
+
animal = Animal.new
|
33
|
+
animal.ancestral_trait[:wild].should == :naturally
|
34
|
+
animal.trait :wild => :depends
|
35
|
+
animal.ancestral_trait[:wild].should == :depends
|
36
|
+
end
|
37
|
+
|
38
|
+
should 'set trait on subclass' do
|
39
|
+
Cat.trait :sound => :meow
|
40
|
+
Cat.trait[:sound].should == :meow
|
41
|
+
end
|
42
|
+
|
43
|
+
should 'not modify traits of other classes' do
|
44
|
+
Animal.trait[:sound].should == nil
|
45
|
+
Tiger.trait[:sound].should == nil
|
46
|
+
end
|
47
|
+
|
48
|
+
should 'get ancestral trait from class in superclass' do
|
49
|
+
Cat.ancestral_trait[:wild].should == :naturally
|
50
|
+
end
|
51
|
+
|
52
|
+
should 'get ancestral trait from instance in superclass' do
|
53
|
+
Cat.new.ancestral_trait[:wild].should == :naturally
|
54
|
+
end
|
55
|
+
end
|
data/tasks/authors.rake
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# Once git has a fix for the glibc in handling .mailmap and another fix for
|
2
|
+
# allowing empty mail address to be mapped in .mailmap we won't have to handle
|
3
|
+
# them manually.
|
4
|
+
|
5
|
+
desc 'Update AUTHORS'
|
6
|
+
task :authors do
|
7
|
+
authors = Hash.new(0)
|
8
|
+
|
9
|
+
`git shortlog -nse`.scan(/(\d+)\s(.+)\s<(.*)>$/) do |count, name, email|
|
10
|
+
case name
|
11
|
+
when "ahoward"
|
12
|
+
name, email = "Ara T. Howard", "ara.t.howard@gmail.com"
|
13
|
+
when "Martin Hilbig blueonyx@dev-area.net"
|
14
|
+
name, email = "Martin Hilbig", "blueonyx@dev-area.net"
|
15
|
+
when "Michael Fellinger m.fellinger@gmail.com"
|
16
|
+
name, email = "Michael Fellinger", "m.fellinger@gmail.com"
|
17
|
+
end
|
18
|
+
|
19
|
+
authors[[name, email]] += count.to_i
|
20
|
+
end
|
21
|
+
|
22
|
+
File.open('AUTHORS', 'w+') do |io|
|
23
|
+
io.puts "Following persons have contributed to #{GEMSPEC.name}."
|
24
|
+
io.puts '(Sorted by number of submitted patches, then alphabetically)'
|
25
|
+
io.puts ''
|
26
|
+
authors.sort_by{|(n,e),c| [-c, n.downcase] }.each do |(name, email), count|
|
27
|
+
io.puts("%6d %s <%s>" % [count, name, email])
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/tasks/bacon.rake
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
desc 'Run all bacon specs with pretty output'
|
2
|
+
task :bacon => :setup do
|
3
|
+
require 'open3'
|
4
|
+
require 'scanf'
|
5
|
+
require 'matrix'
|
6
|
+
|
7
|
+
specs = PROJECT_SPECS
|
8
|
+
|
9
|
+
some_failed = false
|
10
|
+
specs_size = specs.size
|
11
|
+
len = specs.map{|s| s.size }.sort.last
|
12
|
+
total_tests = total_assertions = total_failures = total_errors = 0
|
13
|
+
totals = Vector[0, 0, 0, 0]
|
14
|
+
|
15
|
+
red, yellow, green = "\e[31m%s\e[0m", "\e[33m%s\e[0m", "\e[32m%s\e[0m"
|
16
|
+
left_format = "%4d/%d: %-#{len + 11}s"
|
17
|
+
spec_format = "%d specifications (%d requirements), %d failures, %d errors"
|
18
|
+
|
19
|
+
specs.each_with_index do |spec, idx|
|
20
|
+
print(left_format % [idx + 1, specs_size, spec])
|
21
|
+
|
22
|
+
Open3.popen3(RUBY, spec) do |sin, sout, serr|
|
23
|
+
out = sout.read.strip
|
24
|
+
err = serr.read.strip
|
25
|
+
|
26
|
+
# this is conventional, see spec/innate/state/fiber.rb for usage
|
27
|
+
if out =~ /^Bacon::Error: (needed .*)/
|
28
|
+
puts(yellow % ("%6s %s" % ['', $1]))
|
29
|
+
else
|
30
|
+
total = nil
|
31
|
+
|
32
|
+
out.each_line do |line|
|
33
|
+
scanned = line.scanf(spec_format)
|
34
|
+
|
35
|
+
next unless scanned.size == 4
|
36
|
+
|
37
|
+
total = Vector[*scanned]
|
38
|
+
break
|
39
|
+
end
|
40
|
+
|
41
|
+
if total
|
42
|
+
totals += total
|
43
|
+
tests, assertions, failures, errors = total_array = total.to_a
|
44
|
+
|
45
|
+
if tests > 0 && failures + errors == 0
|
46
|
+
puts((green % "%6d passed") % tests)
|
47
|
+
else
|
48
|
+
some_failed = true
|
49
|
+
puts(red % " failed")
|
50
|
+
puts out unless out.empty?
|
51
|
+
puts err unless err.empty?
|
52
|
+
end
|
53
|
+
else
|
54
|
+
some_failed = true
|
55
|
+
puts(red % " failed")
|
56
|
+
puts out unless out.empty?
|
57
|
+
puts err unless err.empty?
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
total_color = some_failed ? red : green
|
64
|
+
puts(total_color % (spec_format % totals.to_a))
|
65
|
+
exit 1 if some_failed
|
66
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
desc 'update changelog'
|
2
|
+
task :changelog do
|
3
|
+
File.open('CHANGELOG', 'w+') do |changelog|
|
4
|
+
`git log -z --abbrev-commit`.split("\0").each do |commit|
|
5
|
+
next if commit =~ /^Merge: \d*/
|
6
|
+
ref, author, time, _, title, _, message = commit.split("\n", 7)
|
7
|
+
ref = ref[/commit ([0-9a-f]+)/, 1]
|
8
|
+
author = author[/Author: (.*)/, 1].strip
|
9
|
+
time = Time.parse(time[/Date: (.*)/, 1]).utc
|
10
|
+
title.strip!
|
11
|
+
|
12
|
+
changelog.puts "[#{ref} | #{time}] #{author}"
|
13
|
+
changelog.puts '', " * #{title}"
|
14
|
+
changelog.puts '', message.rstrip if message
|
15
|
+
changelog.puts
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/tasks/gem.rake
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rake/gempackagetask'
|
2
|
+
|
3
|
+
task :gemspec => [:manifest, :changelog] do
|
4
|
+
gemspec_file = "#{GEMSPEC.name}.gemspec"
|
5
|
+
File.open(gemspec_file, 'w+'){|gs| gs.puts(GEMSPEC.to_ruby) }
|
6
|
+
end
|
7
|
+
|
8
|
+
desc "package and install from gemspec"
|
9
|
+
task :install => [:gemspec] do
|
10
|
+
sh "gem build #{GEMSPEC.name}.gemspec"
|
11
|
+
sh "gem install #{GEMSPEC.name}-#{GEMSPEC.version}.gem"
|
12
|
+
end
|
13
|
+
|
14
|
+
desc "uninstall the gem"
|
15
|
+
task :uninstall => [:clean] do
|
16
|
+
sh %{gem uninstall -x #{GEMSPEC.name}}
|
17
|
+
end
|
18
|
+
|
19
|
+
Rake::GemPackageTask.new(GEMSPEC) do |p|
|
20
|
+
p.need_tar = true
|
21
|
+
p.need_zip = true
|
22
|
+
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
task :gem_setup do
|
2
|
+
class GemSetup
|
3
|
+
def initialize(options = {}, &block)
|
4
|
+
@gems = []
|
5
|
+
@options = options.dup
|
6
|
+
@verbose = @options.delete(:verbose)
|
7
|
+
|
8
|
+
run(&block)
|
9
|
+
end
|
10
|
+
|
11
|
+
def run(&block)
|
12
|
+
return unless block_given?
|
13
|
+
instance_eval(&block)
|
14
|
+
setup
|
15
|
+
end
|
16
|
+
|
17
|
+
def gem(name, version = nil, options = {})
|
18
|
+
if version.respond_to?(:merge!)
|
19
|
+
options = version
|
20
|
+
else
|
21
|
+
options[:version] = version
|
22
|
+
end
|
23
|
+
|
24
|
+
@gems << [name, options]
|
25
|
+
end
|
26
|
+
|
27
|
+
# all gems defined, let's try to load/install them
|
28
|
+
def setup
|
29
|
+
require 'rubygems'
|
30
|
+
require 'rubygems/dependency_installer'
|
31
|
+
|
32
|
+
@gems.each do |name, options|
|
33
|
+
setup_gem(name, options)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def setup_gemspec(gemspec)
|
38
|
+
gemspec.dependencies.each do |dependency|
|
39
|
+
dependency.version_requirements.as_list.each do |version|
|
40
|
+
gem(dependency.name, version)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
setup
|
45
|
+
end
|
46
|
+
|
47
|
+
# first try to activate, install and try to activate again if activation
|
48
|
+
# fails the first time
|
49
|
+
def setup_gem(name, options)
|
50
|
+
version = [options[:version]].compact
|
51
|
+
lib_name = options[:lib] || name
|
52
|
+
|
53
|
+
log "activating #{name}"
|
54
|
+
|
55
|
+
Gem.activate(name, *version)
|
56
|
+
rescue LoadError
|
57
|
+
install_gem(name, options)
|
58
|
+
Gem.activate(name, *version)
|
59
|
+
end
|
60
|
+
|
61
|
+
# tell rubygems to install a gem
|
62
|
+
def install_gem(name, options)
|
63
|
+
installer = Gem::DependencyInstaller.new(options)
|
64
|
+
|
65
|
+
temp_argv(options[:extconf]) do
|
66
|
+
log "Installing #{name}"
|
67
|
+
installer.install(name, options[:version])
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
# prepare ARGV for rubygems installer
|
72
|
+
def temp_argv(extconf)
|
73
|
+
if extconf ||= @options[:extconf]
|
74
|
+
old_argv = ARGV.clone
|
75
|
+
ARGV.replace(extconf.split(' '))
|
76
|
+
end
|
77
|
+
|
78
|
+
yield
|
79
|
+
|
80
|
+
ensure
|
81
|
+
ARGV.replace(old_argv) if extconf
|
82
|
+
end
|
83
|
+
|
84
|
+
private
|
85
|
+
|
86
|
+
def log(msg)
|
87
|
+
return unless @verbose
|
88
|
+
|
89
|
+
if defined?(Log)
|
90
|
+
Log.info(msg)
|
91
|
+
else
|
92
|
+
puts(msg)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def rubyforge; 'http://gems.rubyforge.org/' end
|
97
|
+
def github; 'http://gems.github.com/' end
|
98
|
+
end
|
99
|
+
end
|
data/tasks/grancher.rake
ADDED
data/tasks/manifest.rake
ADDED
data/tasks/rcov.rake
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
desc 'code coverage'
|
2
|
+
task :rcov => :clean do
|
3
|
+
specs = Dir['spec/innate/**/*.rb']
|
4
|
+
specs -= Dir['spec/innate/cache/common.rb']
|
5
|
+
|
6
|
+
# we ignore adapter as this has extensive specs in rack already.
|
7
|
+
ignore = %w[ gem rack bacon innate/adapter\.rb ]
|
8
|
+
ignore << 'fiber\.rb' if RUBY_VERSION < '1.9'
|
9
|
+
|
10
|
+
ignored = ignore.join(',')
|
11
|
+
|
12
|
+
cmd = "rcov --aggregate coverage.data --sort coverage -t --%s -x '#{ignored}' %s"
|
13
|
+
|
14
|
+
while spec = specs.shift
|
15
|
+
puts '', "Gather coverage for #{spec} ..."
|
16
|
+
html = specs.empty? ? 'html' : 'no-html'
|
17
|
+
sh(cmd % [html, spec])
|
18
|
+
end
|
19
|
+
end
|
data/tasks/release.rake
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
namespace :release do
|
2
|
+
task :all => [:release_github, :release_rubyforge]
|
3
|
+
|
4
|
+
desc 'Display instructions to release on github'
|
5
|
+
task :github => [:reversion, :authors, :gemspec] do
|
6
|
+
name, version = GEMSPEC.name, GEMSPEC.version
|
7
|
+
|
8
|
+
puts <<INSTRUCTIONS
|
9
|
+
First add the relevant files:
|
10
|
+
|
11
|
+
git add AUTHORS MANIFEST CHANGELOG #{name}.gemspec lib/#{name}/version.rb
|
12
|
+
|
13
|
+
Then commit them, tag the commit, and push:
|
14
|
+
|
15
|
+
git commit -m 'Version #{version}'
|
16
|
+
git tag -a -m '#{version}' '#{version}'
|
17
|
+
git push
|
18
|
+
|
19
|
+
INSTRUCTIONS
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
# TODO: Not tested
|
24
|
+
desc 'Display instructions to release on rubyforge'
|
25
|
+
task :rubyforge => [:reversion, :authors, :gemspec, :package] do
|
26
|
+
name, version = GEMSPEC.name, GEMSPEC.version
|
27
|
+
|
28
|
+
puts <<INSTRUCTIONS
|
29
|
+
To publish to rubyforge do following:
|
30
|
+
|
31
|
+
rubyforge login
|
32
|
+
rubyforge add_release #{name} #{name} '#{version}' pkg/#{name}-#{version}.gem
|
33
|
+
|
34
|
+
|
35
|
+
After you have done these steps, see:
|
36
|
+
|
37
|
+
rake release:rubyforge_archives
|
38
|
+
|
39
|
+
INSTRUCTIONS
|
40
|
+
end
|
41
|
+
|
42
|
+
desc 'Display instructions to add archives after release:rubyforge'
|
43
|
+
task :rubyforge_archives do
|
44
|
+
puts "Adding archives for distro packagers is:", ""
|
45
|
+
name, version = GEMSPEC.name, GEMSPEC.version
|
46
|
+
|
47
|
+
Dir["pkg/#{name}-#{version}.{tgz,zip}"].each do |file|
|
48
|
+
puts "rubyforge add_file #{name} #{name} '#{version}' '#{file}'"
|
49
|
+
end
|
50
|
+
|
51
|
+
puts
|
52
|
+
end
|
53
|
+
end
|