A simple application that allows you to create your own customized HTML start pages by creating and sorting Columns, Boxes, and Bookmarks. The application even has a JavaScript bookmarklet that can be used to create bookmarks from most browser destinations.
HomeMarks was built using the Ruby on Rails framework with a heavy emphasis on object oriented JavaScript to make AJAX requests to a RESTful back-end. Unlike most Rails applications it does not use any inline JavaScript helpers nor does it rely on RJS (Remote JavaScript) for dynamic page updates. Instead it is nearly 100% unobtrusive JavaScript which uses simple HEAD or JSON responses to communicate to the objects on the page. This has yielded very slim controller code which is decoupled from the views and easily testable in isolation at a functional level.
I invite you to not only download and use the application but to also explore the code and tests to see if this implementation is something you might be interested in. HomeMarks was made by me, Ken Collins, as my first pet project while learning the Rails framework (pre 1.0) and has now been rewritten from the ground up using the methods outlined above for the release of Rails 2.1. I hope that you find it useful.
Simply download and/or clone the repository and run the app:bootstrap task.
$ rake app:bootstrap
The rake task assumes that you will be running HomeMarks from your own local computer. The databases will use SQLite3 (rails default) and the following information is requested.
-
The host and port you will use locally to access the app.
-
Email and password. Used to create your HomeMarks account.
It is suggested that you setup a named host in your host file vs using the script/server default of 0.0.0.0:3000. If you run into any errors for required gems (highline/ruby-debug) during the bootstrap process, simply install them.
HomeMarks uses the shoulda testing plugin by Thoughtbot. The git repository is already tracking shoulda as a submodule. Simply do the following from the root of your HomeMarks checkout:
$ git submodule init $ git submodule update