Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Similar to enginex but can generate and setup multiple individual dummy apps for testing your gem

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 bin
Octocat-spinner-32 lib
Octocat-spinner-32 test
Octocat-spinner-32 .gitignore
Octocat-spinner-32 Gemfile
Octocat-spinner-32 MIT-LICENSE
Octocat-spinner-32 README.textile
Octocat-spinner-32 Rakefile
Octocat-spinner-32 multiengine.gemspec
README.textile

Multi App Engine

Similar to enginex but can generate and setup multiple individual dummy apps (configured for either Mongoid or Active Record) for testing your gem. The gem comes with the following executables:

  • mangine – Create new Engine with Dummy apps
  • dummy – operate on Dummy apps

Usage

$ mengine ENGINE_NAME [options]

Use —help to see supported options.

Example usage

Create a default engine called ‘MyEngine’

$ mangine my-engine

Dummy apps generated:

  • dummy-active_record

Design considerations and TODO

The goal is to implement the functionality described in this section.

Multi app Export/Import

The problem is, that the rails command doesn’t work right within a directory with its own Gemfile. You need to first export the app to a sandbox, then run the
bundle install, rails new or rails g command in this sandbox environment and then importa the app again.
This functionality should be integrated into export and import commands on the dummy generator.

dummy export cancan_active_record --sandbox ~/rails-dummies [--bundle]

dummy import cancan_active_record --sandbox ~/rails-dummies

The sandbox command will export the dummy app to the sandbox (if not there), execute a given command on the dummy app then import the dummy app back in.

dummy sandbox cancan_active_record --command "bundle update"

Release dummy app

There could also be a command to easily release a dummy app. The dummy should be linked to the current version of the gem/engine. Hence the VERSION file (or gemspec version)
could be used to version stamp the gem statement in the dummy apps’ Gemfile. The optional —github option could be used to indicate that the app should draw its engine from an alternative github source. This is useful if someone forks off the original engine and thus wants to demonstrate how the dummy app functions with his version of the engine gem.

dummy release cancan_active_record --github mike

Multi app Generation

There is also a need to be able to run a generator command across all dummy apps, such as fx: rails g scaffold post name:string
Then for each dummy app, the generator will run via the dummy apps configuration.
The dummy generate command will use the sandbox command internally for execution and is merely a “shorthand” for this common operation.

dummy generate ALL "scaffold post name:string"

The ALL name runs the scaffold on all dymmy apps.

dummy generate cancan devise --command "scaffold post name:string" --orms active_record

When the —orms option is used, the command is only run on dummy apps with matching orm postfix

For this example it would generate a Mongoid Post model for the mongoid dummy and an AR model for the AR dummy etc.

Multi app Gem configuration

The multiengine should also have a way to update a set of apps with gems.

dummy update cancan-mongoid cancan-active_record

Run bundle update on each dummy app

dummy install cancan-mongoid cancan-active_record --gems devise cancan

Run bundle install after inserting gems into Gemfile of each dummy app
This command should also attempt to run cancan:install and cancan:configure

These commands should make it much easier to update the dummy apps with some configuration!

This update and install commands will also use the sandbox command internally for execution.

Notes on scaffolding

See scaffoldhub

Would be a cool thing to get rolling…

Dummies for ORMs

Create engine named ‘MyEngine’ and dummy apps configured for A.R and Mongoid

$ mangine my-engine --orms mongoid ar

Dummy apps:

  • dummy-mongoid
  • dummy-active_record

Testing framework

Create engine named ‘Demox’ and a single dummy app configured for Mongoid.
Use Rspec as the testing framework for the engine.

$ mangine demox --orms mongoid -t rspec

Dummy apps:

  • dummy-mongoid

Dummy application types

Create engine named ‘Demox’ and create dummy apps for cancan and devise (types).
For each type create dummy apps for A.R and Mongoid. Use Rspec as the testing framework.

$ mangine demo --orms mongoid ar --types cancan devise -t rspec

Dummy apps:

  • dummy-cancan-mongoid
  • dummy-cancan-active_record
  • dummy-devise-mongoid
  • dummy-devise-active_record

Bugs and Feedback

If you discover any bugs, feel free to send me a message or create an issue on GitHub tracker

MIT License. Copyright 2011 Kristian Mandrup

Something went wrong with that request. Please try again.