Setting up monit on Ubuntu
How to set up monit on Linux
sudo aptitude install monit
sudo nano /etc/monit/monitrc
Make sure to change the default apache location to:
check process apache with pidfile /var/run/apache2.pid
start program = "/etc/init.d/apache2 start" with timeout 60 seconds
stop program = "/etc/init.d/apache2 stop"
and here are the additional lines I comment out / add:
set daemon 60
set logfile /var/log/monit.log
set mailserver localhost
set alert sjobs@apple.com
check process mysql with pidfile /var/run/mysqld/mysqld.pid
start program = "/etc/init.d/mysql start"
stop program = "/etc/init.d/mysql stop"
if failed host 127.0.0.1 port 3306 protocol mysql for 2 cycles then restart
if 5 restarts within 5 cycles then timeout
Thanks to mattmcman.us for help with this.
Rails CKEditor and Paperclip without the ImageMagick
Tried to install Rails CKEditor w/ image/file upload today:
[paperclip] An error was received while processing: #<Paperclip::NotIdentifiedByImageMagickError: /var/folders/... is not recognized by the 'identify' command.>
Turns out the default code on Rails CKEditor tells Paperclip to auto-generate a thumbnail image for you, which requires ImageMagick.
:styles => { :content => '575>', :thumb => '100x100' }
Since I don’t need auto-generated thumbnails, nor do I feel like installing an entire library, I just took out that line in the Picture model (picture.rb) and everything worked.
Htaccess Redirects, Rails Single Resource Routing, PHP APC Installation, OH MY!
In addition to a helpful 404 page, sometimes its nice when you re-engineer an entire major site to check out the top pages from the old site and do some manual redirects in your .htaccess.
Redirect 301 /old-url http://www.domain.com/new-url
Routing for a Singleton Resource on Rails 2 (re-printed from http://www.expressionlab.com/2008/7/14/routing-for-a-singleton-resource-on-rails-2)
While developing your RESTful Rails application, you use ActionController::Resources which magically generates a bunch of named routes to use in controllers and views.
For example, adding the following line to your config/routes.rb:
map.resources :products
gives you these paths: products_path, product_path(id), new_product_path and edit_product_path(id).
If your resource is a singleton one, you should simply do this:
map.resource :store
However, when you try to navigate to the edit action (/store/edit) you will get an error like this:
You have a nil object when you didn't expect it!
The error occurred while evaluating nil.to_sym
from the line that says in your view.
I’ve discovered that there is already an open ticket for this issue. The problem is that Rails still assumes a collection resource. To fix this, you need to explicitly add the path to the form_for helper:
<% form_for(@store, :url => store_path) do |f| %>
Also, you will need to do the same in your update action:
redirect_to(store_path)
Now, if you are like me, you may try to use a singular name for your controller (StoreController). Now, you should get the next error:
uninitialized constant StoresController
Who mentioned StoresController?!
Well, Rails did! As documented here, the default controller name is still taken from the plural name.
To solve this, just add the controller name to your route:
map.resource :store, :controller => 'store'
Now, everything should work fine.
By the way, I have found a patch that allows scaffold generator to produce singleton resources: http://dev.rubyonrails.org/ticket/8832. But I didn’t try it yet. Anyone did?
Installing PHP APC on GNU/Linux Ubuntu Gutsy Gibbon 7.10 (and Debian) (re-printed from http://2bits.com/articles/installing-php-apc-gnulinux-ubuntu-gutsy-gibbon-710-and-debian.html
Complex PHP applications, such as Drupal, can gain a lot of performance benefits from running a PHP op-code cache/accelerators.
APC, Alternate PHP Cache, is now the most maintained free/open source op-code cache, and is being used more and more as it emerges to be the most stable.
The instructions here detail how to get APC running on an Ubuntu server running Gutsy Gibbon 7.10.
First, we need the pecl command so we can download and install APC from the repositories.
Do to so, we execute the following command:
aptitude install php-pear
But, this will not run on its own, we need the following package for the phpize command:
aptitude install php5-dev
We also need the apxs command, which is installed via the following package:
aptitude install apache2-dev
Now we have all the software we need, so we install apc via the pecl command:
pecl install apc
Once that finishes, we need to enable apc in Apache’s configuration. the following command should do this for us.
echo "extension=apc.so" > /etc/php5/apache2/conf.d/apc.ini
Then we restart Apache:
/etc/init.d/apache2 restart
And we are all done. Watch for less execution time per page, and decreased memory usage per Apache process compared to what you had before.
Ruby Regular Expressions
Don’t you hate when you cut your lip on plastic utensils?
Best non-played out joke ever: Hold an iPad up to your face and go “HELLO?”


