random thoughts

PayPal IPN madness with Ruby on Rails

Lately I’ve been implementing Instant Payment Notification - great feature provided by PayPal. To be honest it cost me quite some time and a little bit of my dignity. I mean you can read the official guide and play with Instant Payment Notification (IPN) simulator - but in the end it’s back to trials and errors.

So here we go, here are some tips for you, I hope you will find them useful and it will save you some time.

PayPal IPN madness with Ruby on Rails

Morris.js display:none workaround

Morris.js is great, simple and lightweight charts library powered by jQuery and Raphael. Unfortunately you may encounter an issue when you will try to plot a chart on element with display:none property - for example when using Twitter’s Bootstrap tabbed component - it just doesn’t render properly. So as a quick workaround you can fire-up after showing that element. Bootstrap provides some neat javascript events that are fired after some specific actions.
Morris.js display:none workaround

How fast your tests are? - Working with rspec outside rails

Rails is a great framework, isn’t it? It’s ships with all those great tools witch are supposed to help you automatically test your application. So you write specs, you practice TDD, BDD or maybe DDD, but over time you may notice something - it’s getting painfully slow. You app grows, your test suite grows and suddenly testing isn’t anymore so much fun as it supposed to be. You feel like it’s slowing you down.

How fast your tests are? - Working with rspec outside rails

Project released!

Finally, after initial commit_ I did almost year ago (30.12.2011) I decided it’s time to release this app I’ve been working on. I spent many, many hours after work and I don’t regret it - I learned A LOT of rails and now I can say I’m pretty confident when it comes working with RoR. Yet I’m aware I kinda rushed it a little bit, but to be honest - year is a long time and I felt, I don’t know, personal pressure - I just had to release it before 2013 :P.
Project released!

Diary of Legacy Application

Some time ago I wrote two short stories (1, 2) about my journey with migrating legacy php application to rails. And yes - that’s topic is till on my plate :P. I didn’t had much time to push it till the finish (not mention posting on my blog), but I’m getting there.

Diary of Legacy Application

Dealing with Omniauth redirect_uri_mismatch (invalid port number gotcha)

Lately I had some problems with invalid callback url I was getting on my production server (shared host). Omniauth in response included port used internally by nginx (eg. this could be the case eg. when you have varnish in front of you web server) - after browsing the source code of omniauth gem I have found out that you can easily fix if without even touching webserver configuration (and I didn’t had access to it anyway :P).
Dealing with Omniauth redirect_uri_mismatch (invalid port number gotcha)

Hook up aspell dictionary into your rails app

How to check spelling in your rails app in three quick steps.

Hook up aspell dictionary into your rails app

Create build system for PHP under Sublime Text 2

Lately I’ve been working quite a lot with unit test using SimpleTest - so I often had to run scripts directly from command line. But wouldn’t it be cool if I just could write a test and run it directly under my code editor without even leaving it? And if you using Sublime Text 2 (and I really recommend checking it out - it’s gorgeous, it’s slim, it’s ultra fast and you can do basically everything with it) - you easily can.

Create build system for PHP under Sublime Text 2

Testing private methods with SimpleTest - example

2017 Update note: before proceeding think if you really want to test underlying implementation of a class in the first place ;-)

Here’s quick example how to test private class method with SimpleTest using RelectionClass (while you are reading about reflection class I will also point you directly to reflection method and what it’s all about).

Testing private methods with SimpleTest - example

Super fast deployment with mina - capistrano alternative

Mina is an interesting alternative for capistrano. It’s really tiny, easy to configure and fast as hell. Overall usage is very well documented, so to avoid repetition I’ll just describe very specific case of deploying rails apps on a shared server through use of a gateway (or whatever you may call it).

So it happens I keep my personal project on ones of those shared servers - it’s just cheaper and I don’t have to bother with upgrades, system security etc. - assuming my provider knows what he’s doing of course ;). I can normally log through ssh on my shell account and then from that machine I can ssh to yet another machine that hosts my sites.

Super fast deployment with mina - capistrano alternative