Yesterday I was experimenting with Google App Engine for a little project that I was working on. I literally started from ground zero and could do my thing after a long night. I'm blogging about it to share you the idea and save you some time googling solutions. So, here is the thing in brief: I wanted to parse some feed on periodical basis and send an email with new entries.
Looks like a 10 minutes with Nokogiri and cron jobs. Actually that's true except of the fact that I need to pay for a VPS so that I can run the script with various gems (since I needed to do some work on the feeds before sending, but that's for another topic) and for using cron jobs. Thus, I decided to try something new this time and I went with GAE since it has memecached that I can use as an LRU cache, also it has cronjobs and finally it has a mail system. I'm using JRuby and Sinatra for this project.
Install needed gems, those versions are the ones which worked for me:
Create a simple app:
Now let's create the following files (Please note that the following code can be further enhanced):
Gemfile
config.ru
(fill the sender/receiver emails and the feed URL)
app.rb
cron.xml
(You can set the period here, I'm using 15 minutes intervals)
Now, create an application-id at appspot.com. Then go to Administration >> Permissions and make sure the sender/receiver emails play some role in the app. Personally, I granted them the developer role.
Now, go back to the source and modify the application-id in WEB-INF/app.yaml
We should be ready now, start development server, watch the console and make sure no exceptions are there:
(the first time you execute this, you will prompted to submit the GAE email/pass combination)
It should now be running at http://your-app-id.appspot.com, and in few minutes you should be receiving the first email. If not, go to app engine page then to Main >> Logs and check what's the problem.
I like this stack cause it's Zero cent cost, Zero deployment time, flexible, and it gives me exactly the freedom I want in terms of needed gems. Give it a shot, you won't regret it!