root/tags/0.1.1/Rakefile

Revision 167, 4.2 kB (checked in by e.@brainspl.at, 2 years ago)

Added feature for chunked encoding for streaming. Thanks to mathieul@gmail.com for the idea. I implemented it in a thread safe way so multiple streams can be rendered at once. Very cool stuff. closes #12

Line 
1 require 'rake'
2 require 'rake/clean'
3 require 'rake/gempackagetask'
4 require 'rake/rdoctask'
5 require 'rake/testtask'
6 require 'spec/rake/spectask'
7 require 'code_statistics'
8 require 'fileutils'
9 def __DIR__
10   File.dirname(__FILE__)
11 end
12
13 require __DIR__+'/tools/rakehelp'
14 include FileUtils
15
16
17 NAME = "merb"
18 VERS = "0.1.1"
19 CLEAN.include ['**/.*.sw?', '*.gem', '.config']
20 RDOC_OPTS = ['--quiet', '--title', "Merb Documentation",
21   "--opname", "index.html",
22   "--line-numbers", 'TODO',
23   "--main", "README",
24   "--inline-source"]
25
26 setup_clean [ "pkg", "lib/*.bundle", "*.gem",
27             "doc", ".config", "examples/sample_app/dist/public/files/**/*", 'examples/sample_app/log/*']
28
29
30 desc "Packages up Merb."
31 task :default => [:package]
32 task :merb => [:clean, :rdoc, :package]
33
34 task :doc => [:rdoc]
35
36
37 Rake::RDocTask.new do |rdoc|
38   rdoc.rdoc_dir = 'doc/rdoc'
39   rdoc.options += RDOC_OPTS
40   rdoc.main = "README"
41   rdoc.title = "Merb Documentation"
42   rdoc.rdoc_files.add ['README', 'LICENSE', 'TODO', 'lib/**/*.rb']
43 end
44
45 spec = Gem::Specification.new do |s|
46   s.name = NAME
47   s.version = VERS
48   s.platform = Gem::Platform::RUBY
49   s.has_rdoc = true
50   s.extra_rdoc_files = ["README", "LICENSE", 'TODO']
51   s.rdoc_options += RDOC_OPTS +
52     ['--exclude', '^(app|uploads)']
53   s.summary = "Merb == Mongrel + Erb. Pocket rocket web framework."
54   s.description = s.summary
55   s.author = "Ezra Zygmuntowicz"
56   s.email = 'ez@engineyard.com'
57   s.homepage = 'http://merb.devjavu.com'
58   s.executables = ['merb']
59
60   s.add_dependency('mongrel')
61   s.add_dependency('erubis')
62   s.add_dependency('json')
63   s.required_ruby_version = '>= 1.8.4'
64
65   s.files = %w(LICENSE README Rakefile TODO) + Dir.glob("{bin,test,lib,examples}/**/*")
66      
67   s.require_path = "lib"
68   s.bindir = "bin"
69 end
70
71 Rake::GemPackageTask.new(spec) do |p|
72   #p.need_tar = true
73   p.gem_spec = spec
74 end
75
76 task :install do
77   sh %{rake package}
78   sh %{sudo gem install pkg/#{NAME}-#{VERS}}
79 end
80
81 task :uninstall => [:clean] do
82   sh %{sudo gem uninstall #{NAME}}
83 end
84
85 desc "rdoc to rubyforge"
86 task :doc_rforge do
87   sh %{rake doc}
88   sh %{sudo chmod -R 755 doc/rdoc}
89   sh %{scp -r -p doc/rdoc/* ezmobius@rubyforge.org:/var/www/gforge-projects/merb}
90 end
91
92
93 desc "Pack skeleton app as a tar.gz file"
94 task :skeleton do
95   require 'archive/tar/minitar'
96   include Archive::Tar
97   Find.find(File.join(__DIR__,'examples/skeleton')) do |f|
98     FileUtils.rm_rf(f) if /\.svn$/ =~ f
99   end
100   File.open(File.join(__DIR__,'examples/skeleton.tar'), 'wb') do |tar|
101     Dir.chdir 'examples/skeleton'
102     Minitar.pack('.', tar, true)
103   end
104 end 
105
106 desc 'Run unit tests'
107 Rake::TestTask.new('test_unit') do |t|
108   t.libs << 'test'
109   t.pattern = 'test/unit/*_test.rb'
110   t.verbose = true
111 end
112
113 desc 'Run functional tests'
114 Rake::TestTask.new('test_functional') do |t|
115   t.libs << 'test'
116   t.pattern = 'test/functional/*_test.rb'
117   t.verbose = true
118 end
119
120 desc 'Run all tests'
121 Rake::TestTask.new('test') do |t|
122   t.libs << 'test'
123   t.pattern = 'test/**/*_test.rb'
124   t.verbose = true
125 end
126
127 desc 'Run all tests, specs and finish with rcov'
128 task :aok do
129   sh %{rake rcov}
130   sh %{rake spec}
131 end
132
133 desc "Run all specs"
134 Spec::Rake::SpecTask.new('specs') do |t|
135   t.spec_opts = ["--format", "specdoc"]
136   t.libs = ['lib', 'server/lib' ]
137   t.spec_files = FileList['specs/**/*_spec.rb']
138 end
139
140 desc "RCov"
141 Spec::Rake::SpecTask.new('rcov') do |t|
142   t.spec_files = FileList['specs/**/*_spec.rb']
143   t.libs = ['lib', 'server/lib' ]
144   t.rcov = true
145 end
146
147 ##############################################################################
148 # Statistics
149 ##############################################################################
150
151 STATS_DIRECTORIES = [
152   %w(Code               lib/),
153   %w(Unit\ tests        test/unit),
154   %w(Functional\ tests  test/functional)
155 ].collect { |name, dir| [ name, "./#{dir}" ] }.select { |name, dir| File.directory?(dir) }
156
157 desc "Report code statistics (KLOCs, etc) from the application"
158 task :stats do
159   #require 'extra/stats'
160   verbose = true
161   CodeStatistics.new(*STATS_DIRECTORIES).to_s
162 end
163
164 ##############################################################################
165 # SVN
166 ##############################################################################
167
168 desc "Add new files to subversion"
169 task :svn_add do
170    system "svn status | grep '^\?' | sed -e 's/? *//' | sed -e 's/ /\ /g' | xargs svn add"
171 end
Note: See TracBrowser for help on using the browser.