RubyFlow : The Ruby Community Blog

Home   Submit   Sign Up   Log In   leaders   Twitter   RSS Feed  

nesquena — 44 posts

We are excited to announce the 0.12.0 release of our Sinatra-powered framework! With support for Ruby 2.1, a smarter rendering engine, enhanced template support, a rewritten reloader, a more powerful cache store and more, this marks an exciting time for the Padrino community. If you are a Rails developer or have worked with Sinatra, we invite you to check out how Padrino is the perfect complement to Sinatra. Check out the upgrade guide to migrate your project from an older version.
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.
Yehuda Katz and Steve Klabnik recently released a work-in-progress draft of 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 wiki page. Feel free to contribute to it as their guide is updated.
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?
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.
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.
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.
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
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!
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 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
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.
Just released version 0.0.1 of SheetMapper which supports mapping google spreadsheet rows into ruby objects. The use case is for easily parsing and traversing spreadsheet data in which rows can be represented as objects.
The Padrino team just released 0.10.6 stable which includes ActiveRecord 3.2 support, MiniRecord support, Logging upgrades, performance improvements and a lot of bug fixes and component compatibility updates. Read our blog entry on this release for more details!
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.
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.
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.
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
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.
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.
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.
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!
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
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.
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
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
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.
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.
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.
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.
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 is a ruby web framework built as a full-stack extension to the very awesome Sinatra. The latest version released contains a lot of bug fixes and full support for Sinatra 1.1.X and 1.2a. Check out the latest changes in this release in the blog post.
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.
The Terminitor is a brand new rubygem that can simplify your workflow by automatically executing the terminal commands needed to prepare your project. Check out the the source on Github.
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 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!
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.
Jake Scruggs demonstrates how to use MetricFu to produce good looking metrics and reporting for your Rails application.