Every repository with this icon (
Every repository with this icon (
tree 63e464afc02375fe0bdf808358aa5d364d7e8435
parent 3de25ade6a99d82d11cd99302fc8d1ac84f4fdea
| name | age | message | |
|---|---|---|---|
| |
.gitignore | Tue Jun 30 09:39:52 -0700 2009 | |
| |
LICENSE | Fri Mar 13 09:47:48 -0700 2009 | |
| |
Rakefile | Fri Sep 11 04:20:31 -0700 2009 | |
| |
Readme.rdoc | Mon Jul 13 08:34:56 -0700 2009 | |
| |
generators/ | Thu Sep 24 08:16:04 -0700 2009 | |
| |
init.rb | Wed Feb 18 08:11:18 -0800 2009 | |
| |
lib/ | ||
| |
recipes/ | Mon Nov 02 18:43:23 -0800 2009 | |
| |
test/ | Thu Sep 24 08:16:04 -0700 2009 |
Moonshine
Moonshine is Rails deployment and configuration management done right.
Deploying Your Rails Application with Moonshine in 15 minutes
Requirements
- A server running Ubuntu 8.10 (Want to see your favorite platform supported? Fork Moonshine on GitHub!)
- A user on this server that can:
- Execute commands via sudo
- Access your application’s Git repository
Instructions
- ruby script/plugin install git://github.com/railsmachine/moonshine.git
- Ensure all required gems are declared using config.gem calls in config/environment.rb.
- ruby script/generate moonshine
- Edit the configuration file at config/moonshine.yml with your apps’s details. (If you’re using a user other than rails, specify this here)
- Edit the Moonshine::Manifest::Rails manifest generated for your application at app/manifests/application_manifest.rb to declare other packages, services, or files your application depends on (memcached, sphinx, etc).
- capify your application
- Your config/deploy.rb can be super barebones, as Moonshine loads
the contents of config/moonshine.yml in as Cap variables and sets
some sane defaults. Here’s what I use:
server "myubuntuserver.com", :app, :web, :db, :primary => true
- Your config/deploy.rb can be super barebones, as Moonshine loads
the contents of config/moonshine.yml in as Cap variables and sets
some sane defaults. Here’s what I use:
- git add . && git commit -am "added moonshine" && git push
- cap deploy:setup
- This will bootstrap your Ubuntu server with Ruby Enterprise Edition.
- cap deploy
- This will install all needed dependencies for your application and deploy it for the first time. The initial deploy will take awhile, as things such as MySQL, etc, are being installed. It’s worth the wait though, because what you end up with is an extremely maintainable server that you’ll never need to SSH into again!
Moonshine and Capistrano
Moonshine tightly integrates with Capistrano, utilizing its callback system to apply your manifests to the server on each deploy. In addition, variables are set in Capistrano for all keys on the config/moonshine.yml hash, allowing your Capistrano configuration to be extremly barebones.
By default, Capistrano applies the manifest at app/manifests/application_manifest.rb. To run a different manifest, for example one to install and maintain packages on a server of a different role:
set :moonshine_manifest, 'memcached_manifest'
If you’d like to prevent Capistrano from applying your Moonshine manifests for any reason:
set :moonshine_apply, false
Local Config
Often, certain files (config/database.yml, etc) are excluded from an application’s SCM, but required to be present for deploy. We’ve abstracted this pattern with some Capistrano automation that goes great with Moonshine.
For example, if you keep config/database.yml out of your SCM, add the following line to your config/deploy.rb:
set :local_config, %w(config/database.yml)
This file will then be automatically uploaded and symlinked to current/config/database.yml on each deploy.
Running Tests
To run the test suite, follow these steps to create a testbed app:
rails moonshine_tests
cd moonshine_tests
git clone git://github.com/railsmachine/moonshine.git /vendor/plugins/moonshine
script/generate moonshine
cd vendor/plugins/moonshine
rake test
Getting Help
You can find more examples in the documentation and on the Wiki.
For help or general discussion, visit the Moonshine newsgroup.








