Drumherum
bklippstein.github.com/drumherum/frames.html
“Drumherum” is a german word for “the stuff around it”.
$LOAD_PATH management
smart_init finds the directory named ‘lib’ in your project and adds
-
the (main) directory above
-
the lib-directory itself
to Rubys $LOAD_PATH. So your require statements load the actual version from your (local) project directory, not the (public) gem version.
Also, smart_init sets some release infos for Hoe.
Usage (wherever you are in the directory hierarchy of your project):
<span class='rubyid_if if kw'>if</span> <span class='rubyid_$0 gvar id'>$0</span> <span class='eq op'>==</span> <span class='rubyid___FILE__ __file__ kw'>__FILE__</span>
<span class='rubyid_require identifier id'>require</span> <span class='string val'>'drumherum'</span>
<span class='rubyid_smart_init identifier id'>smart_init</span>
<span class='rubyid_end end kw'>end</span>
<span class='rubyid_require identifier id'>require</span> <span class='string val'>'my-gem-project'</span> <span class='comment val'># actual local version, not the gem version</span>
More:smart_init
Rake tasks for DRY release automation
Usage: Instead of require ‘rake’ use
require 'drumherum/rake'
Tasks:
rake version # VERSION of the current project and the installed gem
rake publish # publish gem & docs on github and rubygems, reinstall gem
rake git_publish # publish current project to github
rake git_publish_docs # publish docs to github
rake rubygems_publish # release actual version to rubygems
More: rake.rb
Hiding and overwriting of rake tasks
Do you want to clean up the messy rake task list? Use hide_tasks to hide unused rake tasks from rake -T.
You hide tasks by clearing their descriptions. After this they still exist, but they are not listed anymore. Usage:
<span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_hide_tasks identifier id'</span><span class='gt op'>></span><span class='rubyid_hide_tasks identifier id'>hide_tasks</span><span class='lt op'><</span><span class='regexp val'>/span> <span class='lbrack token'>[</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span> <span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'symbol val'</span><span class='gt op'>></span><span class='symbol val'>:announce</span><span class='lt op'><</span><span class='regexp val'>/span><span class='comma token'>,</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span> <span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'symbol val'</span><span class='gt op'>></span><span class='symbol val'>:audit</span><span class='lt op'><</span><span class='regexp val'>/span><span class='comma token'>,</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span> <span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'symbol val'</span><span class='gt op'>></span><span class='symbol val'>:check_extra_deps</span><span class='lt op'><</span><span class='regexp val'>/span><span class='comma token'>,</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span> <span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'symbol val'</span><span class='gt op'>></span><span class='symbol val'>:clobber_docs</span><span class='lt op'><</span><span class='regexp val'>/span><span class='comma token'>,</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span> <span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'symbol val'</span><span class='gt op'>></span><span class='symbol val'>:clobber_package</span><span class='lt op'><</span><span class='regexp val'>/span><span class='comma token'>,</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span> <span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'symbol val'</span><span class='gt op'>></span><span class='symbol val'>:default</span><span class='lt op'><</span><span class='regexp val'>/span> <span class='rbrack token'>]</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span>
If you want to override a task, you first have to delete it. Use remove_task for it. Usage:
<span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_remove_task identifier id'</span><span class='gt op'>></span><span class='rubyid_remove_task identifier id'>remove_task</span><span class='lt op'><</span><span class='regexp val'>/span> <span class='string val'>'test:plugins'</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span>
More:RakeTaskCleanup
Unit Tests
You will see a status display for your tests if you use UnitTest instead of Test::Unit::TestCase: More:UnitTest
Easy development of regular expressions
More: show_regexp
More Info
-
Documentation: github.com/drumherum
-
Source code: github.com/bklippstein
-
License: cc-by-sa Creative Commons Attribution-Share Alike 3.0 Germany
-
Autor: Björn Klippstein
Disclaimer
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.