82,520 minutes on Phusion Passenger »
Created at: 10.04.2009 13:10, source: Robby on Rails, tagged: Ruby on Rails ruby programming PLANET ARGON passenger mongrel development osx rubyonrails rails railsboxcar hosting deployment
It’s been over 83,520 minutes since I made the switch from using mongrel as my development environment web server to Phusion Passenger. I’ve been extremely impressed with it. Our team has all switched over and haven’t really hit any obstacles in the transition.
Since some people asked me to let them know how this trial period worked out, I felt it was my duty to encourage you all to try it. You can check out my previous post, Switch to Passenger (mod_rails) in development on OSX in less than 7 minutes or your money back! to get rolling.
Additionally, if you’re looking for a streamlined Ruby on Rails deployment environment that includes Passenger, check out Rails Boxcar.
more »
20 articles on Cucumber and a free beverage recipe! »
Created at: 10.04.2009 06:22, source: Robby on Rails, tagged: Ruby on Rails ruby programming ruby rspec cucumber testing tdd bdd links recipe water
Cucumber has been getting quite a bit of attention in the community and with the new RSpec Book on nearing publication, I predict that by this time next year, it’ll become a household word like boanthropy.
What is Cucumber?
The Cucumber project describes itself as a suite that, “lets software development teams describe how software should behave in plain text. The text is written in a business-readable domain-specific language and serves as documentation, automated tests and development-aid – all rolled into one format.“
One of the great things about Cucumber is that it can be used to test applications in any language. I haven’t been able to track down a lot of articles of how people are using it with other languages, so please comment if you’re aware of some.
In any event, I’ve been collecting and reading resources from a variety of Cucumber aficionados and thought I’d share some links with you. To round it out, I asked on twitter for some others so that I could hit twenty. :-)
- What’s in a Story?, Dan North
- Telling a good story – Rspec stories from the trenches, Joseph Wilk
- Beginning with Cucumber, Ryan Bates (Railscasts)
- Using RSpec, Cucumber and User stories to build our internal systems, Rahoul Baruah
- Cucumber: The Latest in Ruby Testing, Ruby Inside
- Using Cucumber for Acceptance Testing, Noel Rappin
- Behavior Driven Development with Cucumber, Brandon Keepers (presentation/slides)
- Testing capistrano recipes with cucumber, Jeff Dean
- Using Cucumber to Integrate Distributed Systems and Test Messaging, Ben Mabey
- Tutorial: How to install/setup Cucumber, Alan Mitchell
- Testing outbound emails with Cucumber, Dr. Nic Willians
- Proper Cucumber Sintatra Driving, Chris Strom
- On getting started using Cucumber for .NET
- DRY up your Cucumber Steps, Matt Wynne
- Cucumber, Celerity, & FireWatir, Aidy Lewis (presentation/video)
- Cucumber step definition tip: Stubbing time, Bryan Helmkamp
- Story Driven Development Recipes with Cucumber, Sebastien Auvray
- Testing Facebook with Cucumber, Brandon Keepers
- Testing with the help of machinist, forgery, cucumber, webrat and rspec, Etienne van Tonder
- Integration testing SSL with Cucumber
- Continuous Integration Blueprints: How to Build an Army of Killer Robots With Hudson and Cucumber
So.. there you have it. Please post comments with links to any useful articles not mentioned and I’ll try to keep the list updated.
Also, be sure to check out the list of tutorials and related blog posts on the cucumber wiki (github).
FREE RECIPE: Cucumber Water
And now…for the reason you are all here! If you like cucumbers (eating them)... I would highly recommend heading to your local farmers market and purchasing some cucumbers. Aside from being healthy to eat… they can help make a tasty beverage.
Then do the following…
- Chop several slices of a cucumber
- Fill a pitcher with cold water and ice
- Toss in slices of cucumber
- Stir and leave in fridge for a while
- Take out of fridge, pour into cup…
- Drink… hack… and enjoy
Be sure to check out, How to Make Cucumber Water on wikihow for details.
Happy Hacking!
Related Posts (by me)
- RSpec: It Should Behave Like
- Spec Your Views
- Audit Your Rails Development Team
- Is BDD kinkier than TDD?
more »
Building a prototype? Bring some rope. »
Created at: 09.04.2009 23:57, source: Robby on Rails, tagged: programming PLANET ARGON programming agile prototypes books quote development
While scanning through Allison’s copy of Designing for the Digital Age: How to Create Human-Centered Products and Services, I came across this nugget.
The problem with software prototypes
It seems to be widely understood that industrial design and mechanical engineering prototypes—from paperclips and tape to polished appearance models—are disposable learning tools. Prototyping is clearly distinct from manufacturing, so it would be ludicrous to think that even a late-stage prototype could be reused as part of the final product. In software, however, the tools used for anything other than paper prototyping are generally the same tools used for “manufacturing” (i.e., writing production code). For this reason, many stakeholders can’t see why a detailed prototype that appears functional is still many months away from completion.
It immediately reminded me of a few posts that I had written about three years ago on the topic of developing prototypes and NOT keeping them.
The author continues with…
It’s important to educate stakeholders that prototype code is kind of like the illusion of automatic doors on Star Trek—it looks like it’s working, but it’s really a guy standing behind the wall pulling a rope.
I completely agree that education is the most important aspect to managing client expectations. With regard to the amount of work that you put into a prototype, we need to be careful on how much time and energy is put into them. If we can get away with a guy (or some quick Javascript hacks) to demonstrate possible functionality, make sure we aren’t using much more than rope. Rope is cheap. Prototypes should be too.
Related Posts
more »
HTTParty goes foreign »
Created at: 16.03.2009 09:05, source: Robby on Rails, tagged: Ruby on Rails ruby programming google translation api httparty http REST language
Just a quick post to get share something I was tinkering with this evening.
I came across this post by Gerald Bauer, which shows you how to use the Google Translation API with Ruby via Net::HTTP. I thought I’d play with the service with HTTParty.
class GoogleApi
include HTTParty
base_uri 'ajax.googleapis.com'
def self.translate(string="", to="", from="en")
get("/ajax/services/language/translate", :query => {:langpair => "#{from}|#{to}", :q => string, :v => 1.0})
end
endA few examples from playing with it.
>> GoogleApi.translate('bonjour', 'en', 'fr')
=> "{\"responseData\": {\"translatedText\":\"hello\"}, \"responseDetails\": null, \"responseStatus\": 200}"
>> GoogleApi.translate('Red wine', 'fr')
=> "{\"responseData\": {\"translatedText\":\"Vin rouge\",\"detectedSourceLanguage\":\"en\"}, \"responseDetails\": null, \"responseStatus\": 200}"
>> GoogleApi.translate('Where is the bathroom?', 'es')
=> "{\"responseData\": {\"translatedText\":\"\302\277D\303\263nde est\303\241 el ba\303\261o?\",\"detectedSourceLanguage\":\"en\"}, \"responseDetails\": null, \"responseStatus\": 200}"
>> GoogleApi.translate('Good morning', 'it')
=> "{\"responseData\": {\"translatedText\":\"Buon giorno\",\"detectedSourceLanguage\":\"en\"}, \"responseDetails\": null, \"responseStatus\": 200}"
What a party!
>> GoogleApi.translate('party', 'it')
=> "{\"responseData\": {\"translatedText\":\"festa\",\"detectedSourceLanguage\":\"en\"}, \"responseDetails\": null, \"responseStatus\": 200}"
>> GoogleApi.translate('party', 'es')
=> "{\"responseData\": {\"translatedText\":\"fiesta\",\"detectedSourceLanguage\":\"en\"}, \"responseDetails\": null, \"responseStatus\": 200}"Look how easy that was. :-)
For a previous post on using this gem, read The HTTParty has just begun.
more »
Git commit-msg for Lighthouse tickets »
Created at: 16.02.2009 21:51, source: Robby on Rails, tagged: programming git lighthouse github workflow bash
A quick follow-up to a post from a few months ago on how our team has a naming convention for git branches when we’re working on Lighthouse tickets (read previous post).
I’ve just put together a quick git hook for commit-msg, which will automatically amend the commit message with the current ticket number when you’re following the branch naming conventions described here.
Just toss this gist into .git/hooks/commit-msg.
#!/bin/sh
#
# Will append the current Lighthouse ticket number to the commit message automatically
# when you use the LH_* branch naming convention.
#
# Drop into .git/hooks/commit-msg
# chmod +x .git/hooks/commit-msg
exec < /dev/tty
commit_message=$1
ref=$(git symbolic-ref HEAD 2> /dev/null) || return
branch=${ref#refs/heads/}
if [[ $branch =~ LH_(.*) ]]
then
lighthouse_ticket=${BASH_REMATCH[1]}
echo "What is the state of ticket #${lighthouse_ticket}? "
echo "(o)pen "
echo "(h)old"
echo "(r)esolved"
echo "Enter the current state for #${lighthouse_ticket}: (o)"
state="open"
read state_selection
case $state_selection in
"o" )
state="open"
;;
"h" )
state="hold"
;;
"r" )
state="resolved"
;;
esac
echo >&2 "[#${lighthouse_ticket} state:${state}]" >> "$1"
exit 0
fi
Then a quick example of how this works…
➜ bin git:(LH_9912 ♻ ) git ci -m "another test"
What is the state of this ticket?
(o)pen
(h)old
(r)esolved
Enter the current state: (o)
h
Created commit 1ed2713: another test
1 files changed, 3 insertions(+), 1 deletions(-)
Now to see this in action… (screenshot)
Then we’ll check out the git log really quick.
➜ bin git:(LH_9912) git log
commit 1ed271323c4a054fe56e76bddc9ac81d241a1032
Author: Robby Russell <robby@planetargon.com>
Date: Mon Feb 16 12:06:33 2009 -0800
another test
[#9912 state:hold]
Thanks to Andy for helping me figure out how to read user input during a git hook.
more »

