mole 1.0.12 → 1.0.15

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.
Files changed (131) hide show
  1. metadata +24 -146
  2. data/History.txt +0 -17
  3. data/Manifest.txt +0 -132
  4. data/README.txt +0 -216
  5. data/Rakefile +0 -46
  6. data/config/database.yml +0 -21
  7. data/config/test_database.yml +0 -69
  8. data/lib/mole.rb +0 -260
  9. data/lib/mole/db/migrate.rb +0 -90
  10. data/lib/mole/e_mole.rb +0 -75
  11. data/lib/mole/logger.rb +0 -134
  12. data/lib/mole/models/mole_feature.rb +0 -58
  13. data/lib/mole/models/mole_log.rb +0 -31
  14. data/lib/mole/module.rb +0 -292
  15. data/lib/mole/moler.rb +0 -71
  16. data/lib/mole/utils/frameworks.rb +0 -53
  17. data/lib/mole/version.rb +0 -15
  18. data/samples/merbapp/README +0 -14
  19. data/samples/merbapp/Rakefile +0 -124
  20. data/samples/merbapp/app/controllers/application.rb +0 -3
  21. data/samples/merbapp/app/controllers/exceptions.rb +0 -13
  22. data/samples/merbapp/app/controllers/moled.rb +0 -25
  23. data/samples/merbapp/app/helpers/global_helper.rb +0 -5
  24. data/samples/merbapp/app/mailers/views/layout/application.html.erb +0 -1
  25. data/samples/merbapp/app/mailers/views/layout/application.text.erb +0 -1
  26. data/samples/merbapp/app/parts/views/layout/application.html.erb +0 -1
  27. data/samples/merbapp/app/views/exceptions/internal_server_error.html.erb +0 -216
  28. data/samples/merbapp/app/views/exceptions/not_acceptable.html.erb +0 -38
  29. data/samples/merbapp/app/views/exceptions/not_found.html.erb +0 -40
  30. data/samples/merbapp/app/views/layout/application.html.erb +0 -11
  31. data/samples/merbapp/app/views/moled/index.html.erb +0 -5
  32. data/samples/merbapp/app/views/moled/result.html.erb +0 -5
  33. data/samples/merbapp/config/boot.rb +0 -11
  34. data/samples/merbapp/config/dependencies.rb +0 -41
  35. data/samples/merbapp/config/environments/development.rb +0 -1
  36. data/samples/merbapp/config/environments/production.rb +0 -1
  37. data/samples/merbapp/config/environments/test.rb +0 -1
  38. data/samples/merbapp/config/merb.yml +0 -82
  39. data/samples/merbapp/config/merb_init.rb +0 -26
  40. data/samples/merbapp/config/mole_config.rb +0 -33
  41. data/samples/merbapp/config/router.rb +0 -38
  42. data/samples/merbapp/config/upload.conf +0 -0
  43. data/samples/merbapp/public/images/merb.jpg +0 -0
  44. data/samples/merbapp/public/merb.fcgi +0 -6
  45. data/samples/merbapp/public/stylesheets/master.css +0 -119
  46. data/samples/merbapp/script/destroy +0 -32
  47. data/samples/merbapp/script/generate +0 -32
  48. data/samples/merbapp/script/stop_merb +0 -13
  49. data/samples/merbapp/spec/spec_helper.rb +0 -15
  50. data/samples/merbapp/test/test_helper.rb +0 -14
  51. data/samples/railsapp/README +0 -14
  52. data/samples/railsapp/Rakefile +0 -10
  53. data/samples/railsapp/app/controllers/application.rb +0 -13
  54. data/samples/railsapp/app/controllers/moled_controller.rb +0 -23
  55. data/samples/railsapp/app/helpers/application_helper.rb +0 -3
  56. data/samples/railsapp/app/views/moled/index.html.erb +0 -5
  57. data/samples/railsapp/app/views/moled/result.html.erb +0 -5
  58. data/samples/railsapp/config/boot.rb +0 -109
  59. data/samples/railsapp/config/database.yml +0 -13
  60. data/samples/railsapp/config/environment.rb +0 -59
  61. data/samples/railsapp/config/environments/development.rb +0 -18
  62. data/samples/railsapp/config/environments/production.rb +0 -20
  63. data/samples/railsapp/config/environments/test.rb +0 -22
  64. data/samples/railsapp/config/initializers/inflections.rb +0 -10
  65. data/samples/railsapp/config/initializers/mime_types.rb +0 -5
  66. data/samples/railsapp/config/initializers/mole.rb +0 -10
  67. data/samples/railsapp/config/moles/mole_config.rb +0 -44
  68. data/samples/railsapp/config/routes.rb +0 -35
  69. data/samples/railsapp/doc/README_FOR_APP +0 -2
  70. data/samples/railsapp/public/.htaccess +0 -40
  71. data/samples/railsapp/public/404.html +0 -30
  72. data/samples/railsapp/public/422.html +0 -30
  73. data/samples/railsapp/public/500.html +0 -30
  74. data/samples/railsapp/public/dispatch.cgi +0 -10
  75. data/samples/railsapp/public/dispatch.fcgi +0 -24
  76. data/samples/railsapp/public/dispatch.rb +0 -10
  77. data/samples/railsapp/public/favicon.ico +0 -0
  78. data/samples/railsapp/public/images/rails.png +0 -0
  79. data/samples/railsapp/public/javascripts/application.js +0 -2
  80. data/samples/railsapp/public/javascripts/controls.js +0 -963
  81. data/samples/railsapp/public/javascripts/dragdrop.js +0 -972
  82. data/samples/railsapp/public/javascripts/effects.js +0 -1120
  83. data/samples/railsapp/public/javascripts/prototype.js +0 -4225
  84. data/samples/railsapp/public/robots.txt +0 -5
  85. data/samples/railsapp/script/about +0 -3
  86. data/samples/railsapp/script/console +0 -3
  87. data/samples/railsapp/script/destroy +0 -3
  88. data/samples/railsapp/script/generate +0 -3
  89. data/samples/railsapp/script/performance/benchmarker +0 -3
  90. data/samples/railsapp/script/performance/profiler +0 -3
  91. data/samples/railsapp/script/performance/request +0 -3
  92. data/samples/railsapp/script/plugin +0 -3
  93. data/samples/railsapp/script/process/inspector +0 -3
  94. data/samples/railsapp/script/process/reaper +0 -3
  95. data/samples/railsapp/script/process/spawner +0 -3
  96. data/samples/railsapp/script/runner +0 -3
  97. data/samples/railsapp/script/server +0 -3
  98. data/samples/railsapp/test/test_helper.rb +0 -38
  99. data/samples/rubyapp/README +0 -22
  100. data/samples/rubyapp/bin/ruby_app +0 -35
  101. data/samples/rubyapp/config/mole_conf.rb +0 -31
  102. data/samples/rubyapp/lib/fred.rb +0 -22
  103. data/spec/config/auto_mole_config.rb +0 -26
  104. data/spec/config/mole_config.rb +0 -0
  105. data/spec/config/moles/fred_config.rb +0 -0
  106. data/spec/data/blee.rb +0 -64
  107. data/spec/db/migrate_spec.rb +0 -19
  108. data/spec/emole_spec.rb +0 -43
  109. data/spec/logger_spec.rb +0 -56
  110. data/spec/models/mole_feature_spec.rb +0 -48
  111. data/spec/models/mole_log_spec.rb +0 -62
  112. data/spec/module_spec.rb +0 -229
  113. data/spec/mole_spec.rb +0 -135
  114. data/spec/moler_spec.rb +0 -77
  115. data/spec/spec_helper.rb +0 -76
  116. data/spec/utils/framework_spec.rb +0 -99
  117. data/tasks/ann.rake +0 -76
  118. data/tasks/annotations.rake +0 -22
  119. data/tasks/doc.rake +0 -48
  120. data/tasks/gem.rake +0 -110
  121. data/tasks/manifest.rake +0 -49
  122. data/tasks/mole.rake +0 -115
  123. data/tasks/post_load.rake +0 -26
  124. data/tasks/rubyforge.rake +0 -57
  125. data/tasks/setup.rb +0 -227
  126. data/tasks/spec.rake +0 -54
  127. data/tasks/svn.rake +0 -44
  128. data/tasks/test.rake +0 -38
  129. data/templates/mole/e_mole/exception_alerts.rhtml +0 -14
  130. data/templates/mole/e_mole/feature_alerts.rhtml +0 -11
  131. data/templates/mole/e_mole/perf_alerts.rhtml +0 -12
@@ -1,49 +0,0 @@
1
- # $Id$
2
-
3
- require 'find'
4
-
5
- namespace :manifest do
6
-
7
- desc 'Verify the manifest'
8
- task :check do
9
- fn = PROJ.manifest_file + '.tmp'
10
- files = manifest_files
11
-
12
- File.open(fn, 'w') {|fp| fp.puts files}
13
- lines = %x(#{DIFF} -du #{PROJ.manifest_file} #{fn}).split("\n")
14
- if HAVE_FACETS_ANSICODE and ENV.has_key?('TERM')
15
- lines.map! do |line|
16
- case line
17
- when %r/^(-{3}|\+{3})/; nil
18
- when %r/^@/; ANSICode.blue line
19
- when %r/^\+/; ANSICode.green line
20
- when %r/^\-/; ANSICode.red line
21
- else line end
22
- end
23
- end
24
- puts lines.compact
25
- rm fn rescue nil
26
- end
27
-
28
- desc 'Create a new manifest'
29
- task :create do
30
- files = manifest_files
31
- unless test(?f, PROJ.manifest_file)
32
- files << PROJ.manifest_file
33
- files.sort!
34
- end
35
- File.open(PROJ.manifest_file, 'w') {|fp| fp.puts files}
36
- end
37
-
38
- task :assert do
39
- files = manifest_files
40
- manifest = File.read(PROJ.manifest_file).split($/)
41
- raise "ERROR: #{PROJ.manifest_file} is out of date" unless files == manifest
42
- end
43
-
44
- end # namespace :manifest
45
-
46
- desc 'Alias to manifest:check'
47
- task :manifest => 'manifest:check'
48
-
49
- # EOF
@@ -1,115 +0,0 @@
1
- # -----------------------------------------------------------------------------
2
- # MOLE Related rake tasks
3
- # Mole db setup upon installation
4
- # -----------------------------------------------------------------------------
5
- require 'ftools'
6
-
7
- namespace :mole do
8
- namespace :db do
9
- task :environment do
10
- require 'rubygems'
11
-
12
- gem "activerecord", "=2.0.2"
13
- require 'active_record'
14
-
15
- environment = ENV['MOLE_ENV'] || "test"
16
- db_config = YAML.load_file( File.join( File.dirname(__FILE__), "..", "config", "test_database.yml") )[environment]
17
- ::ActiveRecord::Base.establish_connection(db_config)
18
- end
19
-
20
- # ---------------------------------------------------------------------
21
- # Create mole persistence tables and pre-populate
22
- desc 'Create the database tables needed for the mole plugin.'
23
- task :migrate_up => :environment do
24
- # Create the mole_features table if it doesn't exist
25
- unless ActiveRecord::Schema.tables.include?('mole_features')
26
- ActiveRecord::Schema.create_table('mole_features') do |t|
27
- t.column :name, :string
28
- t.column :context, :string
29
- t.column :app_name, :string
30
- t.column :created_at, :datetime
31
- t.column :updated_at, :datetime
32
- end
33
- ActiveRecord::Schema.add_index( 'mole_features', 'name' )
34
-
35
- # Create some default features
36
- # MoleFeature.create :id => 0, :name => MoleFeature::ALL
37
- # MoleFeature.create :id => 1, :name => MoleFeature::EXCEPTION
38
- # MoleFeature.create :id => 2, :name => MoleFeature::PERFORMANCE
39
- end
40
-
41
- # Create the mole_logs table if it doesn't exist
42
- unless ActiveRecord::Schema.tables.include?('mole_logs')
43
- ActiveRecord::Schema.create_table('mole_logs') do |t|
44
- t.column :mole_feature_id, :integer
45
- t.column :user_id, :integer
46
- t.column :params, :string
47
- t.column :ip_address, :string
48
- t.column :browser_type, :string
49
- t.column :host_name, :string
50
- t.column :created_at, :datetime
51
- t.column :updated_at, :datetime
52
- end
53
- ActiveRecord::Schema.add_index( 'mole_logs', ['mole_feature_id','user_id'] )
54
- ActiveRecord::Schema.add_index( 'mole_logs', ['mole_feature_id','created_at'] )
55
- end
56
- end
57
-
58
- # -------------------------------------------------------------------------
59
- # Destroys mole persistence tables
60
- desc 'Drop the database tables needed for the mole plugin.'
61
- task :migrate_down => :environment do
62
- # Delete the mole_feature table
63
- if ActiveRecord::Schema.tables.include?('mole_features')
64
- ActiveRecord::Schema.drop_table('mole_features')
65
- end
66
-
67
- # Delete the mole_logs table
68
- if ActiveRecord::Schema.tables.include?('mole_logs')
69
- ActiveRecord::Schema.remove_index('mole_logs', ['mole_feature_id','user_id'] )
70
- ActiveRecord::Schema.drop_table('mole_logs')
71
- end
72
- end
73
- end
74
-
75
- # ---------------------------------------------------------------------------
76
- # Installs the mole plugin
77
- desc 'The task that is run when you first install the plugin.'
78
- task :install => :setup do
79
- # Copy over the sample mole.conf file to the default location
80
- destination = @plugin_base + '/../../../config'
81
- File.makedirs(destination) unless File.exists?(destination)
82
- unless File.exists?(destination + '/mole.conf')
83
- File.copy(@plugin_base + '/lib/mole.conf.sample', destination + '/mole.conf')
84
- end
85
-
86
- # Migrate the database
87
- Rake::Task["mole:migrate:up"].invoke
88
- end
89
-
90
- # ---------------------------------------------------------------------------
91
- # Removes the mole plugin and cleanup artifacts
92
- desc 'The task that is run when you want to remove the plugin.'
93
- task :remove => :setup do
94
- # Remove the database tables
95
- Rake::Task["mole:migrate:down"].invoke
96
-
97
- # Delete the default mole.conf file
98
- File.delete( "#{RAILS_ROOT}/config/mole.conf" )
99
- end
100
-
101
- # ---------------------------------------------------------------------------
102
- desc 'Setup plugin base dir'
103
- task :setup do
104
- @plugin_base = File.dirname(__FILE__) + '/..'
105
- end
106
-
107
- # ---------------------------------------------------------------------------
108
- # Upgrade task from MOLE version 0.002
109
- # This task will setup the extra mole features columns and reset the indexes
110
- # on the mole_features table.
111
- desc 'Ugrade the mole schema from version 0.002'
112
- task :upgrade do
113
- Rake::Task["mole:migrate:upgrade"].invoke
114
- end
115
- end
@@ -1,26 +0,0 @@
1
- # $Id$
2
-
3
- # This file does not define any rake tasks. It is used to load some project
4
- # settings if they are not defined by the user.
5
-
6
- PROJ.rdoc_exclude << "^#{Regexp.escape(PROJ.manifest_file)}$"
7
- PROJ.exclude << "^#{Regexp.escape(PROJ.ann_file)}$"
8
-
9
- PROJ.changes ||= paragraphs_of(PROJ.history_file, 0..1).join("\n\n")
10
-
11
- PROJ.description ||= paragraphs_of(PROJ.readme_file, 'description').join("\n\n")
12
-
13
- PROJ.summary ||= PROJ.description.split('.').first
14
-
15
- PROJ.files ||=
16
- if test(?f, PROJ.manifest_file)
17
- files = File.readlines(PROJ.manifest_file).map {|fn| fn.chomp.strip}
18
- files.delete ''
19
- files
20
- else [] end
21
-
22
- PROJ.executables ||= PROJ.files.find_all {|fn| fn =~ %r/^bin/}
23
-
24
- PROJ.rdoc_main ||= PROJ.readme_file
25
-
26
- # EOF
@@ -1,57 +0,0 @@
1
- # $Id$
2
-
3
- if PROJ.rubyforge_name && HAVE_RUBYFORGE
4
-
5
- require 'rubyforge'
6
- require 'rake/contrib/sshpublisher'
7
-
8
- namespace :gem do
9
- desc 'Package and upload to RubyForge'
10
- task :release => [:clobber, :package] do |t|
11
- v = ENV['VERSION'] or abort 'Must supply VERSION=x.y.z'
12
- abort "Versions don't match #{v} vs #{PROJ.version}" if v != PROJ.version
13
- pkg = "pkg/#{PROJ.spec.full_name}"
14
-
15
- if $DEBUG then
16
- puts "release_id = rf.add_release #{PROJ.rubyforge_name.inspect}, #{PROJ.name.inspect}, #{PROJ.version.inspect}, \"#{pkg}.tgz\""
17
- puts "rf.add_file #{PROJ.rubyforge_name.inspect}, #{PROJ.name.inspect}, release_id, \"#{pkg}.gem\""
18
- end
19
-
20
- rf = RubyForge.new
21
- puts 'Logging in'
22
- rf.login
23
-
24
- c = rf.userconfig
25
- c['release_notes'] = PROJ.description if PROJ.description
26
- c['release_changes'] = PROJ.changes if PROJ.changes
27
- c['preformatted'] = true
28
-
29
- files = [(PROJ.need_tar ? "#{pkg}.tgz" : nil),
30
- (PROJ.need_zip ? "#{pkg}.zip" : nil),
31
- "#{pkg}.gem"].compact
32
-
33
- puts "Releasing #{PROJ.name} v. #{PROJ.version}"
34
- rf.add_release PROJ.rubyforge_name, PROJ.name, PROJ.version, *files
35
- end
36
- end # namespace :gem
37
-
38
-
39
- namespace :doc do
40
- desc "Publish RDoc to RubyForge"
41
- task :release => %w(doc:clobber_rdoc doc:rdoc) do
42
- config = YAML.load(
43
- File.read(File.expand_path('~/.rubyforge/user-config.yml'))
44
- )
45
-
46
- host = "#{config['username']}@rubyforge.org"
47
- remote_dir = "/var/www/gforge-projects/#{PROJ.rubyforge_name}/"
48
- remote_dir << PROJ.rdoc_remote_dir if PROJ.rdoc_remote_dir
49
- local_dir = PROJ.rdoc_dir
50
-
51
- Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
52
- end
53
- end # namespace :doc
54
-
55
- end # if HAVE_RUBYFORGE
56
-
57
- # EOF
@@ -1,227 +0,0 @@
1
- # $Id$
2
-
3
- require 'rubygems'
4
- require 'rake'
5
- require 'rake/clean'
6
- require 'fileutils'
7
- require 'ostruct'
8
-
9
- PROJ = OpenStruct.new
10
-
11
- PROJ.name = nil
12
- PROJ.summary = nil
13
- PROJ.description = nil
14
- PROJ.changes = nil
15
- PROJ.authors = nil
16
- PROJ.email = nil
17
- PROJ.url = nil
18
- PROJ.version = ENV['VERSION'] || '0.0.0'
19
- PROJ.rubyforge_name = nil
20
- PROJ.exclude = %w(tmp$ bak$ ~$ CVS .svn/ ^pkg/ ^doc/)
21
- PROJ.release_name = ENV['RELEASE']
22
- PROJ.history_file = 'History.txt'
23
- PROJ.manifest_file = 'Manifest.txt'
24
- PROJ.readme_file = 'README.txt'
25
-
26
- # Rspec
27
- PROJ.specs = FileList['spec/**/*_spec.rb']
28
- PROJ.spec_opts = []
29
-
30
- # Test::Unit
31
- PROJ.tests = FileList['test/**/test_*.rb']
32
- PROJ.test_file = 'test/all.rb'
33
- PROJ.test_opts = []
34
-
35
- # Rcov
36
- PROJ.rcov_dir = 'coverage'
37
- PROJ.rcov_opts = ['--sort', 'coverage', '-T']
38
- PROJ.rcov_threshold = 90.0
39
- PROJ.rcov_threshold_exact = false
40
-
41
- # Rdoc
42
- PROJ.rdoc_opts = []
43
- PROJ.rdoc_include = %w(^lib/ ^bin/ ^ext/ .txt$)
44
- PROJ.rdoc_exclude = %w(extconf.rb$)
45
- PROJ.rdoc_main = nil
46
- PROJ.rdoc_dir = 'doc'
47
- PROJ.rdoc_remote_dir = nil
48
-
49
- # Extensions
50
- PROJ.extensions = FileList['ext/**/extconf.rb']
51
- PROJ.ruby_opts = %w(-w)
52
- PROJ.libs = []
53
- %w(lib ext).each {|dir| PROJ.libs << dir if test ?d, dir}
54
-
55
- # Gem Packaging
56
- PROJ.files = nil
57
- PROJ.executables = nil
58
- PROJ.dependencies = []
59
- PROJ.need_tar = true
60
- PROJ.need_zip = false
61
- PROJ.post_install_message = nil
62
-
63
- # File Annotations
64
- PROJ.annotation_exclude = %w(^tasks/setup.rb$)
65
- PROJ.annotation_extensions = %w(.txt .rb .erb) << ''
66
- PROJ.annotation_tags = %w(FIXME OPTIMIZE TODO)
67
-
68
- # Subversion Repository
69
- PROJ.svn = false
70
- PROJ.svn_root = nil
71
- PROJ.svn_trunk = 'trunk'
72
- PROJ.svn_tags = 'tags'
73
- PROJ.svn_branches = 'branches'
74
-
75
- # Announce
76
- PROJ.ann_file = 'announcement.txt'
77
- PROJ.ann_text = nil
78
- PROJ.ann_paragraphs = []
79
- PROJ.ann_email = {
80
- :from => nil,
81
- :to => %w(ruby-talk@ruby-lang.org),
82
- :server => 'localhost',
83
- :port => 25,
84
- :domain => ENV['HOSTNAME'],
85
- :acct => nil,
86
- :passwd => nil,
87
- :authtype => :plain
88
- }
89
-
90
- # Load the other rake files in the tasks folder
91
- rakefiles = Dir.glob('tasks/*.rake').sort
92
- rakefiles.unshift(rakefiles.delete('tasks/post_load.rake')).compact!
93
- import(*rakefiles)
94
-
95
- # Setup some constants
96
- WIN32 = %r/djgpp|(cyg|ms|bcc)win|mingw/ =~ RUBY_PLATFORM unless defined? WIN32
97
-
98
- DEV_NULL = WIN32 ? 'NUL:' : '/dev/null'
99
-
100
- def quiet( &block )
101
- io = [STDOUT.dup, STDERR.dup]
102
- STDOUT.reopen DEV_NULL
103
- STDERR.reopen DEV_NULL
104
- block.call
105
- ensure
106
- STDOUT.reopen io.first
107
- STDERR.reopen io.last
108
- end
109
-
110
- DIFF = if WIN32 then 'diff.exe'
111
- else
112
- if quiet {system "gdiff", __FILE__, __FILE__} then 'gdiff'
113
- else 'diff' end
114
- end unless defined? DIFF
115
-
116
- SUDO = if WIN32 then ''
117
- else
118
- if quiet {system 'which sudo'} then 'sudo'
119
- else '' end
120
- end
121
-
122
- RCOV = WIN32 ? 'rcov.bat' : 'rcov'
123
- GEM = WIN32 ? 'gem.bat' : 'gem'
124
-
125
- %w(rcov spec/rake/spectask rubyforge bones facets/ansicode).each do |lib|
126
- begin
127
- require lib
128
- Object.instance_eval {const_set "HAVE_#{lib.tr('/','_').upcase}", true}
129
- rescue LoadError
130
- Object.instance_eval {const_set "HAVE_#{lib.tr('/','_').upcase}", false}
131
- end
132
- end
133
-
134
- # Reads a file at +path+ and spits out an array of the +paragraphs+
135
- # specified.
136
- #
137
- # changes = paragraphs_of('History.txt', 0..1).join("\n\n")
138
- # summary, *description = paragraphs_of('README.txt', 3, 3..8)
139
- #
140
- def paragraphs_of( path, *paragraphs )
141
- title = String === paragraphs.first ? paragraphs.shift : nil
142
- ary = File.read(path).delete("\r").split(/\n\n+/)
143
-
144
- result = if title
145
- tmp, matching = [], false
146
- rgxp = %r/^=+\s*#{Regexp.escape(title)}/i
147
- paragraphs << (0..-1) if paragraphs.empty?
148
-
149
- ary.each do |val|
150
- if val =~ rgxp
151
- break if matching
152
- matching = true
153
- rgxp = %r/^=+/i
154
- elsif matching
155
- tmp << val
156
- end
157
- end
158
- tmp
159
- else ary end
160
-
161
- result.values_at(*paragraphs)
162
- end
163
-
164
- # Adds the given gem _name_ to the current project's dependency list. An
165
- # optional gem _version_ can be given. If omitted, the newest gem version
166
- # will be used.
167
- #
168
- def depend_on( name, version = nil )
169
- spec = Gem.source_index.find_name(name).last
170
- version = spec.version.to_s if version.nil? and !spec.nil?
171
-
172
- PROJ.dependencies << case version
173
- when nil; [name]
174
- when %r/^\d/; [name, ">= #{version}"]
175
- else [name, version] end
176
- end
177
-
178
- # Adds the given arguments to the include path if they are not already there
179
- #
180
- def ensure_in_path( *args )
181
- args.each do |path|
182
- path = File.expand_path(path)
183
- $:.unshift(path) if test(?d, path) and not $:.include?(path)
184
- end
185
- end
186
-
187
- # Find a rake task using the task name and remove any description text. This
188
- # will prevent the task from being displayed in the list of available tasks.
189
- #
190
- def remove_desc_for_task( names )
191
- Array(names).each do |task_name|
192
- task = Rake.application.tasks.find {|t| t.name == task_name}
193
- next if task.nil?
194
- task.instance_variable_set :@comment, nil
195
- end
196
- end
197
-
198
- # Change working directories to _dir_, call the _block_ of code, and then
199
- # change back to the original working directory (the current directory when
200
- # this method was called).
201
- #
202
- def in_directory( dir, &block )
203
- curdir = pwd
204
- begin
205
- cd dir
206
- return block.call
207
- ensure
208
- cd curdir
209
- end
210
- end
211
-
212
- # Scans the current working directory and creates a list of files that are
213
- # candidates to be in the manifest.
214
- #
215
- def manifest_files
216
- files = []
217
- exclude = Regexp.new(PROJ.exclude.join('|'))
218
- Find.find '.' do |path|
219
- path.sub! %r/^(\.\/|\/)/o, ''
220
- next unless test ?f, path
221
- next if path =~ exclude
222
- files << path
223
- end
224
- files.sort!
225
- end
226
-
227
- # EOF