tap 0.7.9

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 (146) hide show
  1. data/MIT-LICENSE +21 -0
  2. data/README +71 -0
  3. data/Rakefile +117 -0
  4. data/bin/tap +63 -0
  5. data/lib/tap.rb +15 -0
  6. data/lib/tap/app.rb +739 -0
  7. data/lib/tap/file_task.rb +354 -0
  8. data/lib/tap/generator.rb +29 -0
  9. data/lib/tap/generator/generators/config/USAGE +0 -0
  10. data/lib/tap/generator/generators/config/config_generator.rb +23 -0
  11. data/lib/tap/generator/generators/config/templates/config.erb +2 -0
  12. data/lib/tap/generator/generators/file_task/USAGE +0 -0
  13. data/lib/tap/generator/generators/file_task/file_task_generator.rb +21 -0
  14. data/lib/tap/generator/generators/file_task/templates/task.erb +27 -0
  15. data/lib/tap/generator/generators/file_task/templates/test.erb +12 -0
  16. data/lib/tap/generator/generators/root/USAGE +0 -0
  17. data/lib/tap/generator/generators/root/root_generator.rb +36 -0
  18. data/lib/tap/generator/generators/root/templates/Rakefile +48 -0
  19. data/lib/tap/generator/generators/root/templates/app.yml +19 -0
  20. data/lib/tap/generator/generators/root/templates/config/process_tap_request.yml +4 -0
  21. data/lib/tap/generator/generators/root/templates/lib/process_tap_request.rb +26 -0
  22. data/lib/tap/generator/generators/root/templates/public/images/nav.jpg +0 -0
  23. data/lib/tap/generator/generators/root/templates/public/stylesheets/color.css +57 -0
  24. data/lib/tap/generator/generators/root/templates/public/stylesheets/layout.css +108 -0
  25. data/lib/tap/generator/generators/root/templates/public/stylesheets/normalize.css +40 -0
  26. data/lib/tap/generator/generators/root/templates/public/stylesheets/typography.css +21 -0
  27. data/lib/tap/generator/generators/root/templates/server/config/environment.rb +60 -0
  28. data/lib/tap/generator/generators/root/templates/server/lib/tasks/clear_database_prerequisites.rake +5 -0
  29. data/lib/tap/generator/generators/root/templates/server/test/test_helper.rb +53 -0
  30. data/lib/tap/generator/generators/root/templates/test/tap_test_helper.rb +3 -0
  31. data/lib/tap/generator/generators/root/templates/test/tap_test_suite.rb +4 -0
  32. data/lib/tap/generator/generators/task/USAGE +0 -0
  33. data/lib/tap/generator/generators/task/task_generator.rb +21 -0
  34. data/lib/tap/generator/generators/task/templates/task.erb +21 -0
  35. data/lib/tap/generator/generators/task/templates/test.erb +29 -0
  36. data/lib/tap/generator/generators/workflow/USAGE +0 -0
  37. data/lib/tap/generator/generators/workflow/templates/task.erb +16 -0
  38. data/lib/tap/generator/generators/workflow/templates/test.erb +7 -0
  39. data/lib/tap/generator/generators/workflow/workflow_generator.rb +21 -0
  40. data/lib/tap/generator/options.rb +26 -0
  41. data/lib/tap/generator/usage.rb +26 -0
  42. data/lib/tap/root.rb +275 -0
  43. data/lib/tap/script/console.rb +7 -0
  44. data/lib/tap/script/destroy.rb +8 -0
  45. data/lib/tap/script/generate.rb +8 -0
  46. data/lib/tap/script/run.rb +111 -0
  47. data/lib/tap/script/server.rb +12 -0
  48. data/lib/tap/support/audit.rb +415 -0
  49. data/lib/tap/support/batch_queue.rb +165 -0
  50. data/lib/tap/support/combinator.rb +114 -0
  51. data/lib/tap/support/logger.rb +91 -0
  52. data/lib/tap/support/rap.rb +38 -0
  53. data/lib/tap/support/run_error.rb +20 -0
  54. data/lib/tap/support/template.rb +81 -0
  55. data/lib/tap/support/templater.rb +155 -0
  56. data/lib/tap/support/versions.rb +63 -0
  57. data/lib/tap/task.rb +448 -0
  58. data/lib/tap/test.rb +320 -0
  59. data/lib/tap/test/env_vars.rb +16 -0
  60. data/lib/tap/test/inference_methods.rb +298 -0
  61. data/lib/tap/test/subset_methods.rb +260 -0
  62. data/lib/tap/version.rb +3 -0
  63. data/lib/tap/workflow.rb +73 -0
  64. data/test/app/config/addition_template.yml +6 -0
  65. data/test/app/config/batch.yml +2 -0
  66. data/test/app/config/empty.yml +0 -0
  67. data/test/app/config/erb.yml +1 -0
  68. data/test/app/config/template.yml +6 -0
  69. data/test/app/config/version-0.1.yml +1 -0
  70. data/test/app/config/version.yml +1 -0
  71. data/test/app/lib/app_test_task.rb +2 -0
  72. data/test/app_class_test.rb +33 -0
  73. data/test/app_test.rb +1372 -0
  74. data/test/file_task/config/batch.yml +2 -0
  75. data/test/file_task/config/configured.yml +1 -0
  76. data/test/file_task/old_file_one.txt +0 -0
  77. data/test/file_task/old_file_two.txt +0 -0
  78. data/test/file_task_test.rb +1041 -0
  79. data/test/root/alt_lib/alt_module.rb +4 -0
  80. data/test/root/lib/absolute_alt_filepath.rb +2 -0
  81. data/test/root/lib/alternative_filepath.rb +2 -0
  82. data/test/root/lib/another_module.rb +2 -0
  83. data/test/root/lib/nested/some_module.rb +4 -0
  84. data/test/root/lib/no_module_included.rb +0 -0
  85. data/test/root/lib/some/module.rb +4 -0
  86. data/test/root/lib/some_class.rb +2 -0
  87. data/test/root/lib/some_module.rb +3 -0
  88. data/test/root/load_path/load_path_module.rb +2 -0
  89. data/test/root/load_path/skip_module.rb +2 -0
  90. data/test/root/mtime/older.txt +0 -0
  91. data/test/root/unload/full_path.rb +2 -0
  92. data/test/root/unload/loaded_by_nested.rb +2 -0
  93. data/test/root/unload/nested/nested_load.rb +6 -0
  94. data/test/root/unload/nested/nested_with_ext.rb +4 -0
  95. data/test/root/unload/nested/relative_path.rb +4 -0
  96. data/test/root/unload/older.rb +2 -0
  97. data/test/root/unload/unload_base.rb +9 -0
  98. data/test/root/versions/another.yml +0 -0
  99. data/test/root/versions/file-0.1.2.yml +0 -0
  100. data/test/root/versions/file-0.1.yml +0 -0
  101. data/test/root/versions/file.yml +0 -0
  102. data/test/root_test.rb +483 -0
  103. data/test/support/audit_test.rb +449 -0
  104. data/test/support/batch_queue_test.rb +320 -0
  105. data/test/support/combinator_test.rb +249 -0
  106. data/test/support/logger_test.rb +31 -0
  107. data/test/support/template_test.rb +122 -0
  108. data/test/support/templater/erb.txt +2 -0
  109. data/test/support/templater/erb.yml +2 -0
  110. data/test/support/templater/somefile.txt +2 -0
  111. data/test/support/templater_test.rb +192 -0
  112. data/test/support/versions_test.rb +71 -0
  113. data/test/tap_test_helper.rb +4 -0
  114. data/test/tap_test_suite.rb +4 -0
  115. data/test/task/config/batch.yml +2 -0
  116. data/test/task/config/batched.yml +2 -0
  117. data/test/task/config/configured.yml +1 -0
  118. data/test/task/config/example.yml +1 -0
  119. data/test/task/config/overriding.yml +2 -0
  120. data/test/task/config/task_with_config.yml +1 -0
  121. data/test/task/config/template.yml +4 -0
  122. data/test/task_class_test.rb +118 -0
  123. data/test/task_execute_test.rb +233 -0
  124. data/test/task_test.rb +424 -0
  125. data/test/test/inference_methods/test_assert_expected/expected/file.txt +1 -0
  126. data/test/test/inference_methods/test_assert_expected/expected/folder/file.txt +1 -0
  127. data/test/test/inference_methods/test_assert_expected/input/file.txt +1 -0
  128. data/test/test/inference_methods/test_assert_expected/input/folder/file.txt +1 -0
  129. data/test/test/inference_methods/test_assert_files_exist/input/input_1.txt +0 -0
  130. data/test/test/inference_methods/test_assert_files_exist/input/input_2.txt +0 -0
  131. data/test/test/inference_methods/test_file_compare/expected/output_1.txt +3 -0
  132. data/test/test/inference_methods/test_file_compare/expected/output_2.txt +1 -0
  133. data/test/test/inference_methods/test_file_compare/input/input_1.txt +3 -0
  134. data/test/test/inference_methods/test_file_compare/input/input_2.txt +3 -0
  135. data/test/test/inference_methods/test_infer_glob/expected/file.yml +0 -0
  136. data/test/test/inference_methods/test_infer_glob/expected/file_1.txt +0 -0
  137. data/test/test/inference_methods/test_infer_glob/expected/file_2.txt +0 -0
  138. data/test/test/inference_methods/test_yml_compare/expected/output_1.yml +6 -0
  139. data/test/test/inference_methods/test_yml_compare/expected/output_2.yml +6 -0
  140. data/test/test/inference_methods/test_yml_compare/input/input_1.yml +4 -0
  141. data/test/test/inference_methods/test_yml_compare/input/input_2.yml +4 -0
  142. data/test/test/inference_methods_test.rb +311 -0
  143. data/test/test/subset_methods_test.rb +115 -0
  144. data/test/test_test.rb +233 -0
  145. data/test/workflow_test.rb +108 -0
  146. metadata +274 -0
@@ -0,0 +1,12 @@
1
+ require File.join(File.dirname(__FILE__), '<%= '../' * class_nesting_depth %>tap_test_helper.rb')
2
+ require '<%= class_path.empty? ? file_name : File.join(class_path, file_name) %>'
3
+
4
+ class <%= class_name %>Test < Test::Unit::TestCase
5
+ acts_as_tap_test
6
+
7
+ def test_<%= file_name.underscore %>
8
+ t = <%= class_name %>.new
9
+ file_task_test(t, :quiet => true)
10
+ end
11
+
12
+ end
File without changes
@@ -0,0 +1,36 @@
1
+ require 'tap/root'
2
+
3
+ module Tap::Generator::Generators
4
+ class RootGenerator < Rails::Generator::NamedBase # :nodoc:
5
+ def initialize(*args)
6
+ super(*args)
7
+ Tap::App.instance.root = File.join(Tap::App.instance[:root], class_path, file_name)
8
+ @destination_root = Tap::App.instance[:root]
9
+ end
10
+
11
+ def manifest
12
+ record do |m|
13
+ # directories
14
+ m.directory "lib"
15
+ m.directory "config"
16
+ m.directory "test"
17
+ m.directory "public"
18
+ m.directory "public/images"
19
+ m.directory "public/stylesheets"
20
+ m.directory "gemspecs"
21
+ m.directory "server/config"
22
+ m.directory "server/test"
23
+ m.directory "server/lib/tasks"
24
+
25
+ # files
26
+ template_dir = File.dirname(__FILE__) + "/templates"
27
+ Dir.glob(template_dir + "/**/*").each do |fname|
28
+ next if File.directory?(fname)
29
+
30
+ fname = Tap::Root.relative_filepath(template_dir, fname)
31
+ m.file fname, fname
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,48 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'rake/rdoctask'
4
+ require 'rake/gempackagetask'
5
+
6
+ # tasks
7
+ desc 'Default: Run tests.'
8
+ task :default => :test
9
+
10
+ desc 'Run tests.'
11
+ Rake::TestTask.new(:test) do |t|
12
+ t.libs << 'lib'
13
+ t.pattern = File.join('test', ENV['subset'] || '', ENV['pattern'] || '**/*_test.rb')
14
+ t.verbose = true
15
+ end
16
+
17
+ desc 'Generate documentation.'
18
+ Rake::RDocTask.new(:rdoc) do |rdoc|
19
+ rdoc.rdoc_dir = 'rdoc'
20
+ rdoc.title = 'Local' # should be changed
21
+ rdoc.options << '--line-numbers' << '--inline-source'
22
+ rdoc.rdoc_files.include('README')
23
+ rdoc.rdoc_files.include('lib/**/*.rb')
24
+ end
25
+
26
+ #
27
+ # Gem specification
28
+ #
29
+ spec = Gem::Specification.new do |s|
30
+ #s.name = "gemname"
31
+ s.version = "0.0.1"
32
+ #s.author = "Your Name Here"
33
+ #s.email = "your.email@pubfactory.edu"
34
+ #s.homepage = "http://rubyforge.org/projects/gemname/"
35
+ s.platform = Gem::Platform::RUBY
36
+ #s.summary = "Description"
37
+ s.files = Dir.glob("{test,lib,docs}/**/*")
38
+ s.require_path = "lib"
39
+ s.test_file = "test/tap_test_suite.rb" # should be changed
40
+
41
+ s.has_rdoc = true
42
+ s.extra_rdoc_files = ["README"]
43
+ s.add_dependency("tap", ">= 0.1.0")
44
+ end
45
+
46
+ Rake::GemPackageTask.new(spec) do |pkg|
47
+ pkg.need_tar = true
48
+ end
@@ -0,0 +1,19 @@
1
+ # Put your app configurations here:
2
+
3
+ #root: #
4
+ #directories: # uncomment to specify aliases for directories
5
+ #lib:
6
+ #log:
7
+ #...
8
+
9
+ #options: # uncomment to specify options
10
+ #trace: true # full error output, increased logging
11
+ #quiet: true # supresses logging
12
+ #... # you can add your own options
13
+
14
+ logger:
15
+ #device: # STDOUT by default
16
+ #level: 1 # [DEBUG, INFO, WARN, ERROR, FATAL, ANY]
17
+ datetime_format: %H:%M:%S # Hour:Minute:Second
18
+
19
+ loadable: 'lib'
@@ -0,0 +1,4 @@
1
+ # Put your task configurations here:
2
+
3
+ # Remote URL should point to the host and port of the remote server
4
+ remote_url: http://localhost:3000
@@ -0,0 +1,26 @@
1
+ require 'net/http'
2
+ require 'cgi'
3
+ require 'yaml'
4
+
5
+ class ProcessTapRequest < Tap::Task
6
+ def process(input)
7
+ id = input['id']
8
+ key = input['key']
9
+
10
+ url = URI.parse(config[:remote_url])
11
+ res = Net::HTTP.start(url.host, url.port) do |http|
12
+ http.get("/tap/queue/#{id}?key=#{key}")
13
+ end
14
+
15
+ unless res.kind_of?(Net::HTTPSuccess)
16
+ puts res.body
17
+ return
18
+ end
19
+
20
+ queue = YAML.load(res.body)
21
+ task = queue['task']
22
+ input = queue['input']
23
+
24
+ Tap::App.run(task, *input)
25
+ end
26
+ end
@@ -0,0 +1,57 @@
1
+ /* Color scheme
2
+
3
+ off_white background: #f1f8ee;
4
+ light background: #DCE6CF;
5
+ dark background: #648F7D;
6
+
7
+ content text: black
8
+ red text: #8a181d;
9
+ identifiers: #708059;
10
+
11
+ muted:
12
+ links _ color: #805976;
13
+ hover _ color: #CC0099;
14
+
15
+ bold:
16
+ links _ color: #0000FF;
17
+ hover _ color: #800080;
18
+
19
+ light contrast (notifications and links): #708059;
20
+ strong contrast (notifications and hover): #CC0099;
21
+
22
+ */
23
+
24
+ body {
25
+ color: black;
26
+ background-color: #DCE6CF;
27
+ }
28
+
29
+ a { color: #8a181d; }
30
+ a:hover{ color: #800080;}
31
+
32
+ a.muted { color: #805976; }
33
+ a.muted:hover{ color: #CC0099; }
34
+
35
+ .highlight {color: #FF0000;}
36
+
37
+ #flash { color: #99BF60; }
38
+
39
+ /* Branding */
40
+ div#brandingLogo {
41
+ color: #f1f8ee;
42
+ }
43
+
44
+ /* Navigation */
45
+ div#navMain ul li {
46
+ background-color: #B4CC8F;
47
+ border-top-color: #805976;
48
+ border-right-color: #805976;
49
+ }
50
+ div#navSupp ul li {
51
+ background-color: #B4CC8F;
52
+ border-top-color: #805976;
53
+ border-left-color: #805976;
54
+ }
55
+ div#navControl a {
56
+ color: #f1f8ee;
57
+ }
@@ -0,0 +1,108 @@
1
+ @import url(normalize.css);
2
+ @import url(color.css);
3
+ @import url(typography.css);
4
+
5
+ body {
6
+ margin: 0;
7
+ padding: 0;
8
+ width: 100%;
9
+ }
10
+
11
+ div#branding, div#nav, div#content {
12
+ position: relative;
13
+ min-width: 50em;
14
+ width: 100%;
15
+ }
16
+
17
+ /* Branding */
18
+ div#branding {
19
+ position: absolute;
20
+ z-index: 10; /* sets the branding above the nav background */
21
+ }
22
+ div#brandingLogo {
23
+ position: absolute;
24
+ top: .5em;
25
+ left: .5em;
26
+ }
27
+
28
+ /* Navigation */
29
+ div#nav {
30
+ top: 0;
31
+ left: 0;
32
+ height: 6em;
33
+ background-image: url(../images/nav.jpg);
34
+ background-repeat: no-repeat;
35
+ background-position: center top;
36
+ }
37
+
38
+ /* Control Navigation */
39
+ div#navControl {
40
+ position: absolute;
41
+ top: 0;
42
+ right: 0;
43
+ }
44
+
45
+ /* Main and Supp Navigation */
46
+ div#navMain, div#navSupp {
47
+ position: absolute;
48
+ bottom: 0;
49
+ }
50
+ div#navMain {
51
+ left:0;
52
+ }
53
+ div#navSupp {
54
+ right: 0;
55
+ }
56
+
57
+ div#nav ul li {
58
+ float: left;
59
+ padding-left: .5em;
60
+ padding-right: .5em;
61
+ }
62
+ div#navMain ul li {
63
+ border-top-style: solid;
64
+ border-top-width: 1px;
65
+ border-right-style: solid;
66
+ border-right-width: 1px;
67
+ }
68
+ div#navSupp ul li {
69
+ border-top-style: solid;
70
+ border-top-width: 1px;
71
+ border-left-style: solid;
72
+ border-left-width: 1px;
73
+ }
74
+
75
+ /* Misc Navigation - these are intended for contentSupp */
76
+ .navMisc {
77
+ padding-top: 1em;
78
+ padding-left: 3em;
79
+ padding-right: 1em;
80
+ }
81
+ .navMisc ul {
82
+ padding-left: 1em;
83
+ }
84
+
85
+ /* Content */
86
+ div#contentMain {
87
+ left: 0;
88
+ width: 75%;
89
+ }
90
+ div#contentSupp {
91
+ left: 75%;
92
+ width: 25%;
93
+ }
94
+
95
+ /* Inman clearing */
96
+ .pc,.sc {position:absolute; top:0;}
97
+ .clear_children,.cc_tallest { position: relative; } /**/* html .clear_children { display: inline;}/* PREVENTS MISSING CHILDREN IN IE WIN 5.0 */
98
+ .cc_tallest:after { content: ''; } /* PREVENTS A REDRAW BUG IN SAFARI */
99
+
100
+ /* Site Infor */
101
+ div#siteInfo {
102
+ text-align:center;
103
+ width: 75%;
104
+ min-width: 37.5em;
105
+ }
106
+ div#siteInfo p {
107
+ display: inline;
108
+ }
@@ -0,0 +1,40 @@
1
+ /* normalize.css */
2
+ /* Based the normalizations presented in Transcending CSS - Andy Clarke 2007
3
+ * and undohtml.css file by Tantek Celik 2004
4
+ * http://tantek.com/log/2004/undohtml.css */
5
+
6
+ /* Normalize margin, padding */
7
+ body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote,th,td
8
+ { margin: 0; padding: 0 }
9
+
10
+ /* Normalize font-size for headers */
11
+ h1,h2,h3,h4,h5,h6
12
+ { font-size: 100% }
13
+
14
+ /* Removes list-style from lists */
15
+ ul,ol
16
+ { list-style: none }
17
+
18
+ /* Normalize font-style and font-weight to normal */
19
+ address,caption,cite,code,dfn,em,strong,th,var
20
+ { font-style: normal; font-weight: normal;}
21
+
22
+ /* Normalizes table style*/
23
+ table
24
+ { border-collapse: collapse; border-spacing: 0;}
25
+
26
+ /* Remove border from fieldset and img */
27
+ fieldset,img
28
+ { border: 0;}
29
+
30
+ /* Left-align text in caption and th */
31
+ caption,th
32
+ { text-align: left;}
33
+
34
+ /* Remove quotation marks from q */
35
+ q:before,q:after
36
+ { content:'';}
37
+
38
+ /* link underlines tend to make hypertext less readable,
39
+ because underlines obscure the shapes of the lower halves of words */
40
+ a:link,a:visited { text-decoration:none }
@@ -0,0 +1,21 @@
1
+
2
+ body {
3
+ font-family: trebuchet ms, verdana, arial, tahoma;
4
+ font-size: 100%; /* can't remember why, but for an IE bug this was included */
5
+ }
6
+
7
+ .emphasize {font-weight: bold;}
8
+
9
+ /* Branding */
10
+ div#brandingLogo {
11
+ font-size: 2em;
12
+ }
13
+
14
+
15
+ /* Navigation */
16
+ div#navMain, div#navSupp {
17
+ font-weight: bold;
18
+ }
19
+ div#navControl {
20
+ font-size: 0.8em;
21
+ }
@@ -0,0 +1,60 @@
1
+ # Be sure to restart your web server when you modify this file.
2
+
3
+ # Uncomment below to force Rails into production mode when
4
+ # you don't control web/app server and can't set it the proper way
5
+ # ENV['RAILS_ENV'] ||= 'production'
6
+
7
+ # Specifies gem version of Rails to use when vendor/rails is not present
8
+ RAILS_GEM_VERSION = '1.2.3' unless defined? RAILS_GEM_VERSION
9
+
10
+ # Bootstrap the Rails environment, frameworks, and default configuration
11
+ require File.join(File.dirname(__FILE__), 'boot')
12
+
13
+ Rails::Initializer.run do |config|
14
+ # Settings in config/environments/* take precedence over those specified here
15
+
16
+ # Skip frameworks you're not going to use (only works if using vendor/rails)
17
+ config.frameworks -= [ :action_web_service, :action_mailer ]
18
+
19
+ # Only load the plugins named here, by default all plugins in vendor/plugins are loaded
20
+ # config.plugins = %W( exception_notification ssl_requirement )
21
+
22
+ # Add additional load paths for your own custom dirs
23
+ # config.load_paths += %W( #{RAILS_ROOT}/extras )
24
+
25
+ # Force all environments to use the same logger level
26
+ # (by default production uses :info, the others :debug)
27
+ # config.log_level = :debug
28
+
29
+ # Use the database for sessions instead of the file system
30
+ # (create the session table with 'rake db:sessions:create')
31
+ # config.action_controller.session_store = :active_record_store
32
+
33
+ # Use SQL instead of Active Record's schema dumper when creating the test database.
34
+ # This is necessary if your schema can't be completely dumped by the schema dumper,
35
+ # like if you have constraints or database-specific column types
36
+ # config.active_record.schema_format = :sql
37
+
38
+ # Activate observers that should always be running
39
+ # config.active_record.observers = :cacher, :garbage_collector
40
+
41
+ # Make Active Record use UTC-base instead of local time
42
+ # config.active_record.default_timezone = :utc
43
+
44
+ # See Rails::Configuration for more options
45
+ end
46
+
47
+ # Add new inflection rules using the following format
48
+ # (all these examples are active by default):
49
+ # Inflector.inflections do |inflect|
50
+ # inflect.plural /^(ox)$/i, '\1en'
51
+ # inflect.singular /^(ox)en/i, '\1'
52
+ # inflect.irregular 'person', 'people'
53
+ # inflect.uncountable %w( fish sheep )
54
+ # end
55
+
56
+ # Add new mime types for use in respond_to blocks:
57
+ # Mime::Type.register "text/richtext", :rtf
58
+ # Mime::Type.register "application/x-mobile", :mobile
59
+
60
+ # Include your application configuration below