mango 0.5.0.beta5 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. data/.gitignore +1 -0
  2. data/CHANGES.mdown +6 -5
  3. data/Gemfile +15 -0
  4. data/Gemfile.lock +41 -0
  5. data/README.mdown +195 -82
  6. data/lib/mango/application.rb +4 -0
  7. data/lib/mango/content_page.rb +1 -1
  8. data/lib/mango/dependencies.rb +2 -2
  9. data/lib/mango/runner.rb +26 -19
  10. data/lib/mango/templates/Gemfile +1 -2
  11. data/lib/mango/templates/README.md +22 -1
  12. data/lib/mango/templates/content/index.md +1 -1
  13. data/lib/mango/templates/themes/default/public/styles/reset.css +1 -1
  14. data/lib/mango/version.rb +1 -1
  15. data/mango.gemspec +4 -4
  16. data/spec/bin/mango_spec.rb +10 -0
  17. data/spec/{app_root → fixture}/content/about/index.haml +0 -0
  18. data/spec/{app_root → fixture}/content/about/us.haml +0 -0
  19. data/spec/{app_root → fixture}/content/engines/haml.haml +0 -0
  20. data/spec/{app_root → fixture}/content/engines/markdown.markdown +0 -0
  21. data/spec/{app_root → fixture}/content/engines/md.md +0 -0
  22. data/spec/{app_root → fixture}/content/engines/mdown.mdown +0 -0
  23. data/spec/{app_root → fixture}/content/index.haml +0 -0
  24. data/spec/{app_root → fixture}/content/override.haml +0 -0
  25. data/spec/{app_root → fixture}/content/page_with_missing_view.haml +0 -0
  26. data/spec/{app_root → fixture}/content/turner+hooch.haml +0 -0
  27. data/spec/{app_root → fixture}/security_hole.haml +0 -0
  28. data/spec/{app_root → fixture}/themes/default/public/default.css +0 -0
  29. data/spec/{app_root → fixture}/themes/default/public/images/index.html +0 -0
  30. data/spec/{app_root → fixture}/themes/default/public/images/ripe-mango.jpg +0 -0
  31. data/spec/{app_root → fixture}/themes/default/public/override +0 -0
  32. data/spec/{app_root → fixture}/themes/default/public/robots.txt +0 -0
  33. data/spec/{app_root → fixture}/themes/default/public/styles/override.css +0 -0
  34. data/spec/{app_root → fixture}/themes/default/public/styles/reset.css +0 -0
  35. data/spec/{app_root → fixture}/themes/default/public/styles/subfolder/another.css +0 -0
  36. data/spec/{app_root → fixture}/themes/default/security_hole.sass +0 -0
  37. data/spec/{app_root → fixture}/themes/default/security_hole.txt +0 -0
  38. data/spec/{app_root → fixture}/themes/default/styles/override.sass +0 -0
  39. data/spec/{app_root → fixture}/themes/default/styles/screen.sass +0 -0
  40. data/spec/{app_root → fixture}/themes/default/styles/subfolder/screen.sass +0 -0
  41. data/spec/{app_root → fixture}/themes/default/views/404.haml +0 -0
  42. data/spec/{app_root → fixture}/themes/default/views/layout.haml +0 -0
  43. data/spec/{app_root → fixture}/themes/default/views/page.haml +0 -0
  44. data/spec/{mango → lib}/application/routing_content_pages_spec.rb +11 -11
  45. data/spec/{mango → lib}/application/routing_public_files_spec.rb +7 -7
  46. data/spec/{mango → lib}/application/routing_style_sheets_spec.rb +9 -9
  47. data/spec/{mango → lib}/application_spec.rb +5 -9
  48. data/spec/{mango → lib}/content_page/finding_spec.rb +5 -5
  49. data/spec/{mango → lib}/content_page/initializing_spec.rb +0 -0
  50. data/spec/{mango → lib}/content_page_spec.rb +0 -0
  51. data/spec/{mango → lib}/dependencies_spec.rb +9 -9
  52. data/spec/{mango → lib}/flavored_markdown_spec.rb +0 -0
  53. data/spec/{mango → lib}/rack/debugger_spec.rb +0 -0
  54. data/spec/lib/runner_spec.rb +380 -0
  55. data/spec/{mango → lib}/version_spec.rb +2 -2
  56. data/spec/quality_spec.rb +2 -2
  57. data/spec/spec_helper.rb +5 -4
  58. metadata +93 -102
data/.gitignore CHANGED
@@ -1,4 +1,5 @@
1
1
  .DS_Store
2
+ .bundle
2
3
  .rvmrc
3
4
  .yardoc
4
5
  *.gem
data/CHANGES.mdown CHANGED
@@ -1,5 +1,5 @@
1
- Mango release 0.5.0.beta5 (October 29, 2010)
2
- ============================================
1
+ Mango release 0.5.0 (October 31, 2010)
2
+ ======================================
3
3
 
4
4
  ### Features
5
5
 
@@ -9,19 +9,20 @@ Mango release 0.5.0.beta5 (October 29, 2010)
9
9
  * Mango now supports theme-switching!
10
10
  * For example, add `class Mango::Application; set :theme, "theme_name"; end` to your application's config.ru.
11
11
  * As a result of the new command-line application generator, all embedded application code has been removed.
12
- * Now routes like `GET /images/` return a 200 response if the `themes/default/public/images/index.html` file is exists.
12
+ * Now routes like `GET /images/` return a 200 response as long as `themes/default/public/images/index.html` exists.
13
13
 
14
14
  ### Dependencies
15
15
 
16
16
  * Added [RubyGems](https://rubygems.org/) 1.3.7
17
- * Updated [Ruby](http://www.ruby-lang.org/) to 1.9.1 or 1.9.2
17
+ * Updated [Ruby](http://www.ruby-lang.org/) to 1.9.2
18
18
  * Updated [Bundler](http://gembundler.com/) to 1.0.3
19
+ * Updated [Sinatra](http://www.sinatrarb.com/) to 1.1.0
19
20
  * Updated [Haml](http://haml-lang.com/) to 3.0.22
20
21
  * Updated [Sass](http://sass-lang.com/) to 3.0.22 (bundled with Haml)
21
22
  * Updated [BlueCloth](http://deveiate.org/projects/BlueCloth) to 2.0.9
22
23
  * Updated [Rack::Test](http://github.com/brynary/rack-test) to 0.5.6
23
24
  * Updated [RSpec](http://rspec.info/) to 2.0.1
24
- * Updated [YARD](http://yardoc.org/) to 0.5.8
25
+ * Updated [YARD](http://yardoc.org/) to 0.6.1
25
26
  * Updated [YARD::Sinatra](http://github.com/rkh/yard-sinatra) to 0.5.1
26
27
 
27
28
  ### Bugs
data/Gemfile ADDED
@@ -0,0 +1,15 @@
1
+ # encoding: UTF-8
2
+ source "http://rubygems.org"
3
+
4
+ gem "rack", "~> 1.2.1"
5
+ gem "sinatra", "~> 1.1.0"
6
+ gem "haml", "~> 3.0.22"
7
+ gem "bluecloth", "~> 2.0.9"
8
+ gem "thor", "~> 0.14.3"
9
+
10
+ gem "rspec", "~> 2.0.1"
11
+ gem "rack-test", "~> 0.5.6"
12
+ gem "yard", "~> 0.6.1"
13
+ gem "bluecloth", "~> 2.0.9"
14
+ gem "yard-sinatra", "~> 0.5.1"
15
+
data/Gemfile.lock ADDED
@@ -0,0 +1,41 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ bluecloth (2.0.9)
5
+ diff-lcs (1.1.2)
6
+ haml (3.0.22)
7
+ rack (1.2.1)
8
+ rack-test (0.5.6)
9
+ rack (>= 1.0)
10
+ rspec (2.0.1)
11
+ rspec-core (~> 2.0.1)
12
+ rspec-expectations (~> 2.0.1)
13
+ rspec-mocks (~> 2.0.1)
14
+ rspec-core (2.0.1)
15
+ rspec-expectations (2.0.1)
16
+ diff-lcs (>= 1.1.2)
17
+ rspec-mocks (2.0.1)
18
+ rspec-core (~> 2.0.1)
19
+ rspec-expectations (~> 2.0.1)
20
+ sinatra (1.1.0)
21
+ rack (~> 1.1)
22
+ tilt (~> 1.1)
23
+ thor (0.14.3)
24
+ tilt (1.1)
25
+ yard (0.6.1)
26
+ yard-sinatra (0.5.1)
27
+ yard (~> 0.6.0)
28
+
29
+ PLATFORMS
30
+ ruby
31
+
32
+ DEPENDENCIES
33
+ bluecloth (~> 2.0.9)
34
+ haml (~> 3.0.22)
35
+ rack (~> 1.2.1)
36
+ rack-test (~> 0.5.6)
37
+ rspec (~> 2.0.1)
38
+ sinatra (~> 1.1.0)
39
+ thor (~> 0.14.3)
40
+ yard (~> 0.6.1)
41
+ yard-sinatra (~> 0.5.1)
data/README.mdown CHANGED
@@ -1,120 +1,165 @@
1
- ![Exotic Fruit](http://www.bctree.com/images/photos/sourced-mango.jpg)
1
+ Mango release 0.5.0 (October 31, 2010)
2
+ ======================================
2
3
 
3
- Image courtesy of [B.C. Tree Fruits LTD.](http://www.bctree.com/products/sourced/mango.php)
4
+ Copyright (c) 2010 Ryan Sobol. Licensed under the MIT license. Please see the {file:LICENSE} for more information.
4
5
 
5
- Mango release 0.5.0.beta5 (October 29, 2010)
6
- ============================================
6
+ * **Source Code**: [http://github.com/ryansobol/mango](http://github.com/ryansobol/mango)
7
+ * **Documentation**: [http://rubydoc.info/github/ryansobol/mango/master/frames](http://rubydoc.info/github/ryansobol/mango/master/frames)
8
+ * **Issue Tracker**: [http://github.com/ryansobol/mango/issues](http://github.com/ryansobol/mango/issues)
9
+ * **Wiki**: [http://wiki.github.com/ryansobol/mango](http://wiki.github.com/ryansobol/mango)
7
10
 
8
- Copyright (c) 2010 Ryan Sobol. Licensed under the MIT license. Please see the {file:LICENSE} for more information.
11
+ SYNOPSIS
12
+ --------
9
13
 
10
- * **Source Code**: [http://github.com/ryansobol/mango](http://github.com/ryansobol/mango)
11
- * **Documentation**: [http://rubydoc.info/github/ryansobol/mango](http://rubydoc.info/github/ryansobol/mango)
12
- * **Issue Tracker**: [http://github.com/ryansobol/mango/issues](http://github.com/ryansobol/mango/issues)
13
- * **Wiki**: [http://wiki.github.com/ryansobol/mango](http://wiki.github.com/ryansobol/mango)
14
+ **Mango is a dynamic, database-free, and open source website framework that is designed to make life easier for small teams of designers, developers, and content writers.**
14
15
 
15
- **Mango respects [Semantic Versioning](http://semver.org/)!**
16
+ FEATURES
17
+ --------
16
18
 
17
- WHAT'S NEW?
18
- -----------
19
+ ### Easy to install
19
20
 
20
- ### Features
21
+ Mango installs as a [RubyGem](https://rubygems.org/gems/mango) and contains all the necessary components to get a basic website up-and-running in seconds.
21
22
 
22
- * Mango has been split into two pieces!
23
- 1. A web framework, distributed as a Ruby gem, that is completely abstracted away from application code.
24
- 2. A `mango` command-line tool that generates a [demo Mango application](http://mango-fireworks.heroku.com/).
25
- * Mango now supports theme-switching!
26
- * For example, add `class Mango::Application; set :theme, "theme_name"; end` to your application's config.ru.
27
- * As a result of the new command-line application generator, all embedded application code has been removed.
28
- * Now routes like `GET /images/` return a 200 response if the `themes/default/public/images/index.html` file is exists.
23
+ ### Easy to write
29
24
 
30
- ### Dependencies
25
+ Mango integrates with the writing tools you're already familiar with -- the file system and your favorite text editor.
31
26
 
32
- * Added [RubyGems](https://rubygems.org/) 1.3.7
33
- * Updated [Ruby](http://www.ruby-lang.org/) to 1.9.1 or 1.9.2
34
- * Updated [Bundler](http://gembundler.com/) to 1.0.3
35
- * Updated [Haml](http://haml-lang.com/) to 3.0.22
36
- * Updated [Sass](http://sass-lang.com/) to 3.0.22 (bundled with Haml)
37
- * Updated [BlueCloth](http://deveiate.org/projects/BlueCloth) to 2.0.9
38
- * Updated [Rack::Test](http://github.com/brynary/rack-test) to 0.5.6
39
- * Updated [RSpec](http://rspec.info/) to 2.0.1
40
- * Updated [YARD](http://yardoc.org/) to 0.5.8
41
- * Updated [YARD::Sinatra](http://github.com/rkh/yard-sinatra) to 0.5.1
27
+ Working with a text editor you already know *saves time*. And writing and revising content in a file *is often easier* then using the clunky administrator interface of a CMS (e.g. WordPress). Plus, files *match perfectly* with version control systems, like [Git](http://git-scm.com/), for powerful revision history. Bonus!
42
28
 
43
- ### Bugs
29
+ ### Easy to theme
44
30
 
45
- * The NOT_FOUND handler no longer renders the 404 template within a layout template.
46
- * Improved install-time and run-time error messages for Ruby 1.8 environments
31
+ Mango separates a website's theme from it's content. This makes it *easy to change* the look-and-feel of a single page or an entire website. Mango also supports powerful template languages that make it *easy to have uniformity* with major sections (i.e. headers, footers, navigation, sidebars, etc.) across multiple pages. The following web and template formats are supported by Mango:
47
32
 
48
- Please see {file:CHANGES.mdown} for the historical overview of the project.
33
+ * HAML
34
+ * HTML
35
+ * SASS
36
+ * CSS
37
+ * JavaScript
49
38
 
50
- SYNOPSIS
51
- --------
39
+ with [more](http://github.com/sinatra/sinatra/blob/1.1.0/CHANGES#L12) on the way.
52
40
 
53
- **Mango is a dynamic, database-free, and open source website framework that is designed to make life easier for small teams of designers, developers, and content writers.**
41
+ ### Easy to publish
54
42
 
55
- FEATURES
56
- --------
43
+ Mango applications are dead-simple to publish. Mango was designed to support a wide variety of publishing tools like:
44
+
45
+ * Single target, drag-and-drop secure FTP uploading
46
+ * Multiple target, automated deploying with [Capistrano](http://github.com/capistrano/capistrano)
47
+ * Cutting-edge cloud deploying with [Git](http://git-scm.com/) and [Heroku](http://heroku.com/)
57
48
 
58
- 1. Easy to install: Mango installs as a RubyGem and can generate a basic website structure in seconds.
49
+ ### Easy to collaborate
59
50
 
60
- 2. Easy to publish: Supports many types of deployments like direct SFTP uploading and source control systems like Git, Mercurial, SVN, CSV, etc.
51
+ With a strong separation of writing, theming and publishing, Mango applications are *designed to be shared* with content writers, web designers, and web developers. But the beauty of Mango is that its simple, file-based approach *appeals to both veterans and newcomers*. In addition, Mango has an emphasis on *accurate documentation*. Mango understands that getting up and running quickly is critical for domain-specific experts.
61
52
 
62
- 3. Easy to write: Mango let's you publish to the web using the tools you're already familiar with -- the file system and your trusty text editor. Mango supports a variety of formats include Markdown, HAML, HTML, SASS, CSS, and JavaScript. These files are easier to create and revise then working with database records. Say goodbye to clunky administrator interfaces for managing content!
53
+ ### Easy to maintain
63
54
 
64
- 4. Easy to deploy: There's no database to install, configure, and manage.
55
+ Mango is a database-less web framework. With no database to install, configure, or manage, the maintenance needed to keep your website in working order is *drastically reduced*. And because Mango is distributed as a RubyGem and respects [Semantic Versioning](http://semver.org/), *upgrading is painless andi backwards-compatible* between patch releases.
65
56
 
66
- 5. Easy to understand: Mango is perfect for smalls teams of varying levels of coding expertise. Why not take the simple route where everyone is on the same page? Instead of struggling with complex platforms, which most CMS are, Mango is perfect for people who has no coding experience.
57
+ ### Easy to scale
67
58
 
68
- 6. Easy on the wallet: It's free!
59
+ Mango application's are *built for speed*. With minimal server side scripting and zero database queries, Mango is *lightening fast* and the user experience is snappy.
69
60
 
70
- 7. Easy to... SPEED: A major advantage of a database-less website framework is speed. Database queries slow down servers. On a high traffic website, this has a dramatic effect on the speed of the site. With minimal server side scripting and zero database queries, Mango is lightening fast.
61
+ ### Easy on the wallet
62
+
63
+ Mango is *free* and open source software.
71
64
 
72
65
  REQUIREMENTS
73
66
  ------------
74
67
 
75
- **Required dependencies**
68
+ **Mango respects [Semantic Versioning](http://semver.org/).**
69
+
70
+ ### Required dependencies
76
71
 
77
- * [Ruby](http://www.ruby-lang.org/) 1.9.1 or 1.9.2 ([RVM](http://rvm.beginrescueend.com/) recommended)
72
+ * [Ruby](http://www.ruby-lang.org/) 1.9.2 ([RVM](http://rvm.beginrescueend.com/) recommended)
78
73
  * [RubyGems](https://rubygems.org/) 1.3.7 (bundled with Ruby)
79
74
  * [Bundler](http://gembundler.com/) 1.0.3
80
75
  * [Rack](http://rack.rubyforge.org/) 1.2.1
81
- * [Sinatra](http://www.sinatrarb.com/) 1.0
76
+ * [Sinatra](http://www.sinatrarb.com/) 1.1.0
82
77
  * [Haml](http://haml-lang.com/) 3.0.22
83
78
  * [Sass](http://sass-lang.com/) 3.0.22 (bundled with Haml)
84
79
  * [BlueCloth](http://deveiate.org/projects/BlueCloth) 2.0.9
85
80
 
86
- **Optional development dependencies**
81
+ ### Optional development dependencies
87
82
 
88
83
  * [Rake](http://rake.rubyforge.org/) 0.8.7 (bundled with Ruby)
89
84
  * [Rack::Test](http://github.com/brynary/rack-test) 0.5.6
90
85
  * [RSpec](http://rspec.info/) 2.0.1
91
- * [YARD](http://yardoc.org/) 0.5.8
86
+ * [YARD](http://yardoc.org/) 0.6.1
92
87
  * [YARD::Sinatra](http://github.com/rkh/yard-sinatra) 0.5.1
93
88
  * [BlueCloth](http://deveiate.org/projects/BlueCloth) 2.0.9
94
89
 
95
90
  INSTALLING
96
91
  ----------
97
92
 
98
- $ gem install mango -v 0.5.0.beta5
93
+ ### Ensuring Ruby 1.9.2 is installed and active
94
+
95
+ I highly recommend [RVM](http://rvm.beginrescueend.com/) by Wayne E. Seguin. It trivializes managing multiple versions of Ruby on one machine.
96
+
97
+ $ ruby -v
98
+ ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.4.0]
99
99
 
100
- Note: Depending on how RubyGems is installed on your machine, you *may* need to prepend the command with `sudo`.
100
+ **TIP:** The revision and arch-type may differ on your machine.
101
101
 
102
- USAGE
103
- -----
102
+ ### Installing the Mango gem
103
+
104
+ Mango, and all its necessary components, are packaged as RubyGems for easy distribution.
105
+
106
+ $ gem install mango
107
+
108
+ **TIP:** If you're not using [RVM](http://rvm.beginrescueend.com/), you *may* want to prepend the `gem` command with `sudo`.
109
+
110
+ ### Upgrading a Mango application
111
+
112
+ Simply edit the gem version in your application's `Gemfile` and re-install with [Bundler](http://gembundler.com/).
113
+
114
+ $ cd /path/to/your/app
115
+ $ cat Gemfile
116
+ # encoding: UTF-8
117
+ source "http://rubygems.org"
118
+ gem "mango", "~> 0.5.0"
119
+ $ bundle install
120
+
121
+ **TIP:** If you're working in the insolation of an [RVM gemset](http://rvm.beginrescueend.com/gemsets/basics/), type `gem clean` to uninstall outdated gems.
122
+
123
+ GETTING STARTED
124
+ ---------------
104
125
 
105
126
  ### Generating a Mango application
106
127
 
128
+ With Mango installed, the `mango` command will generate a new application.
129
+
107
130
  $ mango create /path/to/your/app
108
131
 
109
132
  ### Starting the application
110
133
 
134
+ Mango applications are compatible with any [Rack supported web-server](http://rack.rubyforge.org/doc/). The `rackup` command will start a web-server (default: WEBrick) listening at `http://0.0.0.0:9292`.
135
+
111
136
  $ cd /path/to/your/app
112
137
  $ rackup
138
+ [2010-10-30 15:39:41] INFO WEBrick 1.3.1
139
+ [2010-10-30 15:39:41] INFO ruby 1.9.2 (2010-08-18) [x86_64-darwin10.4.0]
140
+ [2010-10-30 15:39:41] INFO WEBrick::HTTPServer#start: pid=27513 port=9292
141
+
142
+ **TIP:** Type `Control + C` to quit `rackup`.
143
+
144
+ ### Using an alternative web-server
145
+
146
+ If you prefer an alternative web-server (e.g. `thin`), simply install the gem and use the `-s SERVER` option to specify the web-server.
147
+
148
+ $ cd /path/to/your/app
149
+ $ gem install thin
150
+ $ rackup -s thin
151
+ >> Thin web server (v1.2.7 codename No Hup)
152
+ >> Maximum connections set to 1024
153
+ >> Listening on 0.0.0.0:9292, CTRL+C to stop
154
+
155
+ **TIP:** To see a list of all the `rackup` command-line options, use the `--help` option.
113
156
 
114
157
  ### Generated application structure
115
158
 
116
- $ tree
117
- .
159
+ Now that the newly generated Mango application is running, here's how the application is structured.
160
+
161
+ $ tree /path/to/your/app
162
+ /path/to/your/app
118
163
  ├── Gemfile
119
164
  ├── README.md
120
165
  ├── config.ru
@@ -140,44 +185,112 @@ USAGE
140
185
  ├── layout.haml
141
186
  └── page.haml
142
187
 
143
- UNDER THE HOOD
144
- --------------
188
+ **TIP:** The [tree](http://mama.indstate.edu/users/ice/tree/) command is awesome!
189
+
190
+ ### Under the hood
191
+
192
+ * First, Mango tries to route an HTTP request to a static file found in `themes/default/public/`.
193
+ * If no static file is found, Mango tries to route the request to a template file.
194
+ * For routes ending in `.css`, Mango searches for [Sass](http://sass-lang.com/) styles found in `themes/styles/`.
195
+ * For all other routes:
196
+ * Mango searches for [Markdown](http://daringfireball.net/projects/markdown/syntax) or [Haml](http://haml-lang.com/) content pages in `content/`.
197
+ * Mango will also try to wrap the content page within [Haml](http://haml-lang.com/) page and layout templates in `themes/default/views`.
198
+ * If no static or template file is found, Mango routes unknown HTTP requests to a customizable 404 page found in `themes/default/views`.
199
+
200
+ WRITING
201
+ -------
202
+
203
+ Coming soon. [Patches are welcomed](http://github.com/ryansobol/mango/issues#issue/2).
145
204
 
146
- * Mango tries to route HTTP requests to static files first
147
- * Then it tries to route HTTP requests to Markdown or Haml content pages or Sass style templates
148
- * Finally, it routes unknown HTTP requests to a customizable 404 page
149
- * Wraps content pages within a customizable Haml template and layout
150
- * Supports any Rack-based application server (e.g. Phusion Passenger, thin, mongrel, webrick, etc.)
205
+ THEMING
206
+ -------
151
207
 
152
- MOTIVATION
208
+ Coming soon. [Patches are welcomed](http://github.com/ryansobol/mango/issues#issue/3).
209
+
210
+ PUBLISHING
153
211
  ----------
154
212
 
155
- Scratching my own itch. Inspired by [Nesta](http://effectif.com/nesta) and [Jekyll](http://jekyllrb.com/).
213
+ ### Deploying to a single target with secure FTP uploads
214
+
215
+ Coming soon. [Patches are welcomed](http://github.com/ryansobol/mango/issues#issue/4).
216
+
217
+ ### Deploying to multiple targets with Capistrano
218
+
219
+ Coming soon. [Patches are welcomed](http://github.com/ryansobol/mango/issues#issue/5).
220
+
221
+ ### Deploying to the cloud with Heroku
222
+
223
+ Heroku (pronounced her-OH-koo) is a cloud platform for Ruby-powered web applications. Heroku lets app developers spend 100% of their time on their application code, not managing servers, deployment, ongoing operations, or scaling. And best of all, Mango applications can leverage this power with their *free* [Blossom tier](http://heroku.com/pricing).
224
+
225
+ If you haven't done so already, prepare your Mango application with Git. Just initialize a new Git repository, add the project directory, and commit.
226
+
227
+ $ cd /path/to/your/app
228
+ $ git init
229
+ $ git add .
230
+ $ git commit -m "First commit"
231
+
232
+ Next, [get started with Heroku](http://docs.heroku.com/heroku-command#installation) by signing up for an account, installing the `heroku` gem, and adding your ssh public key to their network.
233
+
234
+ $ gem install heroku
235
+ $ heroku keys:add
236
+
237
+ Then [create a heroku app](http://docs.heroku.com/creating-apps) that targets the "Badius Bamboo" plus "Matz Ruby Implementation" 1.9.2 [platform stack](http://docs.heroku.com/stack).
156
238
 
157
- REPORTING ISSUES
158
- ----------------
239
+ $ heroku create APP_NAME --stack bamboo-mri-1.9.2
159
240
 
160
- Is Mango not behaving like you expect it should? Please forgive me! Would you take a moment to shed light on my negligence over at the [Issue Tracker](http://github.com/ryansobol/mango/issues)? Here's a **Pro Tip** -- you can read through existing issues and vote for which issues you'd like to see resolved first!
241
+ Finally, [deploy](http://docs.heroku.com/git) the heroku app. If you've followed these instructions carefully, deployment is trivial.
161
242
 
162
- Thank you for taking the time to help improve Mango.
243
+ $ git push heroku master
244
+
245
+ Now, bask in the glory of your *live application* in the cloud.
246
+
247
+ $ heroku open
248
+
249
+ **TIP:** Like the entire the platform, the `heroku` command-line tool has [great documentation](http://docs.heroku.com/heroku-command).
250
+
251
+ PHILOSOPHY
252
+ ----------
253
+
254
+ ### Painless collaboration
255
+
256
+ Mango is designed to make life easier for small, integrated teams. They prefer tools that allow for shared access to the same resources and for processes that provide instantaneous feedback.
257
+
258
+ ### Harness the power of the Ruby toolbox
259
+
260
+ The Ruby on Rails revolution has arrived. The world's next-generation web applications are built with powerful tools from the Ruby eco-system. Mango is designed to harness this power, but delivered in a smaller package to meet the needs of simpler websites.
163
261
 
164
262
  CONTRIBUTING
165
263
  ------------
166
264
 
167
- Is Mango not behaving like you need? Open-source to the rescue! There is a plethora of documentation to bring a Rubyist of any level up to speed. The API documentation is generated, once the dependencies are met (please see the REQUIREMENTS section), by issuing the follow command:
265
+ **Thank you for taking the time to help improve Mango.**
266
+
267
+ ### Reporting Issues
268
+
269
+ Is Mango not behaving like you expect it should? Please forgive me. Submit a report over at the [Issue Tracker](http://github.com/ryansobol/mango/issues) and I'll get that sorted out.
270
+
271
+ **TIP:** You can read through existing issues and vote for the ones you'd like to see resolved first.
272
+
273
+ ### Submitting Patches
274
+
275
+ Is Mango not behaving like you need? Patches are always welcomed and appreciated. [Report your issue](http://github.com/ryansobol/mango/issues) to make sure we're not duplicating any work and go to town. Alternatively, you can lend a hand on [existing issues](http://github.com/ryansobol/mango/issues).
276
+
277
+ Once you've been assigned an issue, the process for contributing your work back to the source is straight-forward.
278
+
279
+ * Fork the project.
280
+ * Make your feature addition or bug fix **with specifications**. It's important that your hard work isn't unintentionally broken in a future version.
281
+ * Please do not casually alter files in the project root. (e.g. `LICENSE`, `README.mdown`, `mango.gemspec`, etc.)
282
+ * Commit and publish your change-set.
283
+ * Send a pull request. **Remember, all specs must pass.**
168
284
 
169
- $ rake yard
285
+ **TIP:** Take a moment to get a feel for the style of coding, specifications, and in-line documentation.
170
286
 
171
- Patches are always welcome and appreciated! The process is straight-forward for contributing your work back to the source:
287
+ Mango has a plethora of documentation to bring a Rubyist of any level up to speed. Once the development dependencies are met (please see the REQUIREMENTS section), fire up the documentation web server.
172
288
 
173
- * Fork the project -- may I suggest [Github](http://www.github.com)?
174
- * Make your feature addition or bug fix **with specifications**. It's important that I don't break your hard work in a future version unintentionally.
175
- * Please do not casually alter files in the project root. (e.g. LICENSE, Rakefile, README.mdown, VERSION, etc.)
176
- * Commit your changes and publish the change-set.
177
- * Send me a pull request. Remember, all specs must pass!
289
+ $ yard server
178
290
 
179
- Before making your change, take a moment to get a feel for the style of coding, specifications, and in-line documentation.
291
+ Then point your browser to `http://0.0.0.0:8808`
180
292
 
181
- Visit the [Issue Tracker](http://github.com/ryansobol/mango/issues) learn how you can lend a hand and where to start.
293
+ CREDITS
294
+ -------
182
295
 
183
- Again, thank you for taking the time to help improve Mango.
296
+ Thanks to all of my friends and family for their invaluable support!