smart stuff http://www.approximity.com/cgi-bin/blogtariAgile/index.rb Approximity: smart stuff en-us Approximity smart stuff http://www.approximity.com/ http://www.approximity.com/public/images/apxBlue_s.png Active RBAC http://www.approximity.com/cgi-bin/blogtariAgile/index.rb/Ruby/Rails/ActiveRBAC.rdoc <a href="https://activerbac.turingstudio.com/trac">ActiveRBAC</a> is a library for Ruby On Rails that provides a full stack for managing users and permissions. It runs as a Rails Engine and can be set up within minutes for your existing Rails projects. Timesummer - a simple RoR timesheet http://www.approximity.com/cgi-bin/blogtariAgile/index.rb/Ruby/Rails/TimeSummer.rdoc <a href="http://www.timesummer.com">Timesummer</a> is a simple timekeeping application. It was written to make our life as a single remote cowboy programmer easier. The client did not only want working code, but also reports how time was spent. As keeping an excel list or a simple text-file is too much work, we wrote this tiny application. <p> <img src="http://www.timesummer.com/images/TimeSummer_logo_beta.jpg"> </p> <p> Getting started: </p> <ul> <li>Get a free <a href="http://www.timesummer.com/login/signup">account</a>. </li> <li>You book your time on accounts. So setup tasks (accounts) </li> </ul> <p> The general structure is client.project.task. The client might be IBM, the project might be XRT and the task might be design. Then you can add t asks like IBM.XRT.testing, which would mean a testing task. </p> <p> This client.project.task structure has the advantage that it makes it easier to run more complex reports on the data. How much data we do for client X? How much did we do on project Y? </p> <p> <img src="http://www.timesummer.com/images/newCPT.png"> </p> <p> Here we create the client BMW with project RoR and task design. If the client already exists, only the project and the task are created. If the client and the project exist, only the task gets created. </p> <p> You can add tasks only to existing client.project.task combinations, but by entering IBM.XRT.testing, you automatically create the client IBM, the project XRT and the task testing if they did not exist before. </p> <p> Starting/Stopping task </p> <p> Enough! Some people got work todo! OK, it&#8217;s as simple as a cd-player. Press the start and stop button. </p> <p> Task not running <img src="http://www.timesummer.com/images/taskNotrunning.png"> </p> <p> Task running <img src="http://www.timesummer.com/images/taskRunning.png"> </p> <p> This client.project.task structure has the advantage that it makes it easier to run more complex reports on the data. How much data we do for client X? How much did we do on project Y? </p> <p> Enjoy timesummer, and please use the forms on the <a href="http://www.timesummer.com">site</a> to send us feedback. </p> Prototype cheatsheet http://www.approximity.com/cgi-bin/blogtariAgile/index.rb/Ruby/Rails/PrototypeCheatSheet.rdoc Jonathan Snook has posted some nice cheat sheets/desktop <a href="http://www.snook.ca/archives/000531.php">backgrounds</a> on Prototype 1.5.0_pre0. ANN Switchtower 1.0 http://www.approximity.com/cgi-bin/blogtariAgile/index.rb/Ruby/Rails/switchtower1.rdoc SwitchTower is a utility that can execute commands in parallel on multiple servers. It allows you to define tasks, which can include commands that are executed on the servers. You can also define roles for your servers, and then specify that certain tasks apply only to certain roles. <p> Manual: <a href="http://manuals.rubyonrails.org/read/book/17">manuals.rubyonrails.org/read/book/17</a> </p> <p> Project: <a href="http://rubyforge.org/projects/switchtower">rubyforge.org/projects/switchtower</a> </p> <p> Download: <a href="http://rubyforge.org/frs/?group_id=1014">rubyforge.org/frs/?group_id=1014</a> </p> <p> Install: gem install switchtower </p> <p> SwitchTower 1.0 fixes several bugs and adds many new features. </p> Using Selenium to test asynchronous calls http://www.approximity.com/cgi-bin/blogtariAgile/index.rb/Ruby/Rails/selenium_ajax.rdoc Great <a href="http://www.josephmoore.net/2005/11/using-seleniums-waitforvalue.html">read</a> <pre> &gt;Luckily, Selenium has a feature that is horribly documented: waitForValue, &gt;which you can use in the test case directly, and waitForCondition, &gt;callable in a JavaScript-based extension. Using a combination of these, &gt;you can make your Ajax call and wait for any condition that should happen, &gt;such as the DOM changing or values updating. </pre> RoR workshop, Muenchen, April 12-14 http://www.approximity.com/cgi-bin/blogtariAgile/index.rb/Ruby/Rails/GermanyOnRails.rdoc DE: Erfahrene Webentwickler erklaeren Ihnen in drei Tagen alles ueber Ruby on Rails. Bringen Sie einen Laptop mit und sammeln Sie unter Anleitung sofort Erfolgserlebnisse. <a href="http://www.germanyonrails.com">Registriert</a> schnell, denn wir haben nur 20 Plaetze bei 5 Trainern. <p> EN: In 3 intensive days, experienced web developers will teach you everything you need to know about Ruby On Rails. Bring your laptop along, and with guidance you will quickly enjoy the experience of super-productive web application development. Only 20 places are available, so book <a href="http://www.germanyonrails.com">early</a> to avoid disappointment. </p> Ruby on Rails Cheat Sheet http://www.approximity.com/cgi-bin/blogtariAgile/index.rb/Ruby/Rails/RailsCheatSheet.rdoc <a href="http://www.ilovejackdaniels.com/ruby-on-rails/ruby-on-rails-cheat-sheet/">Useful</a>. Debugging RJS http://www.approximity.com/cgi-bin/blogtariAgile/index.rb/Ruby/Rails/DebuggingRJS.rdoc I really love RJS, but sometimes it is great to see the generated Javascript. This blog <a href="http://www.lukemelia.com/devblog/archives/2006/01/09/debugging-your-rjs-calls-in-rails/">entry</a> by Lukemedia helps. Multilingual applications with RoR http://www.approximity.com/cgi-bin/blogtariAgile/index.rb/Ruby/Rails/GlobalizeRails.rdoc <a href="http://www.globalize-rails.org">Globalize</a> is a Ruby on Rails plugin designed to support multilingual applications. It&#8217;s under the MIT License, same as Ruby on Rails. <p> <img src="http://www.globalize-rails.org/images/logo.gif"> </p> <p> Globalize implements three basic types of translation: </p> <ul> <li>Dates, currencies, etc: language dependant, but also (often) country/locale dependant. This feature provides convenient methods for relevant data types. </li> <li>Content in the database, for specific fields in specific tables: once the translates method is added to the relevant model, the fields indicated with that method call gain the ability to have translated content sitting in the database. An operator (possibly the developer) will need to add these translated texts. </li> <li>Arbitrary strings: any string that you would like, with added flexiblity for including parameters (for example: one in the singular form of a phrase and an actual number for the plural form) </li> </ul> <p> Using these three mechanisms, all user-facing content ought to be translatable. </p> RJS Templates http://www.approximity.com/cgi-bin/blogtariAgile/index.rb/Ruby/Rails/RJSTemplates.rdoc It turns out that RJS templates are a new form of template, called JavascriptGeneratorTemplates, and end with a .rjs file extension. <p> Nice <a href="http://www.codyfauser.com/articles/2005/11/20/rails-rjs-templates">intro</a>. </p> <p> Note: Make sure you work with the latest rails version </p> <pre> rake freeze_edge </pre> Rails Migration cheat sheet http://www.approximity.com/cgi-bin/blogtariAgile/index.rb/Ruby/Rails/railsMigrationCheatSheet.rdoc Useful cheat sheet[ <a href="http://garrettsnider.backpackit.com/pub/367902">garrettsnider.backpackit.com/pub/367902</a>]. Using migration allows less independence on the DB used. Yes, my friends and I can&#8217;t agree on which DB to use. DE: Podcast: Rapid WebDevelopment mit RoR http://www.approximity.com/cgi-bin/blogtariAgile/index.rb/Ruby/Rails/RailsTonAbnehmer.rdoc Nach langerer Sendepause geht&#8217;s weiter: Heute mit Thomas Baustert und Ralf Wirdemann uber Ruby on Rails und ihr Buch Rapid Web Development mit Ruby on Rails. <p> Download des Podcasts wie immer unter: <a href="http://www.frankwestphal.de/Tonabnehmer.html">www.frankwestphal.de/Tonabnehmer.html</a> </p> <p> Viel Spas! </p> <p> Frank </p> Making dependent select boxes http://www.approximity.com/cgi-bin/blogtariAgile/index.rb/Ruby/Rails/DepSelboxes.rdoc Adam Hegedus has a nice <a href="http://www.adamhegedus.com/articles/2006/01/19/ajaxed-select-boxes-in-rails">blogentry</a> explaining how to make ajax select boxes. Ajax patterns http://www.approximity.com/cgi-bin/blogtariAgile/index.rb/Ruby/Rails/ajax_pattersn.rdoc .. and of course there is a ajax patterns <a href="http://ajaxpatterns.org/">website</a> :-) Why is rails so successful? http://www.approximity.com/cgi-bin/blogtariAgile/index.rb/Ruby/Rails/Marketing.rdoc Interesting <a href="http://www.ryanripley.com/">blog-entry</a> by Ryan Ripley. <p> Rails is such a success as it has a strong story, good timing, wentviral, and is authentic. </p> Marrying Ferret and Rails http://www.approximity.com/cgi-bin/blogtariAgile/index.rb/Ruby/Rails/ferretOnRails.rdoc Great wiki <a href="http://ferret.davebalmain.com/trac/wiki/FerretOnRails">summary</a> based on a rails mailing by Kaspar Weibel. It works on multiple Active Records. Rails Cheat Sheet http://www.approximity.com/cgi-bin/blogtariAgile/index.rb/Ruby/Rails/CheatSheet.rdoc I found this cheat <a href="http://lhalff.backpackit.com/pub/106727">sheet</a>. Unfortunately I do not know who the author is, but thanks to the anonymous author anyhow. Google Maps in Rails http://www.approximity.com/cgi-bin/blogtariAgile/index.rb/Ruby/Rails/GoogleMapsRails.rdoc Great <a href="http://creativi.st/blog/articles/2005/08/26/gs-part-1-google-maps-in-rails">post</a>. <p> <a href="http://rubyforge.org/projects/cartographer/">Cartographer</a> is a ruby library for Google Maps API. </p> <p> enjoy! </p> [ANN] Action Profiler 1.0.0 http://www.approximity.com/cgi-bin/blogtariAgile/index.rb/Ruby/Rails/ActionProfiler.rdoc Eric Hodel posted the announcement to the rails-ML. <p> <a href="http://rubyforge.org/projects/rails-analyzer">Rubyforge</a> </p> <p> Action Profiler allows you to profile a single Rails action to determine what to optimize. You can use the Production Log Analyzer and action_grep to determine which actions you should profile and what arguments to use. </p> <p> Information on the Production Log Analyzer can be found at: </p> <p> <a href="http://rails-analyzer.rubyforge.org/pl_analyze">rails-analyzer.rubyforge.org/pl_analyze</a> </p> <p> Action Profiler REQUIRES Ruby 1.8.3, even if you just use Ruby&#8217;s builtin profiler. </p> <p> Action Profiler can use three profilers, Ruby&#8217;s builtin profiler class, Shugo Maeda&#8217;s Prof or Ryan Davis&#8217; ZenProfile. </p> <p> Shugo Maeda&#8217;s Prof: <a href="http://raa.ruby-lang.org/project/ruby-prof">raa.ruby-lang.org/project/ruby-prof</a> </p> <p> Ryan Davis&#8217; ZenProfile: <a href="http://rubyforge.org/frs/?group_id=712&release_id=2476">rubyforge.org/frs/?group_id=712&release_id=2476</a> </p> <p> Gem Installation </p> <pre> gem install action_profiler </pre> Adfinem RiskJobs http://www.approximity.com/cgi-bin/blogtariAgile/index.rb/Ruby/Rails/AdfinemLaunch.rdoc We release Version 1 of the rails/Ajax app: <a href="http://www.adfinem.de/account/login">RiskJobs</a>. It&#8217;s written completely in rails. The user profiles get updated using Ajax. <p> RiskJobs is a German Headhunting website for the Risk Management domain. Applicants can fill out their profiles (tree structures) and companies can search: e.g. we need an operational risk expert with 3 years of experience that also knows X, Y and Z. </p> <p> This adds one more app, the ever growing <a href="http://wiki.rubyonrails.com/rails/pages/RealWorldUsage">RealWorldUsage</a> wiki page. </p>