List Feeds : Dynamic interface Builders for Ruby on Rails


      view feed content DRYML Documentation Milestone (Hobo)   24 d and 8 h ago

The DRYML Guide is finally finished. At long last, DRYML is “fully documented”Whatever that means : )You could easily write an entire book on DRYML (well, when I say easily, I mean you could easily find enough material in there!), but at least the whole language is covered now. At 24 pages when printed, it’s fairly comprehensive.http://cookbook.hobocentral.net/manual/dryml-guideEnjoy!Now on to the other chapers of the manual…Mexico Cialis Viagra Trials For Shrinking Cancerous Tumors Buy Cialis Viagra And Altitude Sickness Buy Discount Viagra Buy Cialis Pharmacy Viagra Penis Doctors Giving Viagra Checkup Viagra Xenical Generic Viagra Cialis Levitra Buy Cheap News Release Viagra For Woman Cb Viagra Kit Cialis Search Buy Tadalafil Cialis Viagra Users Group North China Beijing Time Syphilis Cialis Viagra Reverse The Effects Viagra Large Items Viagra Prescription Orders Get Viagra Drug Online Crushing Cialis Tablets Dropshipper Generic Viagra Cialis Britan Online Us Pharmacies Generic Viagra Softtabs Cialis Mexican Cialis Sale Uk Viagra Kamagra Sildenafil Site Viagra Natural Substitute Viagra Cialis Bathtub Cialis Law Suit Buying Discount Viagra Ocular Side Effects Due To Cialis Cheapest Price For Generic Viagra Cialis Faq Koerier Viagra Cialis Amsterdam Cialis Benifets Viagra Purchase In United States Viagra Onlone Buy Online Uk Viagra Generic Cialis And Us Online Pharmacy Buy Viagra On-line Viagra Hotel Hookers Viagra Extended Use Effects Generic Side Viagra Viagra Denver Online Order Viagra Viagra Mixing Effexor With Cialis Cialis Online Any Quantity Hypertension Viagra Liquid Viagra Best Viagra Online Source Viagra Tablets Uk Buy Viagra Uk Viagra And Heart Medicines Der Kleine Nils Viagra Viagra Non-formulary Question Generic Cialis No Prescription Which Is Better Cialis Or Levitra Cialis Cialis Generico Tadalafil Compra Cialis Kamagra Viagra Viagra Comercial Actress Cialis Generic Levitra Viagra Is Viagra Better Viagra Calgary Viagra Eyes Generic Viagra Soft Tabs Cialis Dependence Generic Viagra 100mg Nutural Viagra Viagra Gel Viagra And Calis Luxury Hotel Rome Viagra Sales Online Uk Biggest Viagra Gang Picture Of Viagra Pill Cheap Viagra Without Prescription Viagra For Sale Australia Buy Viagra In Great Britain Cialis Side Effects Back Pain Viagra Commercials Tv Commercials Generic Cialis Pills Cuba Gooding Jr Cialis Commercial Phentermine Adipex Viagra Cialis Fast Delivery Cialis Comparison Levitra Viagra Generic Viagra Year Mercury Drug Viagra Manila Philippines Cialis Online Online Pharmacy Prescription Soma Adult Jokes Mr Bean Viagra Cialis Taladafil Viagra 100mg Tablets Buy Discount Online Viagra Dr Koop Cialis Drug Description Best Viagra Prices Online More Than One Viagra Day Buy Non Prescription Generic Viagra Paypal Viagra Or Cialis Prices Women’s Viagra Tv Pill Splitter Cialis 5 Sildenafil Viagra Will Alcohol Effect Viagra Viagra Bottle Faster Viagra Working Make Your Own Viagra Viagra And Stanozolol Viagra Pill Cutter Fed Ex Cialis Viagra Eye Exam Generic Lowest Price Viagra Avoid Fake Risk Viagra Decrease In Semen Viagra 5 Viagra Tablets Viagra Isnt Working Ebm Diabetes Viagra Viagra Us Drugs Stors Vicodin Viagra Cialis Sales Of Viagra India Pharmacy Cheapest Cialis Directions For Taking Viagra Viagra Online Shop Cialis Pills Generic Viagra Cialis Reaction Dose Order Single Viagra Myocarditis Viagra Liquid Cialis Dosage Kansas City Ultrasound Jobs Viagra Cheapest Generic Cialis Buy Domain Viagra Atspace Org Beyond Viagra Cialis St Viagra In Canada Viagra Substitute Dry Skin 5 Citrate Generic Sildenafil Viagra Free Herbal Viagra Viagra Viagra And Vascular Disease Viagra Patanol Online Drug Stores Metrogel Acupunture Fue Las Viagra Charles Agujas Viagra Retail Discount Luxury Hotel Rome Womens Viagra Which Is Better Levitra Or Viagra Viagra Newsletter Discount Cialis Online Find Viagra Free Sites News Computer Compare Viagra Cialas Levitra No Prescription Viagra Sample Cialis Pill Splitting Herbal Viagra Chinese Viagra Dragon Power Islandspharmacy Cialis Viagra Not Working And Why Cialis Commentscgi Generic Mt Tadalafil Buy Cialis Dreampharmaceuticals From Online Sniff Viagra Viagra Winstonsalem Cialis Generic Tadalafil Compare Cialis To Levitra Cialis Generic Versus Brand Name Cialis Bulletin Board Information Medical Viagra Rxlist Cialis Tadalafil Generic Viagra Discount Generic Viagra Overnight Shipping Generic Lunesta Myonlinemedsbiz Propecia Viagra Cialis Cialis Cialis Genuinerx Net Viagra Cialis Identification Cleaning Viagra Cialis Half Life Cialis Tablets Taking Viagra With Levitra Herbal Viagra Vs Viagra Overnight Viagra Generex Viagra Viagra Levitra Cialis Nose Info On Cialis Uk Viagra Supplier Info Viagra Buy Cialis Cialisnarodru Domain Cialis New Viagra Viagra Erection Time Cheap Viagra Online A Href Tadalafil Or Cialis 2 Comparison Levitra Viagra Viagra Alternative Zenegra Cialis And Hair Transplants Yohimbe And Viagra Do You Need Prescription For Cialis European Meds Viagra Snl Christopher Walken Viagra Pill Cutter 20mg Cialis Buy Viagra Online Without Prescription Viagra Fuerteventura Free Cialis Softtabs Online Is There A Viagra For Woman Canada Buy Real Viagra Online Methadone And Viagra Cialis Sales Cialis Video Cardiologist Viagra Cialis Duration Viagra Hgh Cialis Order Site Q Viagra Pfizer Viagra Online Viagra Bicycle Shirt Paxil Viagra Pfizer Viagra Dosage Gum Viagra Best Place To Buy Viagra Online Cialis Cialis Forum Pharmacy Mark Martin Viagra Photo Viagra And Gout Free Pack Starter Viagra Buying Online Story Viagra Mexico Viagra Viagra Dependence Cialis Online Fedex What Does Viagra Female Viagra Christmas Discounts Buy Generic Online Viagra Cheap Generic Cialis Overnight Delivery Viagra Mg Best Online Pharmacy Does Viagra Enlarge The Penis Purchasing Viagra In Mexico Too Small Dose Cialis Girls Take Viagra Edinburgh Pages Boring Viagra And Neuropathy Cheap Viagra Without A Prescription Sildenafil Citrate Viagra Viagra Mail Interazione Tra Viagra E Eutirox U 19835 Cialis Paroxetine Viagra Alcohol And Viagra Viagra Damage After 4 Hours Viagra For Jet Lag Cialis Helps Size Generic Cialis Online Discount Drug Viagra Heart Attack Viagra Buy Cheap Discount Pill Viagra Viagra District Of Columbia Cialis Meltabs Cialis Testimonials Written Prescription For Viagra Generic Viagra From India Pages Edinburgh Patanol Cialis Nexium Cheap Drug Retin Viagra Wellbutrin Cialis Allergic Pfitzer Home Viagra 2 Free Viagra Misuse Of Viagra Cialis Rate Viagra And Buy Purchase Viagra In Uk Insurance Birth Control Viagra Viagra Free Sample Womens Cream Equiv Of Viagra Pharmicies For Viagra Online Phamacy Viagra Viagra Drug Indian Cialis Viagra Pulmonary Hypertension 2006 Buy Comment Post Viagra Medicare And Viagra Order Uk Viagra Free Viagra Free Funny Farm Cialis Cialis Sale Uk Generic Viagra Wholesale 100mg Viagra Mailer Kj Pe Cialis Online Pill Viagra Viagra Patent Europe Generic Cialis Overnight Delivery Express Delivery Viagra Experiences Find Sites Computer Viagra Edinburgh Search Tadalafil Citrate Cialis Viagra Pussy Find Search Viagra Free Computer Viagra Debate Whhat Is Viagra Viagra In Uk Kamagra Viagra Oral Jelly Viagra Chemist Online Viagra And Vision Changes Web Md Viagra Viagra Cialis London Kamagra Disolving Cialis Cialis Women Effects 10mg Vs 20mg Viagra Experiance Cialis Stories Interactions Of Different Medications With Viagra Wedding Night Viagra Medlar Viagra Cialis Silagra Pharmacy Cialis Cumwithuscom Find Viagra Free Sites Edinburgh Search Cialis Zestril Interactions Cock S On Viagra Viagra Uk Delivery Can Viagra Be Bought In Lanzarote Viagra Schoolboys To Get Stiff Discipline Buy Locally Viagra Cialis 30 Tadalafil 30mg Ml


[General ]
View original post | Add to del.icio.us | Share

      view feed content The Hobo Cookbook is not The Hobo Cookbook (Hobo)   34 d and 10 h ago

…because, it is growing into a general home for Hobo documentation.

You may have noticed we have a nice new look thanks to James. You may also notice an innocuous looking link in the top right — “Taglibs”. Yep - we now have a nice online reference to the tag libraries. Before you get too excited, many of the tags don’t have proper documentation yet. If you look here you’ll see that many of the tags are in a light grey - those ones don’t have a doc-comment in the source code yet. We’re working our way through them.

At the moment tag names don’t come up in the search, but on that same page you can use your browsers search-in-page, because every tag is listed.

The great thing about having a single home for both the recipes and the reference docs is that we can add all sorts of cool cross linking. Every tag in the reference section could link to “Recipes that show this tag in use”, and recipes could have the tags clickable so you can go right to the reference material for that tag.And of course everything is user-commentable.

Later we’re also going to add “Tutorials” and “Hobo Manual” sections. It will be a one-stop-shop for all your Hobo Documentation needs *smile with tooth-bling*.


[General ]
View original post | Add to del.icio.us | Share

      view feed content Announcing the Hobo Cookbook (Hobo)   45 d ago

Every now and then I find myself in the situation where I need to create a new app from scratch. It’s then that I get to sample the full Hobo experience. And I have to say — wow. Seriously. WOW.

Top priority right now with Hobo is to churn out as much documentation in as short a time as humanly possible. We felt we needed a home for all these docs - a simple app that supports user-comments, requests for documentation, searching etc. Sounds like a distraction from actually writing the docs? : ) Well… what if it only took a day? How much of an app could you turn out in a single day?

Quite a lot, it turns out.

The experience of creating the Hobo Cookbook was literally a rush for me. It really felt like we’re reaching the point where app-development is fast enough that you can sit down side-by-side with the client and have them guide you towards the app they really want and need. Hobo is coming together. In particular the DRYML generators introduced in 0.8 made everything so much easier.

The really encouraging part was that it never felt like Hobo was penning me in. Whatever small tweak I wanted to make in order to improve the app, I was able to quickly achieve without discarding the rest of the automatically generated stuff.

But enough of this idle banter. Ladies and gentlemen, I give you:

It’s even open source, so it provides documentation in more ways than one!

Now we just need to populate it, so that you folks can all learn how to build apps in a single day : )


[General ]
View original post | Add to del.icio.us | Share

      view feed content Hobo 0.8.3 released (Hobo)   [2 views] 47 d ago

I’ve just released Hobo 0.8.3. Various bug fixes, plus a few nice new features, including much better support for multi-model forms. See the changes for the details.

Please remember that Rubyforge takes a good while to get with the program, so gem update hobo might not work for a while. You can download the gem files from Rubyforge manually though.

Enjoy!


[Releases ]
View original post | Add to del.icio.us | Share

      view feed content Docs are moving to GitHub wiki (ActiveScaffold)   49 d ago

In an effort to better open up the ActiveScaffold infrastructure to the community, we’re migrating online documentation over to the GitHub wiki. Please help out! I was able to migrate the documentation pages, but everything from the user wiki should also be moved over to the GitHub wiki. Eventually we will be taking down some of the activescaffold.com pages to better promote the community-editable versions.

Again, the goal is to make it easier for the community to participate in the project at all levels. This should help alleviate any bottlenecks due to busy core devs. If you have ideas or concerns, please direct them to the mailing list in the next month so that the community can participate in the discussion.


[Blog ]
View original post | Add to del.icio.us | Share

      view feed content Hobo 0.8.1 released (Hobo)   [4 views] 78 d ago

I’ve just released Hobo 0.8.2 — mostly a bugfix release. As always it’s tagged in the git repo and the gems are on Rubyforge (so you can just gem update hobo). See the changes for the lowdown.

Enjoy!


[Releases ]
View original post | Add to del.icio.us | Share

      view feed content Hobo 0.8.2 released (Hobo)   [1 views] 78 d ago

I’ve just released Hobo 0.8.2 — mostly a bugfix release. As always it’s tagged in the git repo and the gems are on Rubyforge (so you can just gem update hobo). See the changes for the lowdown.

Enjoy!


[Releases ]
View original post | Add to del.icio.us | Share

      view feed content Hobos Required (Hobo)   80 d ago

It’s becoming increasingly common for people to get in touch with me asking for commercial help with their Hobo/Rails projects. It’s a shame then, that these days I pretty much always have to say no. It’s a shame for them, and it’s a shame for Hobo itself, because the more individual Hobo projects succeed, the more Hobo itself succeeds.

Which is a roundabout way of saying that, if there are developers out there would would like commercial work on Hobo projects, I could probably send some their way. I don’t want to be a middle man, and I definitely don’t want to end up getting embroiled into projects that don’t go smoothly, so… You’d need to be able to convince me that you know what you’re doing, know how to handle clients professionally, and are pretty handy with Ruby and Rails, even if you don’t (yet!) consider yourself a Hobo expert.

I even have a little project ready to go - something that James and I started but we’re both too swamped to move it forward.

If you’re interested, drop me a line at tom@tomlocke.com, subject “Hobo Project Work”. Thanks!

Once we get to Hobo 1.0, we’re thinking we might do something more structured along these via the hobocentral website. A job board for example, or perhaps even a Hobo consulting group, but for now we’ll keep it simple.


[General ]
View original post | Add to del.icio.us | Share

      view feed content New docs and tests on the way (Hobo)   81 d ago

Now I seem to remember I promised a series of blog posts on the new features in Hobo 0.8. Well, just to continue in the great tradition of this blog, I think I’ll change my mind :o)

It just struck me that writing long blog posts instead of getting on with actually documenting this stuff properly is a bit silly. So instead, I’ve launched into The DRYML Guide, mark 2. This is going to be the definitive guide to DRYML and it will cover the whole language.

I’ve also started the work of moving to test/unit and shoulda. The plan is to move either the tests or the docs forward every day.

To whet you’re appetites, here’s the outline for the new DRYML Guide:


[General ]
View original post | Add to del.icio.us | Share

      view feed content Hobo 0.8.1 (Hobo)   84 d ago

I’ve just released Hobo 0.8.1 which contains a bunch of fixes and small enhancements. It’s tagged in the git repo, the gems are on Rubyforge (so you can just gem update hobo), and you can read the changes

Enjoy!


[Releases ]
View original post | Add to del.icio.us | Share

      view feed content New in 0.8 - DRYML Generators (Hobo)   [1 views] 88 d ago

There’s a ton of new stuff in Hobo 0.8, mainly in the area of DRYML and the Rapid tag library. This post is the first in a short series that will give an overview of what’s new, what’s changed and why.

DRYML Generators

This is the big change in 0.8 — we’ve started using generators (gasp!) to create the automatic pages. If you’ve not been following along, you might wonder why the gasp. Well, we’ve always been quite opposed to using generators to automatically create a user-interface for your app. The reason being is that generators are really nothing more than copy-paste code re-use. Which as I’m sure you know is a terribly evil sin : ). The point being that if you’ve got five copies of something, and you want to change it, you’ve got to change it in five places, which is both tedious and error-prone.

Having said that, there’s one thing that generators are really great at, and that’s helping you learn. When you’re new to Rails itself, for example, it’s really useful to be able to look at the restful controller created by the scaffold generator. You learn at a glance how you’re supposed to use the provided API.

When it comes to DRYML, a natural first step when wanting to customise something in the UI, is to look at the source for that tag definition. The problem is that lots of the tags within the Rapid library are very unusual. Unusual in the sense that they’re not like the kind of tags that you would typically define in your own application. That’s because these tags have been written with no knowledge whatsoever of your application, they’re entirely generic. A good example is <show-page>, which does a remarkable job of presenting a reasonable looking page for any model that you throw at it. OK so you want to customise your <show-page>, so you go look at the source. Uh oh. All the logic for handling that generic magic is right there in the tag definition. As a result, we’ve noticed people copy some of these generic tricks into their own apps. This is really not a good idea — your app does not need to be generic, it’s specific to what you are doing.

So we don’t want DRYML generators because we don’t want DRYML to become WETML, but we would really like a generator-like approach to making DRYML, and Rapid, easier to learn. Here’s what we came up with…

The parts of Rapid that were very generic: the pages, cards and forms, are now generated. You can go look at the source code. You’ll find very simple code that’s been tailored to your application and is a good guideline for how you should write your own tags. But there’s a twist. The problem with generators is — what happens when things change. Easy! We just generate again and overwrite the old tags. Huh? What about my edits? That’s the twist - you don’t make any.

The generated taglibs are all written out under the directory app/views/taglibs/auto, and the rule is — you don’t edit anything within that directory. Instead, you use the powerful features that DRYML gives you to customise those tags. You can either extend them, which you’d probably do in application.dryml (using the new <extend> tag), or, you just call them and use DRYML’s parameter mechanism to tweak things to your needs.

This post is just to give you a heads-up of the thinking behind this feature, not to document how it all works, but here’s a quick example. Suppose you have a Story model, which has a title, and Rapid has automatically given you a show-page that uses that title as the main heading. But that’s not exactly what you want — you want the heading to always start with “Story:”.

So you mosey over to app/views/taglibs/auto/rapid/pages.dryml and find the tag definition for this page. It might look like this:

<def tag="show-page" for="Story"> <page merge title="Story"> <body: class="show-page story" param/> <content: param> <header param="content-header"> <a:project param="parent-link">&laquo; <name/></a> <h2 param="heading"><name/></h2> <a action="edit" if="&can_edit?" param="edit-link">Edit Story</a> </header> <section param="content-body"> <view:body/> <field-list fields="status" param/> </section> </content:> </page> </def>

That is much easier to understand than the old fully-generic definition of <show-page>. If you never saw it, take my word for it - it was scary : ). We can clearly see that <show-page> is calling <page>, adding a title, a couple of css classes to the <body> and some main content using the <content:> parameter. The content section itself is also very straightforward — we can see a header and a body, a link back to the owning project, the heading in an <h2> tag, the edit link, and so on.

OK so we want to add that “Story:” prefix to the heading. Well we can clearly see that the <h2> in question is parameterised — the parameter is heading. So, thanks to the magic of DRYML, we can simply create our app/views/stories/show.dryml as follows:

<show-page> <prepend-heading:>Story: </prepend-heading:> </show-page>

Now that’s not quite as obvious as simply hacking on the generated file, but once you get used to DRYML’s parameter mechanism, it’s really very easy. The beauty is what happens when you change your app. Say, for example, you decide you don’t want an edit page for stories, so you remove that action in the controller. The page generators are re-run automatically, and the edit link will disappear from your show-page. You’ve got the best of both worlds: the ease of learning that you get from generators, and the flexibility to change that Hobo has always had.

I’m pretty excited about this change. I think it will take the ease of working with Hobo to a whole new level, and we really haven’t compromised any flexibility. How’s that for change we can believe in ;o).


[General ]
View original post | Add to del.icio.us | Share

      view feed content Hobo 0.8 Released (Hobo)   [1 views] 89 d ago

I’ve just tagged v0.8 in the git repo, and released the 0.8 gems on rubyforge.

Enjoy!

Expect breaking changes as always (until we get to 1.0 of course), and expect more than normal, because this is a fairly big release.

I’ve created a page on the github wiki to collect advice for upgrading your existing apps. That page will grow over the next few days, but to get you started, here are the main things you definitely need to do.

First, Hobo in general:

Upgrade gem to 1.2 (you don’t have to do this but it’s so much faster)

$ gem update --system

Add the github gem server as a source (so you get will_paginate)

$ gem sources -a http://gems.github.com

Now you can upgrade Hobo

$ gem update hobo Then, for your app:

You need to run some generators again. Be careful not to overwrite your code! The ‘d’ option to see the differences is useful. You might want (with the user model in particular) to just create a new blank Hobo app with the hobo command and compare the files manually. Run these generators:

From there, go check out the page on the wiki

I’ll follow-up shortly (heh) with a post about what’s new in 0.8.


[Releases ]
View original post | Add to del.icio.us | Share

      view feed content Streamlined has moved to Github (Streamlined Framework for Ruby on Rails)   [1 views] 3 months ago

Streamlined has moved to Github. We’ve already moved all of our other open source here at Relevance to our Github account, so it was long overdue to move Streamlined. The old SVN repo will be phased out and deleted within three weeks, so please plan accordingly.

Github has got be one of the best things to happen to open source and Git in the last year. It takes code collaboration to a new level of sexiness. Please do send pull requests with Streamlined patches and feature ideas, and someone on the Streamlined team will take a look.

We’ll be treating the master branch as the ‘stable’ area, and we will fire up new branches for long-term experimental work. So if you want to use git submodules to track Streamlined, feel free to point them at the master branch. You can also use the new script/plugin support from within Rails 2.1+ to install directly from Github:

script/plugin install git://github.com/relevance/streamlined.git
[news ]
View original post | Add to del.icio.us | Share

      view feed content Tweeting (Hobo)   [1 views] 3 months ago

I finally succumbed

I’ll pretty much only be using this to let anyone that’s interested know what I’m up to with Hobo at a given time. Don’t expect to see “brushing my teeth” or anything like that : )

This is going to be pretty much write-only, too. I’m not good with distractions. So apologies in advance if I don’t respond to your responses.


[General ]
View original post | Add to del.icio.us | Share

      view feed content Lighthouse lights up (Hobo)   3 months ago

It’s a funny thing that when someone offers to pay you to work on something, they tend to want to know what you’re up to. I did tell Owen over at Barquin that I could get the whole thing wrapped up from a beach in St. Tropez and that I’d be back in three or four months, but I could sense that the idea didn’t go down too well.

So we need a bit more visibility, we need it to be clear where we’re going and what we need to do to get there. Of course we need this anyway, to make it easier for folk to contribute to the project. We need to blow the cobwebs off our trusty Hobo Lighthouse.

Tis done! head over there and see how neat and tidy it all is : ) And if you think you’ll be keeping an eye on the tickets, and maybe even filing your own now and then, be sure to read the home page which explains how we’re organising the tickets.

The idea is that we’ll track pretty much everything as tickets, not just bugs and feature-requests, but bigger to-do items such as testing tasks and documentation that needs to be written. I’m not sure everything like that is in there right now, but most of it is.

In other news, we’re long overdue a release. This one is going to be 0.8 because it’s got some cool new features. I was hoping to get it released this week but that looks a bit doubtful now. I see that I’ve got 28 open tickets so I better get cracking!


[General ]
View original post | Add to del.icio.us | Share

      view feed content ActiveScaffold Sponsorships (ActiveScaffold)   [1 views] 4 months ago

I’ve been thinking back to the months leading up to ActiveScaffold 1.0 and about how much the project really owes to those generous sponsors who encouraged a few devs to contribute to the open source community. That was great!

Could it happen again? I think so! We still maintain ActiveScaffold as we have time (props go to Tim for the push to support Rails 2.1), but I think the project could really benefit from another sprint of activity. There are a few things that would help the project to remain stable and would ease community contributions, such as versioned documentation (rdocs!) and a full test suite. But that’s my bias—what do you think it needs next?

If you like the idea of an ActiveScaffold code sprint and would consider being a sponsor (large or small!) would you please fill out a quick survey?

Thanks!


[Blog ]
View original post | Add to del.icio.us | Share

      view feed content Good News (Hobo)   [1 views] 4 months ago

Oops I did it again. Stopped blogging that is. Hands up who thought this blog had died?

Of course those who wanted to know if the Hobo project itself was still active, if they knew where to look, would have headed over here and would have found things to be very much alive. That’s all very well but I really must start blogging more!

OK where were we? About the time of the last post I was just about to head off to Railsconf with some very interesting news. As often happens in life, and even more often with anything related to software development, things didn’t quite pan out the way we expected. I do have news though, oh yes, even better news than I had before in fact.

At Railsconf we announced our plan to form the Hobo Foundation, a non-profit organisation to act as a conduit for companies that want to help Hobo succeed, and a way for developers to put some serious time into the project while still paying the rent. The driving force behind the idea was a company over in Washington D.C., Barquin International, who were to be the initial sponsor. The more we talked to Barquin, the more apparent it became that these guys really wanted to take Hobo seriously. They’re using Hobo in some very critical projects, the first of which rolls-out next month. To cut a long story short, we’ve arrived at a perfect solution which gets Hobo very much on track, and gives Barquin a close link with the on-going development: they’ve contracted me to work on Hobo full-time! The Hobo Foundation lives on in spirit, but for now this is by far the best arrangement for everyone.

That’s right folks, progress is about to take a big leap forwards. You know what this means don’t you? It means all those warm and fuzzy things like a solid test suite, lots of documentation, continuing to separate out all the major sub-components like DRYML into their own projects. Good things are coming!

I want to say a big thank-you to the folk at Barquin for supporting open-source and creating this great opportunity for the Hobo project. Barquin does a lot of work for the US Federal Government, and to be honest, this is the very last place I would have looked for a company willing to stick their neck out for some exciting new technology. It turns out Barquin are not your average government contractor. They’re firm believers in client-centred agile practices, and that approach recently won them (shameless sponsor plug!) the “Small Business Contractor of the Year Award” from the US Department of Agriculture.

Here’s looking forward to really getting stuck in and making Hobo as good as it can be. Maybe I’ll even find time to blog more :-)

(p.s. In fact I’ve got a whole load more to tell everyone about, so do expect more posts over the next few days.)


[General ]
View original post | Add to del.icio.us | Share

      view feed content ActiveScaffold Sortable official release, with Screencast (ActiveScaffold)   [9 views] 6 months ago

I recently updated the ActiveScaffold sortable plugin and resolved a handful of issues. While I was at it, I decided to create a screencast to show off ActiveScaffold and how easy it is to setup.

<embed src="http://www.jumpcut.com/media/flash/jump.swf?id=37B7EC2A246A11DDA3B8000423CEF5F6&#38;asset_type=movie&#38;asset_id=37B7EC2A246A11DDA3B8000423CEF5F6&#38;eb=1" height="400" width="500"></embed> Clarification

The video shows my old github copies of the repositories. The urls to get the repositories are as follows:

ActiveScaffold

ActiveScaffold Sortable


[Blog ]
View original post | Add to del.icio.us | Share

      view feed content ActiveScaffold Saddles up with Git (ActiveScaffold)   [8 views] 6 months ago

With so much fun happening in git land, ActiveScaffold has officially cut it’s ties from Subversion and moved completely over to Git. All git related repositories can be found at the following URL:

http://github.com/activescaffold

Why?

The advantages of using Git are too numerous to identify in a short article, but among them are the following:

- Contributing will be easier for all: you can create your own fork of ActiveScaffold to add a feature or fix a bug. Then submitting your patch is as easy as sending a pull request.

- You don’t have to wait for ActiveScaffold core to accept your changes before updating to a newer version. With git, you can pull updates from core and merge them in with your changes.

- Git is super, super fast. I mean REALLY FAST. It’s incredibly space / bandwidth efficent, too.

- Branching is painless in git. Merging your branches is also painless.

- The concept of a “core team” is diluted. ActiveScaffold core doesn’t have to agree with your awesome save-the-world do-everything feature. Just fork and then build it. If it rocks, other people can use your version.

So Come Hop On!

So, if you haven’t already, come join us on the git bandwagon. There are plenty of easy ways to install git now – packages exist for OS X, Windows, and many distros of Linux.

Yeehaa!


[Blog ]
View original post | Add to del.icio.us | Share

      view feed content ActiveRecord behaviour with associations (Hobo)   [5 views] 7 months ago

The interaction between ActiveRecord and the database is very simple when working with a single record - it’s always pretty clear when the database is going to be changed. What about when you’re working with multiple records and associations? I did some experiments way back at the start of the Hobo project, but recently I wanted to check if anything had changed.

So I threw together some simple experiments, and turned on logging in the console. It’s a bit rough and certainly not exhaustive, but I formatted it in markdown out of habit and then though hey, I should post this, so here it is.

Is this stuff documented somewhere? I never found it if it is. I wonder if most Rails devs know about all this already.

This is all in Rail 2.0.2 BTW.

Some simple models class Post < ActiveRecord::Base has_many :comments has_many :categorisations has_many :categories, :through => :categorisations end class Comment < ActiveRecord::Base belongs_to :post end class Category < ActiveRecord::Base has_many :categorisations end class Categorisation < ActiveRecord::Base belongs_to :post belongs_to :category end has_many (not through) Assigning to the array on a new record

New comments are created along with a new post:

>> p = Post.new => #<Post id: nil> >> p.comments = [Comment.new] => [#<Comment id: nil, post_id: nil>] >> p.save Post Create (0.000601) INSERT INTO posts VALUES(NULL) Comment Create (0.000195) INSERT INTO comments ("post_id") VALUES(1) => true Appending to the array

For a post that exists, the appended comments are created immediately:

>> p => #<Post id: 1> >> p.comments << Comment.new Comment Create (0.000481) INSERT INTO comments ("post_id") VALUES(1) => [#<Comment id: 1, post_id: 1>, #<Comment id: 2, post_id: 1>] Assigning to the array on an existing record

Comments no longer in the array have their foreign_key set to NULL. (I’d guess this changes if you declare :dependent => :destroy, but I didn’t try it)

>> p.comments => [#<Comment id: 1, post_id: 1>, #<Comment id: 2, post_id: 1>] >> p.comments = [] Comment Update (0.001335) UPDATE comments SET post_id = NULL WHERE (post_id = 1 AND id IN (1,2)) => []

New comments in the array are created immediately:

>> p.comments = [Comment.new] Comment Create (0.000504) INSERT INTO comments ("post_id") VALUES(1) => [#<Comment id: 3, post_id: 1>]

Existing comments have their foreign key set

>> p2 = Post.create Post Create (0.000820) INSERT INTO posts VALUES(NULL) => #<Post id: 2> >> c = p.comments.first => #<Comment id: 3, post_id: 1> >> p2.comments = [c] Comment Load (0.000292) SELECT * FROM comments WHERE (comments.post_id = 2) Comment Update (0.000684) UPDATE comments SET "post_id" = 2 WHERE "id" = 3 => [#<Comment id: 3, post_id: 2>] belongs_to

When assigning c.post on an existing comment, the change is saved when the comment is saved:

>> c.post == p2 => true >> c.post = p => #<Post id: 1> >> c.save Comment Update (0.000778) UPDATE comments SET "post_id" = 1 WHERE "id" = 3 => true

When assigning a c.post to a new post, the post is created when the comment is saved:

>> c => #<Comment id: 3, post_id: 1> >> c.post = Post.new => #<Post id: nil> >> c.save Post Create (0.000464) INSERT INTO posts VALUES(NULL) Comment Update (0.000148) UPDATE comments SET "post_id" = 3 WHERE "id" = 3 => true

This happens the same way when the comment is new — both are created together:

>> c = Comment.new => #<Comment id: nil, post_id: nil> >> c.post = Post.new => #<Post id: nil> >> c.save Post Create (0.000499) INSERT INTO posts VALUES(NULL) Comment Create (0.000161) INSERT INTO comments ("post_id") VALUES(4) => true has_many :through Assigning to the array has no effect:

Assignment to p.categories where p is an existing post:

>> p => #<Post id: 1> >> cat = Category.create Category Create (0.000427) INSERT INTO categories VALUES(NULL) => #<Category id: 1> >> p.categories = [cat] Category Load (0.000289) SELECT categories.* FROM categories INNER JOIN categorisations ON categories.id = categorisations.category_id WHERE ((categorisations.post_id = 1)) => [#<Category id: 1>] >> p.save => true

Note there were no changes to the categories table.

Assignment to p.categories where p is a new post:

>> p = Post.new => #<Post id: nil> >> p.categories = [cat] => [#<Category id: 1>] >> p.save Post Create (0.000513) INSERT INTO posts VALUES(NULL) => true

Again, nothing happens to the categories table

Appending to the array does have an effect

Can’t append to a has-many-through on a new record:

>> p = Post.new => #<Post id: nil> >> p.categories << cat ActiveRecord::HasManyThroughCantAssociateNewRecords: Cannot associate new records through 'Post#categorisations' on '#'. Both records must have an id in order to create the has_many :through record associating them.

Can append to a has-many-through on an existing record. The joining record is created immediately:

>> p = Post.find(:first) Post Load (0.000365) SELECT * FROM posts LIMIT 1 => #<Post id: 1> >> p.categories Category Load (0.000294) SELECT categories.* FROM categories INNER JOIN categorisations ON categories.id = categorisations.category_id WHERE ((categorisations.post_id = 1)) => [] >> p.categories << cat Categorisation Create (0.000479) INSERT INTO categorisations ("post_id", "category_id") VALUES(1, 1) => [#<Category id: 1>]

But this is not allowed if the category is new:

>> p.categories << Category.new ActiveRecord::HasManyThroughCantAssociateNewRecords: Cannot associate new records through 'Post#categorisations' on '#'. Both records must have an id in order to create the has_many :through record associating them.

Did you learn something?


[Ruby Skills ]
View original post | Add to del.icio.us | Share

      view feed content Hobo 0.7.5 released (Hobo)   [13 views] 7 months ago

Hobo 0.7.5 is a fairly small release in terms of new features, but does tidy up a few things and fixes some bugs that were causing people trouble. The bigger news is that there’s a whole bunch of new documentation now available.

To upgrade simply

gem update hobo

or grab the files from github or the svn repo and update your plugin directories.

A highlight of some of the changes.

There’s a bunch more little changes — see the changelog for the full low-down.

Then on the tidying up side, there are two major changes. First, we’ve moved to gems for the whole of hobo. Installing the hobo gem should get you hobosupport, hobofields and will_paginate. As a result of this the hobo command no longer tries to fetch anything with subversion.

And we’ve made a change to the structure of the git repo. Because Hobo is really one project, with some sub-components available as spin-offs, it is really much better to have the whole thing in a single repo. So github.com/tablatom/hobo now also contains hobosupport and hobofields in sub-directories. The separate repos on github for HoboSupport and HoboFields will be deleted soon. The one downside is that you can no longer follow “edge Hobo” by using git sub-modules, because git doesn’t support partial exports. We’ll provide some rake tasks to make that easier at some point.

And then there’s the docs.

We’ve got the very beginnings of a complete reference to the Rapid tag libraries. At the moment it’s just generated from the source-code but all we need to do now is start adding in-line documentation comments. The format is probably not ideal either - it doesn’t lend itself to easily searching the whole library. We’ll improve that too in time.

The manual has been extended to include a fairly comprehensive guide to customising Hobo’s RESTful model controller.

James has added some great insights into working with DRYML in the third part of the POD tutorial and with some additions to the DRYML guide.

And finally there’s our first HOW-TO: adding an admin sub-site to a Hobo app. We’ve got a bunch more of these planned which should be very useful.

So! We’re making good on our promise to concentrate less on features and more on making Hobo accessible to others. Mind you, having said that, there’s a cracking new feature in the pipeline…


[Releases ]
View original post | Add to del.icio.us | Share

      view feed content The state of the documentation (Hobo)   [2 views] 7 months ago

While chatting in the hobo IRC channel yesterday, I realised that I should probably do a blog post on the state of the documentation. We’re far from done here. I don’t want anyone to get the false impression that you’re expected to figure out how to use Hobo from the tutorials and guides that we’ve posted already.

If you wanted to use Hobo not so long ago, pretty much your only option was reading the source and asking questions. If you want to use Hobo now, you’ve got some reasonable docs to get you going, but you’ll still need to read some source (especially the DRYML libraries in vendor/plugins/hobo/taglibs). Eventually, you’ll be able to get by on the docs alone and everyone will be happy :-)

There’s all sorts of details that we haven’t documented at all, but there’s two really big gaps: customising your controllers and the Rapid tag library. What I really wanted to talk about in this post is Rapid.

Rapid, in my opinion, is the best part of Hobo. You could say (and in fact I think I did somewhere or other) that everything else in Hobo exists to make Rapid possible. The combination of development speed and flexibility that Rapid brings is something I can’t say I’ve seen anywhere else.

But there’s a catch. You have to know it. And there’s a lot to know: layers and layers of tags calling tags calling tags. If you know your way around it from top to bottom, you’re singing. If you don’t, you’re probably writing way more view code than you need to.

You should get a good sense of this from the Agility tutorial. Towards the end you’re asked to code up bits and pieces of DRYML. These snippets seem to add functionality that far outweighs their size, but you must be thinking “how was I supposed to know that?!”

Some folk seem perfectly happy to read the DRYML taglibs and find their way around that way, but we really, really need docs for this stuff.

This is not meant as an apology, and it’s not going to be a promise to deliver X by Y. It’s just to let you know that those docs are very much on the to do list (and near the top), and please don’t think that you’re expected to just know what to do.

An idea that came out of that IRC chat was to create a tutorial that starts with a full app, in “normal Rails” style, and goes through how to gradually Hoboize it. In the view layer we could explain how to factor out all the HTML into layers of DRYML tags. That would not only show how to use bits and pieces from Rapid, but would also illustrate why Rapid is like it is. It would throw a lot of light on the whole of Hobo in fact. Could be a lot of work though, so don’t hold your breath until it’s ready :-)

p.s. On the subject of docs I just noticed that the HoboSupport docs are messed up — there’s a whole bunch of pages that aren’t linked to. like this one for example. Will fix!


[General ]
View original post | Add to del.icio.us | Share

      view feed content [Ruby Skills] * and where (Hobo)   [3 views] 7 months ago

This is the first post in a new category I’ve added to the blog: “Ruby Skills”. It’s a place for me to share Ruby tricks and tips I’ve picked up along the way. Sometimes, as with this post, I’ll post about the Ruby extensions in HoboSupport. Now that HoboSupport is available as a gem, you can easily use these tricks in any Ruby project.

First up, two new Enumerable methods that HoboSupport adds: * and where. Attentive readers might be thinking — hang on, Array already defined *. Don’t worry, it still works.

* is some syntactic sugar for map. The idea is that we use ‘dot’ to call a method on one object, and we use ‘dot star’ to call a method on a whole collection of objects, returning all the results in a new array.

Say users is an array of user objects, and we want all the names:

users.*.name

Nice eh? You can pass arguments too:

users.*.to_json(:only => [:first_name, :surname])

Note that you can’t do

users.*.name.upcase

That would try to upcase the array. You’d have to do:

users.*.name.*.upcase # Not very efficient though

Of course, as a good functional programmer, I wouldn’t dream of giving map some love while neglecting filter (better known in Ruby-land as find_all or select). So you can also do:

users.where.active? # same as users.find_all {|u| u.active? }

There’s also where_not

Given that the result is just an array, we can chain them. Want the names of all the inactive users?

users.where_not.active?.*.name

Very handy in the console.


[Ruby Skills ]
View original post | Add to del.icio.us | Share

      view feed content Welcome to the new hobocentral.net (Hobo)   [3 views] 7 months ago

And finally… Here it is. The site has been restructured with a new front page that does a much better job of communicating what we’re all about. And there’s much more besides…

Hobo 0.7.4 is out. Please see the changes. Note that rubyforge seems to be having a very bad day. Downloading the gem files directy from http://rubyforge.org/projects/hobo seems like a good option. You’ll need both hobo and hobosupport.

There are two, count them, two tutorials on the docs page, as well as guides to the basics of DRYML and the Hobo generators.

The big breakup has begun. The HoboSupport gem, and HoboFields plugin (with the migration-generator) are now available without the rest Hobo. Let the whole world be freed from the drudgery of writing migrations! As you’ll see, HoboSupport and HoboFields are tested and well documented. We’ve achieved both in one go using Python-style DocTests. More on those in a later post.

The source code now lives on GitHub at http://github.com/tablatom. This is a really fantastic step forward giving us:

And of course, if you do the GitHub thing, you’ve got to do the Lighthouse thing too. Lighthouse is now the new Hobo issue tracker.

BUT. More importantly than all that. This all marks the start of a new chapter in the life of Hobo. The documentation that’s available now is just the start. We’re now moving on to extracting DRYML as a separate plugin, which also means doctests for every last DRYML feature. Then it’ll be on to docs for the Rapid tag library.

The one thing that’s missing right now is screencasts. The old ones are still online but they’re so out of date that we’re not linking to them any more. A new series of screencasts based around the Agility tutorial will be created soon.

We will continue to add new features and functionality, and we will sill make breaking changes right up until 1.0, but the focus now is on stability, tests and documentation. Oh, and building a community of contributors. That means you!


[General ]
View original post | Add to del.icio.us | Share

      view feed content Streamlined 1.0 RC3 Released (Streamlined Framework for Ruby on Rails)   [4 views] 8 months ago

Streamlined 1.0 RC3 has been released. This release brings with it a number of bug fixes over RC1, including:

There are lots of other small fixes in this release as well. To grab it, run:

script/plugin install http://svn.streamlinedframework.org/branches/stable/streamlined

The change log has a full list of udates. Please submit any defects you might stumble across on Trac. As always, the mailing list is a good source for information if you have other questions.


[releases ]
View original post | Add to del.icio.us | Share