---
title: "#355: Build A Query Parser Using Ruby, Parslet, and Elasticsearch"
publication: "Ruby Weekly"
issue: 355
published_at: "2017-06-29"
canonical_url: "https://rubyweekly.com/issues/355"
---

#355: Build A Query Parser Using Ruby, Parslet, and Elasticsearch

This week's Ruby and Rails news[Read this e-mail on the Web](http://rubyweekly.com/issues/355)

Ruby WeeklyIssue 355 — June 29, 2017

RailsCasts[All RailsCasts Episodes Now Freely Available](http://railscasts.com/announcements/13)Ryan Bates returns, offering all Pro and Revised RailsCasts episodes for free going forward.


Christoph Lupprich[Single File Rails Applications](https://christoph.luppri.ch/articles/2017/06/26/single-file-rails-applications-for-fun-and-bug-reporting/)It’s possible to create a Rails app from a single file, including migrations, MVC resources, and tests.


Richard Schneeman[How to Write a Lock-Free Queue](https://www.schneems.com/2017/06/28/how-to-write-a-lock-free-queue/)Following up on [a previous post](https://www.schneems.com/2017/06/14/meditations-on-writing-a-queue/) about building a queue mechanism, this post examines atomicity and lock-free code in Ruby.


RedisgreenSponsored[Highly available, scalable Redis](http://www.redisgreen.net/?utm_source=rubyweekly&utm_medium=email&utm_campaign=2017b&utm_content=primary&utm_term=ha+scalable)See inside your database with large key detection, memory mapping, auto-scaling and more from RedisGreen

[![Redisgreen\](https://copm.s3.amazonaws.com/757b71e4.png)](http://www.redisgreen.net/?utm_source=rubyweekly&utm_medium=email&utm_campaign=2017b&utm_content=primary&utm_term=ha+scalable)


Luke Francl[Build A Query Parser Using Ruby, Parslet, and Elasticsearch](http://www.recursion.org/query-parser/)A post on building a grammar and parse tree, complete with heuristics on top of Elasticsearch.


Leigh Halliday[Server Rendering React on Rails](https://blog.codeship.com/server-rendering-react-on-rails/)The art of doing server rendering for React components inside of Rails.


Starr Horne[Replacing a Complex Regular Expression with a Simple Parser](http://blog.honeybadger.io/replacing-regular-expressions-with-parsers/)When reg expressions become complex it may be a good idea to write a parser for your use case.


Jobs

- [Staff Full Stack Engineer in NYC (RoR + AngularJS)](https://boards.greenhouse.io/vts/jobs/698880#.WS3pWBMrLPA?utm_source=rubyweekly&utm_medium=email)We’re a team of guitarists, surfers, cyclists, foodies, gamers, yogis, golfers… who together, are reshaping an industry. Join the fun. VTS
- [Learning Platform Developer (Full stack, based in NYC)](http://bigthink.com/developer.pdf?utm_source=rubyweekly&utm_medium=email)Join the core team for Big Think Edge, a disruptive content and analytics platform for organizational innovation and learning. Big Think

In brief

- [Rails 5.1.2 Released](http://weblog.rubyonrails.org/2017/6/26/Rails-5-1-2-has-been-released/?utm_source=rubyweekly&utm_medium=email) news 
And also [4.2.9](http://weblog.rubyonrails.org/2017/6/26/Rails-4-2-9-has-been-released/). Official Rails Blog
- [How to troubleshoot Ruby apps](https://www.datadoghq.com/dg/apm/ruby-tracing/?utm_source=Advertisement&utm_medium=CooperPress&utm_campaign=CooperPress-RubyAPMS) tutorial 
Identify bottlenecks with end-to-end tracing. Correlate with 200+ technologies and alert on issues in real time. DatadogSponsored
- [A Rails 5.1 Deployment Checklist for Heroku](http://www.akitaonrails.com/2017/06/28/rails-5-1-heroku-deployment-checklist-for-heroku?utm_source=rubyweekly&utm_medium=email) tutorial Fabio Akita
- [Finding Readability of Text Using Odyssey](https://blog.redpanthers.co/odyssey-in-rails/?utm_source=rubyweekly&utm_medium=email) tutorial 
A gem that can analyze the readability of text based on multiple well-known statistical test methods. RedPanthers
- [Working with Facebook Using Devise, Omniauth, Koala + Rails 5](https://revs.runtime-revolution.com/working-with-facebook-using-devise-omniauth-koala-and-rails-5-cde5d032de02?utm_source=rubyweekly&utm_medium=email) tutorial Ana Gonçalves
- [Tips for Using FactoryGirl Without an ORM](https://robots.thoughtbot.com/tips-for-using-factory-girl-without-an-orm?utm_source=rubyweekly&utm_medium=email) tutorial 
If you like FactoryGirl but aren’t using ActiveRecord, this post has done all the hard work for you. Thoughtbot
- [Building & Deploying Ruby Docker Images with CircleCI & Heroku](https://www.backerkit.com/blog/building-and-deploying-ruby-docker-images-with-circleci-and-heroku/?utm_source=rubyweekly&utm_medium=email) tutorial BackerKit
- [An ActiveRecord after_commit Callback Gotcha](https://medium.com/@gnfisher/activerecord-callbacks-an-after-commit-gotchya-183a72f2261b?utm_source=rubyweekly&utm_medium=email) tutorial 
If you’re going to use callbacks, you should know about this. Greg Fisher
- [Common Table Expressions in ActiveRecord: A Case Study of Quantiles](https://sonnym.github.io/2017/06/05/common-table-expressions-in-activerecord-a-case-study-of-quantiles/?utm_source=rubyweekly&utm_medium=email) tutorial Sonny Michaud
- [6 Things I Learnt Today From Reading the Code of Popular Gems](http://blog.arkency.com/2017/06/what-i-learnt-today-from-reading-gems-code/?utm_source=rubyweekly&utm_medium=email) tutorial Arkency Blog
- [The 3 Tenets of Service Objects](https://hackernoon.com/the-3-tenets-of-service-objects-c936b891b3c2?utm_source=rubyweekly&utm_medium=email) tutorial 
Services should have a single responsibility, a limited interface, and return meaningful values. Rob Race
- [3 Hidden Costs of Metaprogramming](http://www.blackbytes.info/2017/06/costs-of-metaprogramming/?utm_source=rubyweekly&utm_medium=email) tutorial Black Bytes
- [The Long Road from Capistrano to Kubernetes [PDF\]](https://phraseapp.s3-eu-west-1.amazonaws.com/cap-to-kube.pdf?utm_source=rubyweekly&utm_medium=email) tutorial 
Slides charting the ways of deploying Rails over the last decade. PhraseApp
- [Using Docker and Codeship for Ruby Development](https://resources.codeship.com/ebooks/docker-and-codeship-for-continuous-integration-ruby-aw?utm_source=email-sponsorship&utm_medium=cpc-ruby-weekly-secondary&utm_campaign=cooper-ebook-docker-ruby-development) 
In this eBook you'll learn how to develop and test a Ruby app with Docker Compose and to create a CI/CD pipeline using Codeship. CodeshipSponsored
- [Quick Tip: How to Shorten Your IRB Prompt](https://twitter.com/wintermeyer/status/878860723304243201?utm_source=rubyweekly&utm_medium=email) video Stefan Wintermeyer‏
- [11 Proposed Small Improvements For Ruby](http://t-a-w.blogspot.com/2017/06/11-small-improvements-for-ruby.html?utm_source=rubyweekly&utm_medium=email) opinion 
The list includes replacing net/http and a JSON-esque ‘Ruby Object Notation’. Tomasz Wegrzanowski
- [Rufo: A Fast Ruby Code Formatter](https://github.com/asterite/rufo?utm_source=rubyweekly&utm_medium=email) tools 
Follows [this Ruby Style Guide](https://github.com/bbatsov/ruby-style-guide) and has some basic configuration options. Ary Borenszweig
- [HexaPDF 0.5.0, Now With Advanced Text Layout Support](https://hexapdf.gettalong.org/news/2017/fifth-release.html?utm_source=rubyweekly&utm_medium=email) code 
Powerful PDF creation from Ruby.
- [Dexter: An Automatic Indexer for Postgres](https://github.com/ankane/dexter?utm_source=rubyweekly&utm_medium=email) code 
Analyzes queries, creates indexes. Andrew Kane
- [Catch Errors Before Your Users Do 💻](https://rollbar.com/rubyweekly?utm_source=rubyweekly&utm_medium=email) ROLLBARSponsored

Curated by [Peter Cooper](https://twitter.com/peterc) and [Glenn Goodrich](https://twitter.com/ruprict), and published by [Cooperpress](https://cooperpress.com/).
Send feedback by simply replying to this mail.
Want to sponsor an issue? See our [media kit.](https://cooperpress.com/mediakit)
Want to post a job? Email us or [use our self-serve system.](https://booking.cooperpress.com/jobs)

[Unsubscribe](*|UNSUB|*) | [Change email address](*|UPDATE_PROFILE|*) | [Read this issue on the Web](http://rubyweekly.com/issues/355)

© Cooperpress Ltd. Office 30, Lincoln Way, Louth, LN11 0LS, UK
[Email policy](https://cooperpress.com/spam.html) [Privacy policy](https://cooperpress.com/privacy.html)
