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
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
> random tricks you can do with Rails
There are bunch of really good nuggets in this presentation:
- http://www.confreaks.com/videos/889-railsconf2012-ten-things-you-didn-t-know-rails-could-do
- https://speakerdeck.com/jeg2/10-things-you-didnt-know-rails-could-do
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.
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
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
Random Bits
Testing mailer headers with rspec
Use a different layout for some Mailer actions
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
Last night I watched the Destroy All Software ”PRETTY GIT LOGS” screencast which takes ’git l’ to the next level
I’ve been using the following in my .gitconfig file
l = log -20 –format=’%h %ad %d %an: %s’ –date=shorttyping ’git l’ renders the following output:
Last night I watched the Destroy All Software ”PRETTY GIT LOGS” screencast which takes ’git l’ to the next level
Helper script to delete git tags locally and remote
Might be useful to others, delete a bunch of git tags - remote and locally
Resources
Resources
- http://nathanhoad.net/how-to-delete-a-remote-git-tag
- http://www.linuxquestions.org/questions/programming-9/bash-read-every-line-in-the-files-and-use-the-line-as-parameters-as-another-program-246291/
- http://stackoverflow.com/questions/1605232/use-bash-to-read-a-file-and-then-execute-a-command-from-the-words-extracted
Comments
git tag -l | grep "^\d" | sed 's/^/git push origin :/' | sh
git tag -l | grep "^\d" | sed 's/^/git tag -d /' | 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:
http {
# override to allow long query string
large_client_header_buffers 8 512k;
…
}
Resources
- http://stackoverflow.com/questions/1067334/how-to-set-the-allowed-url-length-for-a-nginx-request-error-code-414-uri-too
- http://nginx.2469901.n2.nabble.com/Nginx-returning-414-even-when-large-client-header-buffers-is-set-td7451517.html
- http://wiki.nginx.org/NginxHttpCoreModule#large_client_header_buffers
Unofficial Twitter Bootstrap Documentation
Unofficial Twitter Bootstrap Documentation
http://unofficial-twitter-bootstrap-documentation.com/
The current project I am working on is running bootstrap 2.0.2 and after the release of 2.1.0 the online documentation for 2.0.x was gone.
I went ahead and compiled the archive docs from the bootstrap github repo into a single site - hopefully others find it useful.
http://unofficial-twitter-bootstrap-documentation.com/
The current project I am working on is running bootstrap 2.0.2 and after the release of 2.1.0 the online documentation for 2.0.x was gone.
I went ahead and compiled the archive docs from the bootstrap github repo into a single site - hopefully others find it useful.
https://github.com/pivotal/ciborg