We just released Beaneater 0.3.1 (the official beanstalkd client for ruby) and Backburner 0.4.1 (battle-tested background jobs with beanstalkd) with plenty of bug fixes and features for both. If you are interested in understanding more about why you would use beanstalkd or backburner, you can read more about that at Why Backburner? and Why Beanstalkd?. We put these together because we'd love to see beanstalkd more heavily used in the ruby community.
nesquena — 43 posts
Creating consistent APIs with jsonapi.org jsonapi.org
Yehuda Katz and Steve Klabnik recently released a work-in-progress draft of jsonapi.org which documents a particular format for creating consistent JSON API responses. This guide documents how to render resources properly along with associated relationships. In order to make following this guide easier when using rabl templating, I have published a conforming to jsonapi.org wiki page. Feel free to contribute to it as their guide is updated.
Backburner Mailer 0.0.1 Released! kr.github.io
Adapted from the excellent resque-mailer codebase, I have created backburner-mailer which is an automatic way to send all of your emails using an asynchronous delivery mechanism. Backburner is a battle-tested asynchronous processing library for Ruby powered by the always under-rated beanstalkd job queue. If you haven't checked out beanstalkd for your asynchronous job processing, I would encourage you to read more about it. If you are interested in learning more, please check out Why Backburner? and Why Beanstalkd?
Padrino Web Framework 0.11.0: Padrino Lives! padrinorb.com
We have just released Padrino 0.11.0 after 9 months of active development and the work of dozens of contributors! Padrino is a powerful agnostic ruby web framework built directly on top of Sinatra. This release includes a totally redesigned admin dashboard, upgrades to the latest Sinatra, CSRF and SafeBuffer support, Gemified and namespaced apps out of the box, and quite a bit more. Read the details in our blog post and in our changelog.
Long Live Padrino (and Sinatra) padrinorb.com
After the last release of Padrino several months ago, we have had a long hiatus of new releases. Well, in the spirit of the new year we have a renewed commitment to Padrino and a couple of announcements. First, we have a new core team member Darío Cravero. Second, we have a Padrino meetup in San Francisco on the 24th which we would love for anyone interested in the area to attend. Finally, we have a new release soon with a whole host of important changes and bug fixes. If you have any questions or feedback for us, please let us on on twitter @padrinorb.
As RABL has been growing in popularity, I have noticed a lot of confusions and misunderstandings about best practices and how RABL works. To help remedy that, I have put together three guides: Understanding RABL, Managing complex logic, and generating flexible responses. In addition, if you are using RABL successfully, please add yourself to People using RABL and let me know if there's any other guides you would find helpful.
Asynchronous Processing in Ruby Series blog.gomiso.com
Every web application has slow requests and the need for background jobs. Just published an article on the Miso engineering blog about asynchronous processing; how it works, why you should never use a database for it, and what we should use. Check out the first part of what will be a detailed series all about job processing, message queues and how to integrate them into your application.
Making RABL and your Ruby APIs Fast spreecommerce.com
RABL is one of the most popular and easiest ways to craft high quality APIs in Ruby as used in large projects like Spree and foreman. As RABL's popularity has grown, I often get questions about improving performance of APIs as the volume of traffic for the web service increases. I released a helpful guide that covers this question in detail called RABL in Production. If you have any other thoughts or questions, please feel free to raise an issue or help improve the article!
Beanstalkd and Job Queues in Ruby nesquena.github.com
Recently, we have been making strides to improve documentation and ruby interfaces for beanstalkd, arguably one of the best job queues available for web applications today. First, we converted the beanstalkd protocol to markdown for better readability. Then, we introduced a brand new production-ready beanstalkd client called Beaneater. In addition, we have released v0.2.0 of Backburner, a complete resque-esque gem for fast, robust and reliable background processing using Beanstalkd. If you have never checked out beanstalkd, be sure to let me know what you think!
Lightweight API Services with Padrino and RABL blog.crowdint.com
On the Crowd Interactive blog, Fernando Castellanos posted an excellent step-by-step guide for building lightweight API services using Sinatra, Padrino and RABL. If you are interested in a lighter and faster way to describe and create APIs with complex JSON responses using Ruby, be sure to check this post out.
Backburner: Reliable beanstalkd job queue nesquena.github.com
Backburner is a recently open-source battle-tested gem for handling jobs using beanstalkd, probably the best job queue available. Everyone is already familiar with Resque and DelayedJob, but why force job queues into Redis or ActiveRecord when beanstalkd is fast, reliable, resilient, persistent and easy to setup. Designed to maintain a consistent and familiar syntax similar to Resque or DelayedJob. If you have used stalker, you will want to check out Backburner as a fully-featured replacement.
RABL 0.6.12 Released blog.gomiso.com
RABL (Ruby API Builder Language) version 0.6.12 has just been released. RABL is a popular way to craft service or API responses of all types (JSON, XML, Plist, Msgpack, et al). There have been many improvements in the last few releases including performance, caching, direct renderers, Rails 3.2 support and more. For an examination of why we built RABL, check out our original blog posts and to get started be sure to check out Railscast #322.
Padrino Web Framework 0.10.6: ActiveSupport 3.2, Improved Logger, HTML5 Helpers and bug fixes padrinorb.com
A while ago Miso migrated the primary database for our Ruby applications from MySQL to PostgreSQL. Back then, we had published a post explaining PostgreSQL setup and tuning in detail. Today, we published a followup post in the series explaining hot standbys, high availability and streaming replication and detailed instructions on how to set these up for your application.
Turn any ruby code into a simple daemon with Dante engineering.gomiso.com
As part of a not-yet-released larger project that we are working on at Miso for managing service-oriented architectures sprung Dante. In our latest blog post, we detail the usage of Dante to manage starting and stopping daemons created from arbitrary ruby code. Dante manages starting, storing pids, accepting CLI options, and more for a process. We use dante for all process management in our new Gitdocs (open-source dropbox) project as well.
Gitdocs: Open-source Dropbox using Ruby + Git engineering.gomiso.com
A couple days ago, we wondered if we could create a Dropbox clone in Ruby using just a simple git repository. We wanted to use this for many documents including shared task tracking, file sharing, storing code snippets, et al with our development team. We also added the ability to view the entire repository in your browser so you can use gitdocs as a wiki. Our blog post details the reasons we ended up building this and how to get started using this for your team.
Writing simple Ruby client/servers using Protobufs engineering.gomiso.com
Miso is excited to welcome Joshua Hull to our engineering team! In his first blog post, he discusses one of the open source projects we have been working on to allow lightweight services to communicate using Google's excellent Protobuf. As a result of using protobufs for inter-service communication, we have released Protoplasm to simplify using them in Ruby. Be sure to check out his blog post for more information.
This month has been a great time for the Sinatra community at large. Sinatra 1.3 has been released with a lot of exciting changes! Naturally, Padrino needs to be taking full advantage of the new Sinatra core. Today, we have released Padrino 0.10.3 with full Sinatra 1.3 support, streaming support, and several major improvements of our own including conversion to a YARD api, major doc improvements, minitest, improved logger and several important bug fixes. Check out our blog post for more detail.
Provisioning Servers with Sprinkle engineering.gomiso.com
Wrote up a detailed blog post explaining how to use Sprinkle to automate server provisioning and configuration. If you have a Rails application, and use Capistrano for deployment, then this will be especially relevant. Sprinkle is built right on Capistrano, has a lot of pre-made recipes and is extremely easy to setup and use. More importantly, unlike many other "simpler" solutions, Sprinkle recipes are idempotent, repeatable, and do not require prerequisites on the target server.
Vendor - Bringing Bundler to iOS? rubygems.org
Using and sharing iOS libraries is tragically difficult given the maturity of the framework, the number of active developers, and the size of the open source community. Compare with Rails which has RubyGems and Bundler, and you have to ask: Why is there no equivalent solution for iOS? In our latest post, we discuss the feasibility of a new approach to iOS dependency management. We would love to hear your feedback.
Several months ago, Miso migrated from MySQL to PostgreSQL after considering multiple persistence alternatives. This new post is the first in a series that explains our experiences with PostgreSQL and how to get it running with your applications. Covers why we chose it, how to tune the database and which parameters are most important.
Persist your data in YAML files instead of SQL. Wait what? engineering.gomiso.com
A couple weeks ago, we open-sourced a simple library called YamlRecord adding a standalone ActiveModel interface to YAML persistence. Today, Nico Taing published a follow up blog post on the Miso engineering blog about how we built this, what we use it for and why it makes sense for us in particular scenarios.
Introducing YAMLRecord! gomiso.com
At Miso, we occasionally ran into situations where we wanted to persist simple data to a text (or yaml) file. Examples include landing page email forms, contact us forms, feedback forms, about us "team" page, etc. In these situations, we wanted a way to persist data to YAML and easily view the results in a text file but also manage the data through forms and controllers as any other data. To do this we have created a YAML-backed persistence engine called YAMLRecord for those situations so we can access YAML based data using a familiar ActiveRecord API.
Padrino 0.10.0 Released! padrinorb.com
The Padrino team just released 0.10.0 which includes major performance improvements (with benchmarks), Rubinius and JRuby Support, enhanced route filters and ordering, along with many compatibility and bug fixes. Read about this release on our blog entry for more details. This release is a serious step towards a 1.0 release as the Padrino API continues to stabilize and mature.
Building a Public API in Rails 3 engineering.gomiso.com
Just wrote up a detailed tutorial about building a public JSON/XML API on the Miso Engineering blog using Rails 3, OAuth, and the RABL gem for creating the response templates. Figured since we just built our fully fledged Public API with several available third-party applications available, that we should document some of our experiences. Let us know what you think and if there are any other related topics you'd like us to post about.
Low hanging fruit for Ruby performance optimization in Rails engineering.gomiso.com
We've been looking into Ruby performance optimization after noticing our site response time increasing in New Relic. While there may be many causes for slow performance, looking into your garbage collection performance is an easy way to impact response time by > 20%. It also helps us identify actions that have especially expensive memory allocation.
PJAX Demo in Padrino padrinorb.com
Just as an experiment, I threw together an adapted version of defunkt's original sinatra PJAX demo and cleaned it up by augmenting it with Padrino in the padrino-pjax project. Check out the live demo to see Padrino+PJAX in action. Mind you the real core to this is all in defunkt's jquery.pjax. Really cool little library!
At Miso, we have been building out a public platform for developers around our service. This means building out many public RESTful endpoints. We have already hosted the first of many developer contests and the submissions were excellent. We ran into a number of challenges while building our public API and our latest post details our frustrations with to_json and why we would never use it to build a clean JSON API. Check out our post and we would love to hear about other people's experiences.
Padrino 0.9.27 Released padrinorb.com
The Padrino team just released 0.9.27 which includes project-wide settings, reverse route recognition, and a multitude of compatibility and bug fixes. Read about this release on our blog entry for more details. We also setup a CI and better release processes as we approach 1.0 which ensure Padrino will run smoothly on every ruby runtime as well as better integration tests that ensure each release doesn't break compatibility with the last.
RABL, The Ruby API Templating Language padrinorb.com
Inspired while building a public API and by frustrations with JSON generating libraries like tequila and json builder, I have created the RABL templating engine which allows you to define JSON and XML APIs in a clean, simple ruby DSL. a The gem also removes code duplication allowing template partials and inheritance. Works with Rails 2.X, Rails 3.X, Sinatra and Padrino. Benchmarks are forthcoming.
Notable Projects using Sinatra + Padrino padrinorb.com
The Padrino team just released a blog post highlighting several interesting applications and libraries using and extending Rack, Sinatra and the Padrino ruby web stack. We are very interested in hearing about other projects leveraging Padrino that we are not yet aware of! Please reach out to us and/or update the wiki projects page with anything missing.
Padrino 0.9.21 was just released today. Padrino is an open-source ruby web framework that builds on Sinatra providing a variety of well-integrated components from an admin backend and form helpers to I18n support and generators. The biggest new feature is the oft-requested nested form object support which allows forms to build multiple related objects at once. In addition translation support for Traditional and Simple Chinese are now available. There has also been a great number of bug fixes in routing and component compatibility as well. The code and sample projects can be seen on Github.
Miso Adventures in Scaling, Part 1: Using REE engineering.gomiso.com
As part of an effort to chronicle our engineering experiences, the Miso team put together a new post detailing how to setup and tune Ruby Enterprise Edition (REE) in order to significantly improve performance of any Rack or Rails application. The first of a series on what has been done to scale our rapidly growing service.
The query_reviewer, a classic Rails utility code.google.com
I have been using the query_reviewer rails plugin since 2009. If you haven't used it, this is the time to take a look. I reviewed and applied all the fixes since into a compilation fork which also turns the utility into a gem. Used for development, this utility will analyze all SQL queries generated on a given page, run EXPLAIN on the slow ones, rate the severity of the various slow or inefficient queries and display that all within an easy to use panel on the top corner of the browser. Thanks Kongregate and David Stevenson for creating this.
Padrino Ruby Web Framework 0.9.20 Released! padrinorb.com
Easy Monitoring with Munin gomiso.com
Recently at Miso (our startup), we have been setting up improved monitoring for our various services such as Varnish. Along the way, we wrote up a guide to using Munin to monitor your applications. Also, since we just started our technical blog in the new year, there is a bonus post describing the various technologies and processes we use to power our applications.
Popular Ruby web framework benchmarks! padrinorb.com
The Padrino Team was frequently asked about how our framework stacks up 'speed-wise' to existing alternatives. Even though we are not benchmark fans (usually too misleading), we pitted the major ruby frameworks against each other in three key benchmark tests. The benchmark implementation and results are available at the benchmark github repo. Please help us improve these if you can!
Padrino 0.9.10 Just Released! padrinorb.com
Padrino is a ruby web framework built upon the excellent Sinatra Microframework. Brand new 0.9.10 version containing added features, bug fixes and speed optimizations. Read about all the latest changes or get started by reading our guides, viewing our screencast, or checking out the github repo for more information!
Padrino is a modular ruby web framework built upon the excellent Sinatra Microframework. Padrino was created to make it fun and easy to code more advanced web applications while still adhering to the spirit that makes Sinatra great! It provides a full set of standardized view helpers, an enhanced router, i18n localization, a Django-esque admin interface, generators, mountable applications and much more. Get started by reading our guides, viewing our screencast, or checking out the github repo for more information!
Try the sinatra_more gem github.com
sinatra_more strives to be a central-hub for useful sinatra extensions such as tag helpers, form_builders, partials, and a whole lot more. I have been working with Sinatra a great deal lately and started writing and collecting various convenience extensions from project to project. Finally, this led me to release the sinatra_more onto github. Check out the README which gives a solid overview.