Kematzy::Tasks¶ ↑
A helpful collection of Rake tasks for improved workflows.
Installation¶ ↑
# Add Gemcutter to your RubyGems sources $ gem sources -a http://gemcutter.com $ (sudo)? gem install kematzy-tasks
Dependencies¶ ↑
This Gem depends upon the following:
Runtime:¶ ↑
-
rake ( >= 0.8.7 )
Development & Tests:¶ ↑
-
rspec (>= 1.2.7 )
Getting Started¶ ↑
These tasks are available:
DB => Database Related Tasks¶ ↑
NB! These tasks are only supporting SQLite3 databases with name ending in .db
for now.
To setup the ../db/
directories used by these Rake tasks.
rake db:setup => creates ../db/bootstraps & ../db/backups in the Rakefile directory.
DB => BACKUPS¶ ↑
To backup a database [db]
and compresses it as a YYYY-MM-DD-[db].tar.gz
file.
rake db:backup:db db=/name-of-database.db => ../db/backups/YYYY-MM-DD-name-of-database.db.tar.gz alias: rake db:backup db=/name-of-database.db
To dump (backup) ALL databases into .sql
files.
rake db:dump => # creates ../db/backups/YYYYMMDD-HHMMSS-development.db.sql # with the following comments in the sql file # -- ++++ -- BACKUP OF DB [ development.db ] -- IN APP [ /full/path/2/your/app ] -- Created on [ YYYY-MM-DD at HH:MM:SS ] -- -- /++++ alias: rake db:backups rake db:backup:sql
DB => BOOTSTRAPS¶ ↑
To dump all current databases as bootstrap .sql
files.
rake db:dump:bootstrap
To bootstrap an existing database with its ..db/bootstraps/*.sql
file.
rake db:bootstrap db=db/development.db => # is equivalent to this: `sqlite3 db/development.db < db/bootstraps/development.db.sql`
To bootstrap a NEW database with a ..db/bootstraps/*.sql
file.
rake db:bootstrap:new db=db/new.db bf=db/bootstraps/somefile.sql # creates the new DB ../db/new.db # and loads the contents of ../db/bootstraps/somefile.sql into it
DB => EXTRAS¶ ↑
To copy the ../db/development.db
into ..db/production.db
.
rake db:production:setup =>
FS => File System Related Tasks¶ ↑
Commonly used file system related tasks.
NB! Use these with care, as they might NOT be 100% solid at this stage.
FS => COPY¶ ↑
To copy files or directories from one location to another.
# copies the file to the directory rake fs:copy from=path/from/filename.ext to=path/to/some/directory # copies the contents of the from directory to the to directory rake fs:copy from=path/from/directory/ to=path/to/some/directory # copies the whole directory to the new path rake fs:copy from=path/from/directory to=path/to/some/new/path
FS => MOVE¶ ↑
To move files or directories from one location to another.
# moves the file to the directory rake fs:move from=path/from/filename.ext to=path/to/some/directory # moves the contents of the from directory to the to directory rake fs:move from=path/from/directory/ to=path/to/some/directory # moves the whole directory to the new path rake fs:move from=path/from/directory to=path/to/some/new/path
FS => CREATE ¶ ↑
To create a NEW directory at the path given.
rake fs:create:dir:new path=path/2/new/dir
Other Create Tasks (more specific to my workflow perhaps)
To create a Classes directory at the path given.
rake fs:create:dir:classes path=path/2/dir => # results in ../path/2/dir/classes being created
To create a Helpers directory at the path given.
rake fs:create:dir:helpers path=path/2/dir => # results in ../path/2/dir/helpers being created
To create a Models directory at the path given.
rake fs:create:dir:models path=path/2/dir => # results in ../path/2/dir/models being created
To create a Routes directory at the path given.
rake fs:create:dir:routes path=path/2/dir => # results in ../path/2/dir/routes being created
PASSENGER => Passenger / mod_rails Related Tasks¶ ↑
To restart the server, and create the ../tmp/restart.txt file (if missing)
rake passenger:init => touch tmp/restart.txt alias: rake passenger:restart rake psr
To turn on “Always Restart Passenger” on each request.
rake passenger:always:on => touch tmp/always_restart.txt alias: rake pson
To turn OFF “Always Restart Passenger” on each request.
rake passenger:always:off => rm tmp/always_restart.txt alias: rake psoff
SYMLINK => Symlink Related Tasks¶ ↑
When developing sites, I keep certain directories out of Git versioning, and instead store them in a ‘shared’ directory one level up from my app.
I then symlink the directories into the ../APP_ROOT/public/
directory.
To symlink all shared directories to public/.
rake symlink:shared dirs=images, photos, downloads,.... => # equivalent of: `ln -s ../APP_ROOT/shared/downloads ../APP_ROOT/public/downloads and so on...
SASS => Sass Related Tasks¶ ↑
This is a very personal workflow task, whereby I essentially have this Sinatra App structure.
APP_ROOT | |-> config.ru | |-> apps | | | |-> app1 | | | | | |-> sass | | | | | | | |_> _pages.sass # | | | | | | | |-> pages | | | | | | | | | |-> home.sass | | | | |-> login.sass | | | | |-> .... | | | | | | | | | | | |-> app2 | | | |-> ....
Create a NEW Sass page and include it in the _pages.sass file for loading.
rake sass:page:new page=app1:logout => # creates the ../apps/app1/sass/pages/logout.sass page and includes it in the _pages.sass file
TODOs¶ ↑
-
Make it less personal perhaps.
-
Make the DB Tasks work with both MySQL and SQLite3 databases.
-
Work out how to test all these tasks via RSpec tests, for more solid tasks.
Note on Patches/Pull Requests¶ ↑
-
Fork the project.
-
Make your feature addition or bug fix.
-
Add tests for it. This is important so I don’t break it in a future version unintentionally.
-
Commit, do not mess with rakefile, version, or history.
-
(if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
-
-
Send me a pull request. Bonus points for topic branches.
Copyright¶ ↑
Copyright © 2009 kematzy. See LICENSE for details.