house9

random code and what not

Ruby on Rails continuous integration (CI) with Jenkins the easy way with Chef and Knife

Do you need a CI build setup for your Ruby on Rails app?

Here are some chef / knife solo scripts that will deploy a Jenkins server to run your CI build - you could be up and running in less than 1/2 an hour

https://github.com/house9/ci_chef_jenkins_rails

Check out the README for details


Comments

patcon
You might want to look into Pivotal Labs' ciborg project – sounds like it's just what you're looking for :)

https://github.com/pivotal/ciborg

rails :remote => true jQuery events

I constantly find myself looking these up, saving this link for future reference

https://github.com/rails/jquery-ujs/wiki/ajax

contains all of the rails custom jQuery events for remote forms, such as “ajax:success”, “ajax:before”; also includes the method signatures.


Comments

Nick
It's like you opened my brain and looked right into my mind to see what I was thinking. Woah.

Sending email with Rails Mailers, The Random bits…

See the rails guides and railscasts for getting started with Rails Mailers; 
this article includes some additional information on Rails Mailers not included in those articles.

RailsCasts: http://railscasts.com/episodes/206-action-mailer-in-rails-3
Rails Guides: Action Mailer Basics” on the rails guides - The guide covers all of the common mailer tasks
  • setup and configuration
  • attachments
  • layouts

Random Bits
These examples were created using rails 3.2
Add importance headers

NOTE: many email clients will ignore these headers

Add receipt header

NOTE: many email clients will ignore these headers

Testing mailer headers with rspec

If you have rspec-rails gem installed with your rails application then running the generator will stub out most of your mailer tests, including a fixture file for the mailer view, which you may or may not want to remove.

NOTE: test against mail.header, not mail.headers

Use a different layout for some Mailer actions

our default layout is the customer facing one but we want to override it in some cases




Setting up a C.I. build (Continuous Integration) for a Ruby on Rails application


It has never been easier than with Semaphore - Hosted Continuous Integration


How easy is it

  • add semaphore ssh key to your github repo
  • then semaphore automatically determines your ruby version, database, etc…
  • you can tweak the build steps later, the defaults are pretty good

It will automatically detect new branches!!! That means zero setup when the new branch is added



It is not cheap, for personal side projects it might not make sense?
But well worth the money if you are doing paid development

Git Log Formatting

The git log command is great and has tons of good information, but the output doesn’t give you that nice ‘overview’ of the commit history, too much detail on too many lines

I’ve been using the following in my .gitconfig file
l = log -20 –format=’%h %ad %d %an: %s’ –date=short
typing ’git l’ renders the following output:



Last night I watched the Destroy All SoftwarePRETTY GIT LOGS” screencast which takes ’git l’ to the next level

now ’git l’ renders


   

Helper script to delete git tags locally and remote

Might be useful to others, delete a bunch of git tags - remote and locally



Resources

Comments

Arnaud Frugier
git tag -l | grep "^\d" | sed 's/^/git push origin :/' | sh
git tag -l | grep "^\d" | sed 's/^/git tag -d /' | sh

414 Request-URI Too Large


How to configure nginx to accept larger querystring requests

Increase the ’large_client_header_buffers

This is located in the ’http’ section of the configuration

Example:



Rails - ActiveRecord created_by and updated_by gem


Often your application will want to track who created and updated your data.
On a previous rails 2 project I used a plugin called userstamp which worked well, but until recently it did not support rails 3+

I didn’t find any other gems out there at the time, so I put together the clerk gem,
you can install it as a gem in your rails 3+ applications by adding gem ‘clerk’ to your Gemfile, see the README on github for details

NOTE: the current version relies on your database tables having columns named created_by_id and updated_by_id and the gem does not support any custom configuration.