Rubyland

news, opinion, tutorials, about ruby, aggregated
Sources About
Ruby Weekly 

The one where Haml and RMagick return from the dead?

#451 — May 23, 2019

Read on the Web

Ruby Weekly

httplog: Log Outgoing HTTP Requests in Ruby — If you want to debug pesky API integrations or just get a feel for what’s going on under the hood with certain libraries you’re using, this hooks into the popular ways to fetch HTTP from Ruby and logs everything for you. Version 1.3.0 just came out.

Thilo Rusche

Google Cloud Run on Rails: A Real Life Example — A four-part series on creating a Rails application and deploying it using Google Cloud Run, which brings “serverless to containers.”

Laurent Julliard

Get the Fastest RoR Deployments. Get Started…

Code with Jason 

My experience speaking at 7 tech conferences in 9 months including RailsConf, RubyHACK and RubyConf India

Why I wanted to speak at tech conferences

On and off since 2011 I’ve been a freelancer—or, to use the term that I think sounds better, consultant. The vast majority of the work I’ve done as a “consultant” has just been full-time-ish staff-aug contracting. In other words, I worked a lot of contract jobs where dI was paid hourly as opposed to salary but by every other measure I was just another developer on my client’s development team, and my client was basically my employer.

Ever since the time I started freelancing it’s been my desire to move on the freelancer-consultant spectrum from the “freelance” end of the spectrum to the “consultant” end of the spectrum. My understanding is that…

Test Double | Our Blog 

I'm ashamed to say it.

When I was in college and job searching, I had an interviewing experience that still haunts my nightmares.

The process involved a series of onsite conversations and activities that was meant to last all day. While the conversations were going well, I misunderstood some instructions in the coding interview and completely bombed it. It was so bad that my next interviewer came in and let me know that obviously I didn't have any sort of web experience whatsoever (I did), and they definitely weren't offering me the job. They invited me to stay for the dinner at the end regardless.

Now, there is a correct order of operations here for recovery. The company—in retrospect—handled this poorly, but…

BigBinary Blog 

Rails 6 adds if_not_exists option to create_table

This blog is part of our Rails 6 series. Rails 6.0.0.rc1 was recently released.

Rails 6 added if_not_exists to create_table option to create a table if it doesn’t exist.

Before Rails 6, we could use ActiveRecord::Base.connection.table_exists?.

Default value of if_not_exists option is false.

Rails 5.2

Let’s create users table in Rails 5.2.

>> class CreateUsers < ActiveRecord::Migration[6.0]
>>   def change
>>     create_table :users do |t|
>>       t.string :name, index: { unique: true }
>>
>>       t.timestamps
>>     end
>>   end
>> end

>> CreateUsers.new.change
-- create_table(:users)
CREATE TABLE "users" ("id" bigserial primary key, "name" character varying, "created_at" timestamp

Now let’s try creating users table again with if_not_exists option.

>> class CreateUsers < ActiveRecord::Migration[6.0]
>>   def change
>>     c…
RubyMine Blog 

Learn RubyMine with IDE Features Trainer


RubyMine
provides you with loads of different useful features for working with source code: from basic code editing, smart navigation, and completion, all the way through to debugging remote applications. We always try to make features easy to use and discoverable, but sometimes it happens that our users still don’t know about some pretty handy capabilities. For example, when communicating with our users at conferences, we note that even the most grizzled veterans of RubyMine, that have been using it for years, sometimes don’t always know about some of the most basic navigation abilities that RubyMine provides, like Go to Class, not to mention the more advanced features. That’s why we have…

Riding Rails 

Performance improvements, large file uploads to S3 and more!

Hello fellow Rubyist!

This is Greg, bringing the latest news about the Rails framework!

Fill a Trix editor easily in system tests

ActionDispatch::SystemTestCase#fill_in_rich_text_area  can  locate and fill a Trix editor with the given HTML in your system tests.

ActiveRecord#respond_to? performance improvements

The changes introduced by this pull request made ActiveRecord#respond_to?  1.5x faster and it also no longer allocates strings.

Permit uploading files larger than 5 GB to S3

If you are using S3 with Active Storage, now you can upload large files and the services will transparently switch to streaming.

HashWithIndifferentAccess#initialize performance improvement

With this…

The Miners - Medium 

Scalable Frontend #3 — The State Layer

Scalable Frontend #3 — The State Layer

Patterns for the single source of truth

State tree, the single source of truth
This post is part of the Scalable Frontend series, you can see the other parts here: “#1 — Architecture” and “#2 — Common Patterns”.

When dealing with user interfaces, it is mandatory to manage the state to be displayed to or changed by the user, no matter the scale of the application we happen to be working with. The source can be a list fetched from an API, input obtained from the user, data from LocalStorage, and so on. Independently of where this data comes from, we’ll have to deal with it and keep it in sync with a persistence method, be it a remote server or…

All Ruby Podcasts by Devchat.tv 

MRS 089: Maciej Mensfeld

Sponsors

  • Sentry– use the code “devchat” for 2 months free on Sentry small plan

  • CacheFly

Host: Charles Max Wood

Guest: Maciej Mensfeld

Summary

Maciej Mensfeld, a polish developer, shares his story with Charles Max Wood. Maciej starts with how he got into computers through gaming and explains how his interest depends later in school. Maciej discusses learning programming in high school and the influence of one teacher especially. Charles and Maciej share experiences working with PHP. Maciej shares his experiences in different jobs and projects, finding rails and ruby. Maciej discusses his current job, the European ruby community he is involved with and what his everyday life…

The Bike Shed 

199: Pave That Path

On this week's episode, Steph and Chris talk about PR sizing, load testing (the weird way), and ponder the merits and pitfalls of personal style in code. They also discuss Hertz suing Accenture for undelivered software and the belief that engineers should talk to users! This one truly has something for everyone.

Search Results for “ruby” – via @codeship 

Software Development: The Road to Mastery

Reading Time: 9 minutes

No one is born with mastery in software development. It’s a journey that takes years of experience to attain. Whether born from curiosity, given an assignment, or necessity, many of the steps to achieve mastery are much the same. There are also aspects of learning and honing in mastery in other skills, professions and physical disciplines that cross over well as forms of practicing self-discipline. Both mind and body are keys to mastery as you go through the stages of grasping knowledge, experientially reinforced knowledge, which becomes wisdom in applicative use, and then seems to be akin to muscle memory and a sixth sense. The most difficult challenges are the…

RubyGuides 

How to Play MP3 Files With Ruby, VLC & The FFI Module

I want to answer one simple question… What is FFI in Ruby? FFI stands for “Foreign Function Interface”. It’s a way to use functions defined in other programming languages. This gives you access to libraries & code that otherwise you would not have. In Ruby, we often use this to work with C code. Examples […]

The post How to Play MP3 Files With Ruby, VLC & The FFI Module appeared first on RubyGuides. Don't miss your free gift here :)

avdi.codes 

SIGAVDI #53: Tamale Edition

Hello friends,

I'm on my mom's back porch on a sunny Sunday in Knoxville. Last night I spent a solid 6 hours dancing and socializing at my favorite club night. Today I feel pleasantly fatigued and a bit languid.

A minute ago I looked up one of my old blog articles and was struck by how much of an asshole I used to be. When I started blogging I was strongly influenced by the tone of early popular blogs, which were mostly White Men Having Smug Opinions About Things. I guess I thought: ah, this must be how you make a name for yourself: have loud Hot Takes about everything, and criticize the writing of people with a bigger following until someone takes notice of you.

At first I thought this was…

Andy Croll 

Watch Out For nil in Ranges

Ruby 2.6 enhanced the syntax for Range to allow for infinite values at either end, therefore allowing them to be “endless”. The new syntax is described in the Ruby documentation.

This is great for representing concepts such as date ranges between some date and one anytime the future, but this new “sugared” syntax changes existing behaviour.

Ruby used to…

…raise an ArgumentError when a nil was passed into a range…

end_of_range = nil
(1..end_of_range).map { |i| do_something(i) }
#=> ArgumentError (bad value for range)

But now…

…beware that a Range ending in nil no longer throws an error, but represents an endless range.

end_of_range = nil
(1..end_of_range).map { |i| do_something(i) }

Why be careful?

Ruby 2.5, and…

All Ruby Podcasts by Devchat.tv 

RR 413: When Your Tools Interrupt Your Coding Process

Sponsors

Panel

  • Charles Max Wood

  • David Richards

  • Andrew Mason

  • Nate Hopkins

  • David Kimura

Episode Summary

In this episode of Ruby Rogues, the panel discusses how having too many tools in your code can make things more complicated. They talk about if the processes and tools that hurt productivity should be taken out. They question if outdated but harmless tools should be updated for newer ones that have more functions.

They discuss the difficulty with…

Remote Ruby 

Live with Justin Searls

Awesome Ruby Newsletter 

Issue 156 - Opal 1.0

Ruby Weekly 

Opal 1.0, RubyKaigi videos, and creating diagrams of your Rails models

#450 — May 16, 2019

Read on the Web

🎉 After a bit of a drought of new Ruby projects over the winter, there have been a lot of releases lately so scroll down and check out the Code & Tools section this week for sure — it's packed!

Ruby Weekly

Opal 1.0: The Ruby to JavaScript Compiler — A release seven years in the making, Opal is now faster, supports more Ruby features (such as Module.prepend) and has a promising roadmap (including first class Webpack support) for those that want Ruby everywhere.

Elia Schito

▶  The State of Sorbet: A Type Checker for Ruby — Even if you’re not interested in types, this is…

Drivy Engineering 

Embracing or banishing randomness

Writing tests is becoming a big part of our job. If it isn’t yet, I strongly encourage you to push your organization down that path. Why could be the topic of another article.

I think there is a tremendous value in having an efficient test-suite. By efficient, I mean that it doesn’t give much extra work when refactoring and it gives accurate information when something is broken. And by accurate, I mean having as few false positive as possible, as many defects being caught as possible, and as few tests failing as possible for a single defect.

As important as tests are to me, I don’t give as much attention to tests as I give to production code… In my reviews, I tend to have lower standards…

Code with Jason 

Capybara: expect field to have value

I commonly find myself wanting to assert that a certain field contains a certain value. The way to do this with Capybara is documented on StackOverflow but, unfortunately, the answer there is buried in a little too much noise. I decided to create my own tiny noise-free blog post that contains the answer. Here it is:

expect(page).to have_field('Name', with: 'Abraham Lincoln')

The post Capybara: expect field to have value appeared first on Code with Jason.

Drifting Ruby Screencasts 

Interview with Riaz Virani

Riaz talks about his experience with organizing and hosting the Atlanta Ruby Users Group meetup. We discuss sponsors, hidden costs of hosting meetups and general tips for guests.
Semaphore 

Introducing Semaphore for iOS, a supercharged CI/CD service

Today, we’re very excited to introduce Semaphore for iOS, a supercharged CI/CD service which makes it easy to build, test and deploy applications for any Apple device.

iOS support is fully integrated into Semaphore 2.0, so you can use the same powerful CI/CD pipeline features for iOS as you do for Linux-based development:

Sign up with GitHub

Besides the well-earned recognition for speed, Semaphore provides everything iOS developers need in order to deliver apps quickly:

  • Serverless & Pay-as-you-go model
    Semaphore 2.0 scales to every git push, and you only pay for what you use.

  • Support for all Apple devices
    Build, test and distribute apps for iOS, macOS, tvOS, or watchOS.

  • Works with…
Appfolio Engineering 

Using Machine Learning to Improve the Maintenance Experience for Residents

Introduction

Maintenance is a big part of a property manager’s (PM) job. It is an important service to residents and a great way to establish a positive relationship with them.

For PMs that use AppFolio, the typical workflow for a maintenance request is as follows. The resident identifies an issue and notifies their PM of it, either by calling them over the phone or submitting a service request through their online resident portal. The PM then assesses the urgency of the issue and chooses who to dispatch in order to fix it.

In this blog post, we focus on the case where the resident submits an issue through the online portal. When the resident submits a maintenance request through the portal…

Test Double | Our Blog 

Abusing Promises as a Locking Mechanism

One of my favorite things about Promises in JavaScript is that they have a well-defined and narrow purpose: you ask for data and get a Promise that will give it to you asynchronously.

Promises are not a solution for handling events. Because a Promise only resolves once, it's not a good fit to tell you each time a button is clicked or an HTTP request comes in over the network.

However, there is a bit of useful information you can get from a Promise other than the data that will come through it: sometimes you want to know when an asynchronous operation is complete. Here's an example of what I mean:

prompt is a node library that accepts text input in the terminal. It exposes a traditional…

Valentino Gagliardi 

JavaScript Engines: How Do They Even Work? From Call Stack to Promise, (almost) Everything You Need to Know

A whirlwind tour of JavaScript engines from Call Stack, Global Memory, Event Loop, Callback Queue to Promises and Async/Await! Enjoy the reading!

JavaScript Engines: How Do They Even Work?

Ever wondered how browsers read and run JavaScript code? It seems magic but you can get an hint of what’s happening under the hood.

Let’s begin our immersion in the language by introducing the wonderful world of JavaScript engines.

Open up a browser console in Chrome and take a look at the Sources tab. You’ll see some boxes, one of the more interesting named Call Stack (in Firefox you can see the Call Stack after inserting a breakpoint into the code):

A whirlwind tour of JavaScript engines from Call Stack, Global Memory, Event Loop, Callback Queue to Promises and Async/Await! Enjoy the reading!

What’s a Call Stack? Looks like there is a lot of stuff going on, even…

avdi.codes 

The Cache Flush Episode 003

Musings on the need for systems to be able to reveal their intentions; and more micro-interviews from Codestock

avdi.codes 

Test-Driven Re-implementation with Josh Thompson

Yesterday Josh Thompson, one of my Rubber Duck Session clients, proposed a novel idea for deliberately practicing coding skills: take a popular open-source project with a good test suite, delete a class, and re-implement the class using only the tests as a guide. Then, compare and contrast our implementation with the original!

I suggested the Rake codebase, and this video is an unedited recording of the session. Enjoy!

GoRails Screencasts 

How to use Action Mailbox in Rails 6

ActionMailbox is a new feature of Rails 6 for processing inbound emails to let users respond to your app via email. We'll do a quick rundown and build a simple reply by email feature to our app.
EquiValent 

Visualized Desktop Workspace flow in Xubuntu 18.04 - XFCE

This article is manual how to set up Xubuntu so it works with Visualized Workspaces Workflow concept. This setup should probably work also for Ubuntu with manually installed XFCE

Visualized Workspaces flow is a setup of workspaces in Desktop Environment for maximum productivity. Please read more in this article to understand why the steps bellow are necessary

Step 1 - add more workspaces

Go to:

Menu > workspaces 

Increment number of workspaces

Step 2 - add switch to workspaces number shortcuts

Menu > Window Manager > keyboard

Add shortcut that you like. For example:

Workspace 1                       Super + 1
Workspace 2                       Super + 2
Workspace 3     …
Martian Chronicles, Evil Martians’ team blog 

RubyKaigi 2019: A speaker’s report

Author: Andrey Novikov, Back-end Developer at Evil Martians

RubyKaigi remains one of the best Ruby events in the world—with insightful talks, fantastic organization, and tons of top-notch attendees. And if you still think that “Ruby is dead” then “you’re just not paying attention.”

Adding typing to Ruby and a keynote by Matz

This year the central topic for the whole conference was adding static type checking to the language. Is it necessary? How do we make it better? It seems that Ruby 3 will contain type…

All Ruby Podcasts by Devchat.tv 

RR 412: Asynchronous Jobs on Client Side and Server Side

Sponsors

Panel

  • Dave Kimura
  • Andrew Mason

Summary

Dave Kimura starts the episode by defining asynchronous jobs; he and Andrew Mason discuss the differences between server side and client side asynchronous jobs. They discuss use cases and address scenarios for which asynchronous jobs can be used for. Dave answers Andrew’s questions about tools, gems, and libraries. Dave expresses his love for Active job and advocates for Gitlab. The panel discusses overuse and misuse of asynchronous jobs and times when it is better not to use this tool. Dave shares…

All Ruby Podcasts by Devchat.tv 

MRS 088: Igor Morozov

Sponsors

  • Sentry use the code “devchat” for 2 months free on Sentry small plan
  • .TECHtech/MRS and use the coupon code “TECH” and get a 1 year .TECH Domain at $9.99 and 5 Year Domain at $49.99. Hurry!
  • CacheFly

Host: Charles Max Wood

Guest: Igor Morozov

Summary

Igor Morozov shares what the ruby community looks like in Moscow, Russia and what Russian developers are doing. He talks about deciding to be a developer to make video games at 8 years old. He shares how scripting Grand Theft Auto really got him into developing. Igor and Charles Max Wood discuss university and learning through doing projects versus learning by reading books. Igor shares how he got into Ruby and what about…

The Bike Shed 

198: In Terms of Tradeoffs (Glenn Vanderburg)

On this week's episode, Chris is joined by Glenn Vanderburg, VP of Engineering at First.io, live from RailsConf. They discuss Glenn's RailsConf talk, "The 30-Month Migration", covering distributed data models, refactoring, and the wonders of postgres. They also discuss Glenn's famous talk, "Real Software Engineering", and what the term "software engineering" means within our communities.

EquiValent 

Visualized Desktop Workspace flow in Manjaro linux 18 - XFCE

This article is manual how to set up Manjaro linux 18 - XFCE so it works with Visualized Workspaces Workflow concept

Visualized Workspaces flow is a setup of workspaces in Desktop Environment for maximum productivity. Please read more in this article to understand why the steps bellow are necessary

Step 1 - add more workspaces

Go to:

Menu > workspaces 

Increment number of workspaces

Step 2 - add switch to workspaces number shortcuts

Menu > Window Manager > keyboard

Add shortcut that you like. For example:

Workspace 1                       Super + 1
Workspace 2                       Super + 2
Workspace 3                       Super + 3
Workspace 4                      …
Red Panthers 

Clawing Our Way to the Top of Clutch’s Directory of Ruby on Rails Developers in India

Ruby is a programming language with a set of incredibly versatile strengths and applications, with the Ruby on Rails framework helping businesses in countless industries develop powerful and interactive web solutions. While Ruby on Rails provides a world of endless possibilities for quality development, most businesses lack the in house talent to tap into this source of innovation. We proudly fill in the skills-gap for firms looking to leverage this powerful framework to develop innovative solutions to a number of challenges.

Through our work developing quality web solutions, we have started to garner some industry recognition. We are excited to share that we have been included on…

RubyGuides 

How to Use The Rails link_to Method (With Examples)

Ah, yes. The link_to method. One of the most common helper methods you’ll use in your Rails applications. But how does it work? If you came here to learn about link_to & the different options you can use with it then you’re in the right place! First… What does link_to do? Well, this whole website […]

The post How to Use The Rails link_to Method (With Examples) appeared first on RubyGuides. Don't miss your free gift here :)

Code with Jason 

Rails integration tests with RSpec and Capybara (explanation and tutorial)

What exactly are integration tests?

The many different types of RSpec specs

When I started learning about Rails testing and RSpec I discovered that there are many different kinds of tests. I encountered terms like “model spec”, “controller spec”, “view spec”, “request spec”, “route spec”, “feature spec”, and more.…

avdi.codes 

SIGAVDI #52: Grit Fritters Edition

Hello friends,

I am mildly out-of-sorts as I write this. The front of my favorite local dive appears to have fallen off, complicating my afternoon plans of meeting my mom there. Entropy is everywhere!


What dismays me about technology is this: not the machine itself but the way its architecture echoes outward, imposing a grid of quantification on everything it touches.

This article about life in Silicon Valley is powerful and a bit painful. I keep saying, you can’t do this shit 8-12 hours a day and not have it warp your outlook.


A programmer spends thirty years in the industry, and one day they designs a beautifully simple and elegant programming language. Or API. Then they go on the…

code.dblock.org | tech blog 

Building the Artsy Open-Source Engineering Brand

Building the Artsy Open-Source Engineering Brand, Austin CTO Summit ‘19

Building the Artsy Open-Source Engineering Brand was originally published by Daniel Doubrovkine at code.dblock.org | tech blog on May 11, 2019.

code.dblock.org | tech blog 

Rebooting Vestris.com

I’ve rebooted vestris.com and have incorporated it in New York State to serve as a legal entity for my open-source projects, including the many slack bots.

I also dug up a fun piece of Vestris history, the original audio from my answering machine in 1998!

Rebooting Vestris.com was originally published by Daniel Doubrovkine at code.dblock.org | tech blog on May 11, 2019.

Appfolio Engineering 

A Simpler Rails Benchmark, Puma and Concurrency

I’ve been working on a simpler Rails benchmark for Ruby, which I’m calling RSB, for awhile here. I’m very happy with how it’s shaping up. Based on Rails Ruby Bench, I’m guessing it’ll take quite some time before I feel like it’s done, but I’m finding some interesting things with it. And isn’t that what’s important?

Here’s an interesting thing: not every Rails app is equal when it comes to concurrency and threading - not every Rails app wants the same number of threads per process. And it’s not a tiny, subtle difference. It can be quite dramatic.

(Just want to see the graphs? I love graphs. You can scroll down and skip all the explanation. I’m cool with that.)

New Hotness, Old and Busted

You’ll…

Remote Ruby 

A Quick RailsConf Recap, Finding Time to Learn, and Madmin

Awesome Ruby Newsletter 

Issue 155 - RubyKaigi and the Path to Ruby 3

OmbuLabs Blog 

Working With Subcontractors

Out of all the problems an agency might face, "we have more opportunities than we can handle" is not something you'll typically hear anyone complaining about. For those who are lucky enough to be in that position, it's always thought of as being "a good problem to have." But make no mistake, having more opportunities than you can handle can be a real problem. Aside from the obvious opportunity costs of all the work not taken, there are often good reasons why you may not be able to expand your permanent headcount just yet.

Enter the subcontractor

Ironically, for the same reasons that clients will hire an agency, agencies are sometimes in the market for contractors - or even other…

Ruby Weekly 

A guide to function composition in Ruby 2.6+

#449 — May 9, 2019

Read on the Web

Ruby Weekly

A Guide to Function Composition in Ruby — Ruby 2.6’s introduction of the << and >> function composition operators has opened up some interesting new techniques and this article tours them deftly. This topic clearly inspired two people at the same time as Tom Wey has a related article on function composition you might also enjoy.

Paul Mucur

RubyKaigi and the Path to Ruby 3 — A summary of Matz’s talk at RubyKaigi that focused on performance, concurrency, and static analysis as they lay the path for Ruby 3, expected late in 2020.

Shannon Skipper

Auto…

Valentino Gagliardi 

Decoupling Django with Django REST (and a sprinkle of React) @ Pycon Italia 2019

I gave a talk about Decoupling Django with Django REST at Pycon Italia 2019. Here are the slides and the transcript!

Decoupling Django with Django REST (and a sprinkle of React) @ Pycon Italia 2019

It was a pleasure to attend and speak at the tenth edition of Pycon Italia. I gave a talk about Decoupling Django with Django REST. Here’s a loose transcript of the talk which you can use as a tutorial too, alongside with the slides and some pictures!

Who am I

I’m Valentino Gagliardi, JavaScript developer. I have a blog where I share everything I know about JavaScript and Django. I love Python and I use it whenever I can. Starting this year I’m serving as a coach for Django Girls and I encourage you spreading the word. We need more women in our field.

Semaphore 

7 Continuous Integration Tools for PHP Laravel Developers

In this article we’ll learn about 7 tools that you can use to set up a rock-solid continuous integration (CI) process for your PHP project. Together, these tools increase code quality, reduce development time, easily reveal errors and will generally make your life easier.

We will learn how we can setup a Semaphore CI continuous integration pipeline for a PHP Laravel application.

The game plan is to setup various tests for our code, without having to provision or maintain any servers. Having a quick feedback cycle, we’ll be able to catch errors early and fix them before they grow.

Sounds good? Let’s get started.

Code analysis tests

Code analysis consists of scanning the…

Ruby on Rails Podcast 

271: MEGA Railsconf 2019 Recap with Chris Oliver

Chris Oliver, creator of GoRails and co-host of the Remote Ruby podcast, joined Nick Schwaderer to discuss his experience at Railsconf 2019. They also dive into form builder changes, documentation and ponder when Rails 6 will be released.

Links for this episode:

Brought to you by:

  • OSCON is ground zero to find out what you need to be in the know about in the open source community…
Test Double | Our Blog 

The Selfish Programmer.

The video above was recorded at RailsConf 2019 conference in Minneapolis, Minnesota.

This presentation is an exploration of the things programmers can learn by building an application by and for themselves—and the surprising number of lessons that might translate to their work on teams and larger organizations. It was based on my experience building the Japanese-learning site KameSame as a companion app to WaniKani.

If you enjoy the talk, please share it with your friends and colleagues! And if you know a team that could use additional developers and is looking to improve, we'd love to hear from you. (If you have any other hot takes about this topic that you'd like to share, mentioning me…

EquiValent 

How to test if ActiveJob job was enqueued in Rails RSpec

If you are looking for How to tell RSpec to execute queued jobs pls check this note

Given you are using RSpec Rails gem

If you want to check if code enqueued specific jobs you can do


class SomeController < ApplicationController
  # ...

  def some_action
    # ...
    MyJob.perform_later(current_user_id: @current_user.id)
    # ...
  end
end


RSpec.describe SomeController do
  # ...

  let(:user) { User.create! }

  before do
    sign_in user
  end

  it 'should enqueue MyJob ' do
    post :some_action

    expect(MyJob)
      .to have_been_enqueued
      .with(current_user_id: user.id)
  end

Or:

RSpec.describe SomeController do
  # ...

  let(:user) { User.create! }

  before…
All Ruby Podcasts by Devchat.tv 

RR 411: What causes Ruby memory bloat? with Hongli Lai

Sponsors

Panel

  • Charles Max Wood
  • Dave Kimura
  • Eric Berry

Joined by Special Guest: Hongli Lai

Summary

Eric Berry starts by sharing how Phusion and Phusion passenger changed his career and thanks Hongli Lai for his work. Hongli talks about where Phusion is now and shares what's new with passenger 6. The panel compares passenger and puma and Hongli explains why passenger is the better choice. The panel wonders about deployment strategies and Hongli shares what he has seen done with Passenger.

Hongli discusses the article he wrote about memory bloat.…

All Ruby Podcasts by Devchat.tv 

MRS 087: Lori Olson

Sponsors

  • Sentry use the code “devchat” for 2 months free on Sentry small plan
  • .TECH– tech/MRS and use the coupon code “TECH” and get a 1 year .TECH Domain at $9.99 and 5 Year Domain at $49.99. Hurry!
  • CacheFly

Host: Charles Max Wood

Special Guest: Lori Olson

Episode Summary

In this episode of My Ruby Story, Charles hosts Lori Olson, Chief Instructor at WNDX School where she teaches software developers of all kinds to become published App authors, using RubyMotion. Lori invites all to come to her “six steps from idea to app store” webinar.

Listen to Lori on the podcast Ruby Rogues on this episode.

Lori took her high school counselor’s advice and majored in Computer Science. She…

The Bike Shed 

197: Don't Go Chasing Waterfalls

Steph and Chris discuss Redux, integration testing strategies, scoping data for React components, and take a question from a listener about improving process and reducing bugs in a complex service-oriented system with a hint of waterfall in their workflow.

Test Double | Our Blog 

Debrief: Lead Dev New York 2019

Last weekend I packed a head cold and a southern nonchalance towards weather preparation1, and flew northeast to attend The Lead Developer conference in New York. It wasn't until I got there that it occurred to me I had bought my ticket based entirely on my experiences at the 2018 version of this conference in Austin, and had no idea who was going to be speaking at this one.

Oops.

Fortunately, my inability to plan was completely validated by a killer talk line-up, presented by co-hosts Meri Williams and Lara Hogan. And while I'll try not to forget to use the internet to my advantage in the future, I remain assured by White October's ability to put together a great event.

What I Took Away

As…

RubyGuides 

How to Create Temporary Files in Ruby

Creating a temporary file gives you an empty file with a random name inside your O.S. (Operating System) temporary folder. This file gets deleted automatically. How can you do this in Ruby? Like this: require 'tempfile' Tempfile.create { |f| f

The post How to Create Temporary Files in Ruby appeared first on RubyGuides. Don't miss your free gift here :)

Drifting Ruby Screencasts 

Nested Forms from Scratch with StimulusJS

Using StimulusJS controllers, adding nested forms to a Rails application is easy and unobtrusive. In this episode, we look at an alternative way of creating nested forms without the Cocoon gem.
Giant Robots Smashing Into Other Giant Robots 

Function Composition in Ruby

Along with a number of other cool new features and performance improvements, Ruby 2.6 added function composition to the Proc and Method classes. Today we’ll take a look at how this allows us to use some functional programming goodness in our Ruby code.

What is function composition?

So what is function composition? Simply put, function composition is the act of combining existing functions to create new functions. It’s a common technique in functional programming languages like Haskell and Elm.

I’ll borrow some syntax from Haskell to describe this in a more concrete way (don’t worry, we’ll get to some Ruby shortly!) Let’s say we have two functions: func1 and func2. The type…

Ruby Conferences 'n' Camps in 2019 - What's Upcoming? 

Pivorak Conf @ Lviv, Ukraine - Ruby Conferences 'n' Camps Update

Conferences 'n' Camps

What's News? What's Upcoming in 2019?

Pivorak Conf
May/24 (1d) Fri @ Lviv, Ukraine • (Updates)

See all Conferences 'n' Camps in 2019».

Awesome Ruby Newsletter 

Issue 154 - Rails 6: B-Sides and Rarities

avdi.codes 

SIGAVDI #51: Ninja Bomb Edition

Hello friends,

First off, if you got another duplicate SIGAVDI recently I apologize. I have now indefinitely disabled the automatic RSS-to-email rule in Drip, because they can’t seem to reliably record the fact that a given entry has already been sent out.

I’m writing this from Phat Bites in Nashville, which is a wonderfully funky little cafe and I recommend it. Have them pick a sandwich for you.

I’m in Nasvhille because I spent the last few days at deliver:Agile, which is apparently the “more tech-focused Agile conference”. This still makes me wonder what they talk about at all the OTHER Agile conferences, but I’m sure I’ll find out one of these years.

I opted to speak at deliver:Agile…

Ruby Weekly 

Sneaking Ruby onto a Nintendo Switch

#448 — May 2, 2019

Read on the Web

Ruby Weekly

Rails 6: B-Sides and Rarities — A nice list of some of the lesser-publicized additions to Rails 6 (currently in its release candidate phase), such as Action Cable testing, bulk (in/up)serts, per-environment credentials, and actionable errors in the browser.

Martian Chronicles

🎮  Developer Sneaks Ruby Coding Environment into Nintendo Switch Game — The CEO of RubyMotion created a game with a Ruby REPL Easter Egg. Needless to say, Nintendo was not amused 😂 Psst.. Switch Weekly, it exists!

Wesley Yin-Poole

Not All DevOps Heroes Wear Capes, but They Do…

Drivy Engineering 

Your JavaScript can reveal your secrets

Security is hard. It’s often very easy to overlook things, and one small mistake can have a very big impact.

When writing JavaScript, it’s easy to forget that you’re writing code that will be sent in plain text to your users.

Recently I have been doing a bit of offensive security, with a special interest on JavaScript files, to see what kind of information could be retrieved from them.

Here’s what I’ve learned.

Business logic and other business leaks

It’s not uncommon to see some business logic in JavaScript files, especially for frontend-heavy websites.

While this is not a direct security problem, it can tell a great deal about your internals.

It could be a secret pricing function,…

Ruby on Rails Podcast 

270: Lamby & The AWS of T-Shirts with Ken Collins

Ken Collins is a Staff Engineer at Custom Ink focusing on DevOps and eCommerce in Rails. The minitest advocate recounted the origins of Lamby, a simple Rails & AWS Lambda integration using Rack with Brittany.

Links for this episode:

Brought to you by:

  • OSCON is ground zero to find out what you need to be in the know about in the open source community for 20 years. Listeners to the Ruby on Rails podcast can get 20% off of most* passes to OSCON when you go to oscon.com/ruby and…
Universe Engineering - Medium 

Building a Google Map in React

Somewhat relevant stock photo

In this article I’m going to walk you through building a Google Map Component in React without a 3rd party library like google-map-react and google-maps-react. Instead we’re going to use Google’s Maps JavaScript API directly in our component with some good old fashioned vanilla JavaScript. When evaluating whether to use a dependency or to write your own, it’s a good idea to ask yourself the following:

1. How many dependencies does this library use?
2. What is the bundle size of this library (Bundle Phobia)?
3. Can I implement the required minimal functionality myself?
4. Do I need this library to be battle tested?

In our case, both libraries used minimal…

code.dblock.org | tech blog 

Reflecting on 8 Years Building Artsy

Today I bid farewell to Artsy. This post is my personal journey and my last post as CTO.


working at Art Basel Miami 2012, photo by Brennan Moore

We have brought the art world online, built the Art Market 1.0 and created the most read online art publication in the world.

Getting Started

I was introduced to the Artsy founders Carter and Sebastian in late 2010. I remember getting a CD-ROM with artwork images from a Russian museum in the 90’s and finding it immediately valuable, so I easily connected with the mission of bringing the Art World online. At the time Artsy had already won a TechCrunch Rookie Disruptor award and were in their beginning stages of raising capital. The…

GoRails Screencasts 

How to use Bootstrap with Webpack & Rails

Rails's webpacker gem makes it super easy to load both Bootstrap's CSS and JS into your Rails app using webpack
ruby – Bibliographic Wilderness 

A terrible Github UI — accidentally shadow a tag with a branch

So we generally like to tag our releases in git, like v1.0.0 or what have you.

Github Web UI has a “tag/branch switcher” widget, which lets you look at a particular branch or tag in the Web UI.

Screenshot 2019-04-30 12.27.17

You can see it has separate tabs for “branches” and “tags”. Let’s say you get confused, and type “v1.0.0” (a tag) while the “branches” tab is selected (under the text box).

Screenshot 2019-04-30 12.30.55

It found no auto-complete for “v1.0.0” in “branches” (although there is a tag with that name it would have found if “tags” tab had been selected), and it “helpfully” offers to create a branch with that name.

Now, if you do that, you’re going to have a new branch, created off master, with the same name as a tag. Which is going to…

Ruby Magic by AppSignal 

Ruby's Hidden Gems: Delegator and Forwardable

In today's exploration of the hidden gems in Ruby's standard library, we're going to look at delegation.

Unfortunately, this term—like so many others—has become somewhat muddled over the years and means different things to different people. According to Wikipedia:

Delegation refers to evaluating a member (property or method) of one object (the receiver) in the context of another original object (the sender). Delegation can be done explicitly, by passing the sending object to the receiving object, which can be done in any object-oriented language; or implicitly, by the member lookup rules of the language, which requires language support for the feature.

However, more often than not,…

All Ruby Podcasts by Devchat.tv 

MRS 086: Tung Nguyen

Sponsors

  • Sentry use the code “devchat” for 2 months free on Sentry small plan
  • .TECH– tech/MRS and use the coupon code “MRS.TECH” and get a 1 year .TECH Domain at $9.99 and 5 Year Domain at $49.99. Hurry!
  • CacheFly

Host: Charles Max Wood

Special Guest: Tung Nguyen

Episode Summary

In this episode of My Ruby Story, Charles hosts Tung Nguyen, President and Founder of BoltOps AWS Cloud Infrastructure Consultancy, a Bay Area based DevOps infrastructure consultancy. Tung is also the creator of Ruby on Jets.

Listen to Tung on the podcast Ruby Rogues here.

Tung majored in Electrical Engineering in college but didn’t really enjoy working as an electrical engineer so decided to teach…

Search Results for “ruby” – via @codeship 

Gotham — From Start to Heroku

Reading Time: 11 minutes

In this article, we’ll implement and deploy a Gotham full-stack web framework using the Tera template system, Webpack for a complete front-end asset management, a minimal VueJS and CoffeeScript web app and deploy to Heroku. Gotham is a Rust framework which is focused on safety, speed, concurrency and async everything. Webpack is a NodeJS website asset preprocessor and bundler which can let you use any of your favorite front end technologies. Combining these technologies allow for a small footprint on the server, which means saving money on infrastructure, very fast performance in page load for higher visitor retention and the full flexibility of client side code…

BigBinary Blog 

Rails 6 has added a way to change the database of the app

This blog is part of our Rails 6 series. Rails 6.0.0.rc1 was recently released.

Rails allows us to use different databases using the database.yml config file. It uses sqlite3 as the default database when a new Rails app is created. But it is also possible to use different databases such as MySQL or PostgreSQL. The contents of database.yml change as per the database. Also each database has a different adapter. We need to include the gems pg or mysql2 accordingly.

Before Rails 6, it was not possible to change the contents of database.yml automatically. But now a command has been added to do this automatically.

Let’s say our app has started with sqlite and now we have to switch to MySQL.

$…
All Ruby Podcasts by Devchat.tv 

RR 410: Kubernetes with Kurtis Rainbolt-Greene

Sponsors

Panel

  • Andrew Mason

  • Nate Hopkins

  • Eric Berry

  • David Kumira

Joined by Special Guest: Kurtis Rainbolt-Greene

Episode Summary

Kurtis has been working with Ruby and open source for 12 years. These days he works on maintaining large libraries like VCR. He talks about what VCR is, why it’s useful, and some of its limitations. The real topic of today’s show is Kubernetes. Kubernetes is an open-source container orchestration system for automating application deployment, scaling, and management. Kurtis describes what it is and some of the features it…

Justin Weiss 

When you've taken a learning break, how do you catch back up?

When you’ve been deeply focused on a big project or a new job, you might poke your head up and feel lost. Like the tech world has moved beyond you. Did that time you didn’t spend learning new things finally catch up with you? And how can you close that gap?

Study at home? Or learn at work?

If you haven’t been making time for learning, that time has to come from somewhere.

But where will that time come from? Should you study on your own time? Or study on the job?

It’s a trick question. The answer is both.

Finding time outside of work can be a struggle. It definitely has been for me, as I’ve gone from 0 to 1 to 2 kids. But learning something in my own time makes that thing feel more…

The Bike Shed 

196: I Can Be Wrong on the Internet

On this week's episode, Chris welcomes Steph as the new co-host of The Bike Shed! Chris and Steph discuss their experiences using React, TypeScript, and Angular.

Martian Chronicles, Evil Martians’ team blog 

Rails 6: B-Sides and Rarities

Author: Vladimir Dementyev, Lead Developer at Evil Martians, Rails contributor

Discover the lesser-known parts of the next major framework upgrade, appealing to mature applications that have been around for a while. Instead of focusing on “greatest hits,” we will walk you through B-sides and rarities that make new release enjoyable in subtler ways.

While the most-advertised Rails 6 features like Action Mailbox and Action Text steal all the spotlight, it is unlikely that a real-life Rails application that has been around for a while will benefit from the ease of building WYSIWYG text editors right after the upgrade.

At the same time, less flashy features like multiple databases…

BigBinary Blog 

Rails 6 adds parallel testing

This blog is part of our Rails 6 series. Rails 6.0.0.rc1 was recently released.

We frequently think about how good it would be if we could run tests in parallel on local so there would be less wait time for tests to be completed. Wait times increase considerably when the count of tests are on the higher side, which is a common case for a lot of applications.

Though CI tools like CircleCi and Travis CI provide a feature to run tests in parallel, there still wasn’t a straightforward way to parallelize tests on local before Rails 6.

Before Rails 6, if we wanted to parallelize tests, we would use Parallel Tests.

Rails 6 adds the parallelization of tests by default. Rails 6 added parallelize

Test Double | Our Blog 

Consulting like Cucumbers

At Test Double, we talk about pickles a lot.

This isn't because our company is home to a niche subculture of foodies, although that would be awesome. It's also not related to Cucumber, Gherkin, or the other tasty-sounding testing tools that I often baffle my search engine with1.

Test Double agents host an internal book club, where we read about software, people, and consulting in order to grow as consultants and as an agency. One of our first books was Secrets of Consulting by Gerald Weinberg, which distills some of his consulting experiences into 102 cutely-named laws, rules, and principles. Of these, there is one in particular that we've circled back to multiple times: Prescott's Pickle…

Scott Watermasysk 

Typescript: No Index Signature

I have been spending some free time dabbling in Typescript.

One thing recently caught me off guard. I had a simple object which looks like this:

const unitsOfTime  = {
  millisecond: 1,
  second: 60,
  hour: 60 * 60,
  day: 24 * 60 * 60,
  month: 30 * 24 * 60 * 60,
  year: 365 * 24 * 60 * 60
}

In my initial testing, I was using it like this: unitsOfTime.day and all was well. However, once I switch to something a bit more dynamic (unitsOfTime[someParameter]) the Typescript compiler started to complain about a missing index signature.

After a brief search, I was led to this PR1.

With this PR an object literal type is assignable to a type with an index signature if all known…

RubyGuides 

How to Schedule Cron Jobs in Ruby With the Whenever Gem

What is Cron? Cron is a job scheduling system available in Linux & MacOS operating systems. It can be used to run any program at any given time. This includes Ruby code! If there is a specific recurring task that you would like to run automatically every day, every week or even every hour, then […]

The post How to Schedule Cron Jobs in Ruby With the Whenever Gem appeared first on RubyGuides. Don't miss your free gift here :)

Andy Croll 

Be Aware of nil values when using where.not()

The use of where.not when building Active Record scopes can help you to elegantly specify scopes for cases where an attribute does not have a specific value.

However the abstraction has some quirks if the attribute you’re querying can be NULL in your database (nil in Ruby). The where.not scope doesn’t automatically return nil values unless you specify that you want them.

Instead of…

…expecting where.not to return nil values:

non_oat_options = Coffee.where.not(milk: "Oatly")

Use…

…an or clause to explicitly request the nil values.

non_oat_options = Coffee.where.not(milk: "Oatly").or(Coffee.where(milk: nil))

…alternatively you can pass an array of options to the (negated) where

Riding Rails 

Rails 6.0.0.rc1 is here, say hi at RailsConf!

Hop aboard fellow traveler! Here’s your friendly conductor Kasper revving up to give you a brand spanking new issue for the price of zilch.

We’re just about to roll into RailsConf proper. Several of your trusty editors are going including me, Eugene, Tim, and Vipul! Many people who are Rails committers and core will be there too. Feel free to say hi if you spot us — we don’t byte a bit 😄

Rails 6.0.0.rc1 is out!

Rails 6 is almost out the door. The first release candidate came out this week. This is the best time to get bug fixes in because we on the Rails core team will prioritize bugs found in rc1 and then ship an rc2 shortly. If no bugs are found after roughly 2-3 weeks, the real 6.0.0…

Appfolio Engineering 

WRK It! My Experiences Load-Testing with an Interesting New Tool

There are a number of load-testers out there. ApacheBench, aka AB, is probably the best known, though it’s pretty wildly inaccurate and not recommended these days.

I’m going to skim quickly over the tools I didn’t use, then describe some interesting quirks of wrk, good and bad.

Various Other Entrants

There are a lot of load-testing tools and I’ll mention a couple briefly, and why I didn’t choose them.

For background, “ephemeral port exhaustion” is what happens when a load tester keeps opening up new local sockets until all the ephemeral range are gone. It’s bad and it prevents long load tests. That will become relevant in a minute.

Valentino Gagliardi 

JavaScript in the Browser: What is the Document Object Model? What is DOM manipulation?

A quick introduction to the Document Object Model. Learn what is DOM manipulation and how to use the native DOM API to interact with web pages from JavaScript!

JavaScript in the Browser: What is the Document Object Model? What is DOM manipulation?

JavaScript is not that bad. As a scripting language running in the browser it is really useful for manipulating web pages. In this quick guide we’ll see what function we have at our disposal for interacting and modifying an HTML document.

What is the Document Object Model?

The Document Object Model is a fundamental concept at the base of everything we do inside the browser. But what exactly is that?

When we visit a web page the browser figures out how to interpret every HTML element. So that it creates a virtual…

Remote Ruby 

Rails 6, Ruby 3, and RailsConf

Semaphore 

Jacob Smith from Packet on running an infrastructure product and ARM, wireless and hardware as a part of developer stack

We invite software industry professionals to Semaphore Uncut YouTube show to discuss what problems they’re currently solving and what excites them about the emerging technologies.

In this episode, we were chatting with Jacob Smith, Chief Marketing Officer at Packet.

This chat was recorded on April 24th, 2019.

Full transcription below.

Darko [00:00:02] Semaphore Uncut is a show where we talk about developer tools and the people behind those. With us today we have Jacob Smith from Packet. Hi welcome – it’s great to have you on the show.

Jacob [00:00:14] Hi Darko. Thanks for inviting me. Great to be here.

Darko [00:00:17] We’re doing it live. If you have any…

Awesome Ruby Newsletter 

Issue 153 - Ruby repository moved to Git from Subversion

Ruby on Rails Podcast 

269: Fixing Flaky Tests Like a Detective with Sonja Peterson

Sonja Peterson is a senior software engineer at Devoted Health, working in Go and Typescript. Sonja guested on the show to speak with Brittany about her upcoming RailsConf talk, transitioning to Go and to spill on her favorite crime novels.

Links for this episode:

Ruby Weekly 

A Ruby 3 progress report

#447 — April 25, 2019

Read on the Web

Ruby Weekly

A Ruby 3 Progress Report — Ruby 3 is due to be released in 2020 (following Ruby 2.7 this Christmas) and progress is looking good. This is only a slidedeck but does a good job of illustrating the main points. It’s also interesting to learn that types will make an appearance in Ruby 3!

RubyKaigi 2019 slidedeck

Rails 6.0.0 Release Candidate 1 Released — It’s several weeks behind schedule but things are progressing well for the next version of Rails and DHH reassures us that we should be starting any new Rails apps on 6.0.0.rc1 now.

David Heinemeier Hansson

Riding Rails 

Rails 6.0.0 rc1 released

Okay, so we didn’t quite make our aspirational release schedule, but Rails 6 is now almost ready, so here’s the first release candidate! There isn’t anything remarkably new compared to the beta releases, but everything has been polished (in about 1000 commits!), and we believe this candidate could become the final release, lest we find any egregious bugs.

This may well also be the best exercised release candidate in the history of Rails! The team at Basecamp, Shopify, and GitHub are all running either rc1 or just-about in production. It’s been a real pleasure to see the Shopify and GitHub teams leap to the front of the line running the latest in production.

If it’s good enough for…

GoRails Screencasts 

How to Remove Unused CSS Classes from Tailwind CSS, Boostrap, and more with PurgeCSS

CSS frameworks like Tailwind, Bootstrap, Foundation, etc all come with many CSS classes you probably aren't using. This creates huge CSS files unless we use a tool like PurgeCSS to look through our code and remove the unused classes.
Depfu 

Support for appraisal

Depfu now supports Ruby projects using the appraisal gem.

Appraisal makes it easy to test your library with different versions of a dependency. It is most commonly used for libraries that provide plugin-like functionality for frameworks. For example, you want to make sure your image uploading library works with several major versions of Rails.

From the normal, main gemspec and Gemfile of the library, appraisal generates multiple additional gemfiles, one for each release line of the gem you’re “appraising”.

appraise "4.2" do
  gem "rails", "~> 4.2.0"
end

appraise "5.0" do
  gem "rails", "~> 5.0.0"
end

Which results in the following folder structure:

paperclip
|-- lib
|-- gemfiles
|  …
RubyMine Blog 

RubyMine 2019.1.1 is Available

RubyMine 2019.1.1 (build 191.6707.59) has just been released.

What’s new in this bug-fix update:

  • Debugger stopped failing after updating Spring configuration file [RUBY-24021]
  • Specs with running errors can be run [RUBY-23459]
  • Other bug-fixes

See What’s new in RubyMine 2019.1 for the major improvements made in v2019.1.

Download RubyMine 2019.1.1

As usual, see the release notes for the full list of improvements. Please report any issues to our bug tracker.

Cheers,
Your RubyMine Team

BigBinary Blog 

Rails 6 adds CPU time, idle time and allocations to ActiveSupport::Notifications::Event

This blog is part of our Rails 6 series. Rails 6.0.0.rc1 was recently released.

Rails provides an easy way to instrument events and ability to subscribe to those events using Active Support Instrumentation API.

Before Rails 6

Before Rails 6, the subscriber of an event can access the event’s start time, end time and the duration along with the other event information.

To demonstrate how to access this information from an event, we will instrument a custom event custom_sleep_event and attach a subscriber to that event.

ActiveSupport::Notifications.subscribe('custom_sleep_event') do |*args|
  event = ActiveSupport::Notifications::Event.new(*args)

  puts "Event: #{event.inspect}"
  puts "…
Semaphore 

A first look at Google Cloud Run

Google has launched Cloud Run, a new solution for running serverless applications based on Docker containers, this month at its Cloud Next ’19 conference. What we can say now is this is an important step for serverless computing — deploying to Cloud Run is much easier than running containers on Kubernetes. It also has no architectural restrictions, which Lambda functions do. Semaphore provides seamless CI/CD pipelines to build, test and deploy applications to Google Cloud Run.

What is Google Cloud Run?

Google Cloud Run is a fully managed platform that takes a Docker container image and runs it as a stateless, autoscaling HTTP service.

The difference between Cloud Run and the first…

On the Edge of Ruby 

How TruffleRuby’s Startup Time Became Faster Than MRI’s

Introduction

I want to talk about VM startup in Ruby. That is, the time it takes for a Ruby implementation to print “Hello World” with:

$ ruby -e 'puts "Hello World"'

This is a lower bound for running any Ruby script or application, and lower startup time typically results in an improved developer experience.

MRI has been the gold standard for startup time, unbeaten so far by other Ruby implementations. Can we set a new record? Without further ado, here are the results for VM startup on the latest Ruby implementations:

Implementation Real Time (s) TruffleRuby Native 1.0.0-rc16 0.025 MRI 2.6.2 0.048 …
RubySec 

Nokogiri gem, via libxslt, is affected by improper access control vulnerability

dry-rb news 

dry-types and dry-struct 1.0.0 released

We’re very happy to announce the release of dry-types and dry-struct 1.0.0! dry-types is one of the most important and foundational gem in the dry-rb organization. It powers attributes in dry-struct, handles coercion in dry-schema, and is used extensively in rom-rb‘s relation schemas. With this 1.0.0 release, we hope it will be adopted by more projects. dry-struct was originally extracted from dry-types and it provides the famous attribute API for your PORO objects.

Huge props go to Nikita Shilnikov who has worked so hard to finalize these releases which bring a lot of improvements. Let’s look at some of the highlights.

Configurable types module

Previously you could include all built-in…

BigBinary Blog 

Rails 6 allows configurable attribute name on has_secure_password

This blog is part of our Rails 6 series. Rails 6.0.0.rc1 was recently released.

has_secure_password is used to encrypt and authenticate passwords using BCrypt . It assumes the model has a column named password_digest.

Before Rails 6, has_secure_password did not accept any attribute as a parameter. So, if we needed BCrypt encryption on a different column other than password_digest, we would have to manually encrypt the value before storing it.

Rails 6 makes it easy and allows custom attributes as a parameter to has_secure_password. has_secure_password still defaults to password so it works with previous versions of Rails. has_secure_password still needs the column named column_nam…

has_secure_password also adds the …

Semaphore 

Why a Well-Oiled CI/CD Pipeline Makes for a Happy DevOps Team

JJ Asghar’s role as a developer advocate for IBM has immersed him in helping organizations make the transition to cloud native ecosystems and to IBM Cloud’s Kubernetes Service. Previously, Asghar was the OpenStack go-to-guy at Chef Software.

In this interview, Asghar has drawn from his deep well of hands-on and high-level experience to describe the trials and tribulations organizations face when adopting cloud native platforms. He also discusses when using Istio’s service mesh for Kubernetes makes sense and the immense benefits a well-run CI/CD pipeline offers enterprises.

I wonder if you could speak from your experience about what is the biggest push factor for enterprises to adopt…

Ruby News 

Ruby Repository Moved to Git from Subversion

Today, the canonical repository of the Ruby programming language was moved to Git from Subversion.

The web interface for the new repository is https://git.ruby-lang.org, and is provided by cgit. We can keep the commit hash from the contributor on the Ruby repository directly.

Development policy

  • We don’t use a topic branch on cgit.
  • The GitHub repository will still be just a mirror. We don’t use the “Merge pull request” feature.
  • The ruby_2_4, ruby_2_5, and ruby_2_6 branches will continue to use SVN. We don’t push anything to these branches on cgit.
  • Starting with ruby_2_7, we’ll use cgit to develop stable branches.
  • We don’t use merge commits.

Special Thanks

  • k0kubun

avdi.codes 

SIGAVDI #50: Apple Cider Edition

Hello friends,

I’m writing this from Harrisburg, Pennsylvania. I spent the weekend with my kids down the road in York, and today I’m headed back to Knoxville.

One of my daughters asked me why I go to so many conferences, including one over her birthday. The temptation when a kid asks a question like this is to say “I have to”. But the truth is, I don’t have to. There’s very little we have to do. Some choices just have greater consequences than others. (And the consequences vary unevenly based on our circumstances/privileges.)

So I told her the truth: I choose to go to conferences. I choose partly because it helps with my work, and partly because I get to see old friends and meet new ones.…

Martian Chronicles, Evil Martians’ team blog 

Storeon: "Redux" in 173 bytes

Author: Andrey Sitnik, Author of PostCSS and Autoprefixer, Lead Front-end Developer at Evil Martians

Meet Storeon, a tiny state manager for modern front-end applications close in spirit to Redux, implemented in a single file that boils down to 173 bytes of minified and gzipped JavaScript.

Storeon is ready to be used in React projects or, if you care about bundle size as much as I do, with my favorite 3 kB React alternative, Preact. In both cases, the whole Storeon library, including the code to connect it to your components will never increase your front-end bundle by more than 300 bytes. Also, size is not the only feature of Storeon.

  • It is fast. It tracks which parts of the…
RubyGuides 

How to Use The Redis Database in Ruby

What is Redis? Redis is a kind of in-memory database that has different kinds of data structures you can use. Like: Key / value storage Lists Sets It has nothing to do with your typical SQL database, like Postgres. Uses for Redis include: Caching Leaderboards Counting visitors Fast autocomplete suggestions Keeping track of active user […]

The post How to Use The Redis Database in Ruby appeared first on RubyGuides. Don't miss your free gift here :)

BigBinary Blog 

Rails 6 allows to override the ActiveModel::Errors#full_message format at the model level and at the attribute level

This blog is part of our Rails 6 series. Rails 6.0.0.rc1 was recently released.

Before Rails 6

Before Rails 6, the default format %{attribute} %{message} is used to display validation error message for a model’s attribute.

>> article = Article.new
=> #<Article id: nil, title: nil, description: nil, created_at: nil, updated_at: nil>
>> article.errors.full_message(:title, "cannot be blank")
=> "Title cannot be blank"

The default format can be overridden globally using a language-specific locale file.

# config/locales/en.yml

en:
  errors:
    format:
      "'%{attribute}' %{message}"

With this change, the full error message is changed for all the attributes of all models.

>> article = 
Drivy Engineering 

Sorbet: A Ruby type checker

This article is aimed at beginner Rubyists who want to understand what the fuss around type checking is all about. It can also be relevant for more experienced developers who might be interested in using Sorbet and learning why it’s a bit special.

First I need to say that Sorbet has not been released yet (a preview version is available). Stripe is improving it internally and some other companies are testing it. We can still talk about it because it should be open-sourced in the coming future (they said summer 2019) and it’s nonetheless very interesting. This blogpost is the result of watching talks, and reading articles, Twitter feeds and the official website. It may contain some small…

Riding Rails 

Performance improvements, collection cache versioning and more

Hello. This is Wojtek reporting on recent changes from Rails world.

Collection cache versioning

Add cache_version on relation to support recyclable cache keys via the versioned entries in ActiveSupport::Cache. This also means that cache_key will now return a stable key that does not include the max timestamp or count any more.

Speed up dirty tracking

Reports 2x ~ 30x faster execution time compared to original implementation.

Add dirty methods for store accessors

It is now possible to use methods defined by Dirty module on store accessors.

Add after_save_commit callback shortcut

Adds shortcut for very common case:

after_commit :hook, on: [ :create, :update ]

Notes tags registration

The Bike Shed 

195: WebAssembly & WASI (Lin Clark & Till Schneidereit)

On this week's episode, Chris is joined by Lin Clark and Till Schneidereit of Mozilla to discuss all things WebAssembly. Lin and Till are helping to lead the development and advocacy around WebAssembly and in this conversation they discuss the current state of WASM, new developments like the WebAssembly System Interface (WASI), and the longer term possibilities and goals for WASM.

Ruby on Rails Podcast 

268: Origins of Discourse & Changing Your Developer Mindset with Sam Saffron

Sam Saffron is the co-founder of Discourse and previously a developer at Stack Overflow. He loves writing software, especially performance improvements in Ruby. Sam joined Brittany from Australia to discuss his blog post, "Why I stuck with Windows for 6 years while developing Discourse".

Links for this episode:

Brought to you by:

  • OSCON is ground zero to find out what you need to be in the know about in the open source community for 20 years.…
Awesome Ruby Newsletter 

Issue 152 - Ruby 2.7 — Pattern Matching — First Impressions

katafrakt's site 

Ruby – Pattern Matching – Second Impressions

Since I published A quest for pattern-matching in Ruby 3 years ago, I’ve been called “pattern matching guy” more than once. So obviously, when I learned that PM is inevitably coming to the Ruby core, I was curious to check it out. First Impressions have already been published, so this is “Second Impressions”, from my point of view.

Heads up: it’s very subjective.

I’m mostly judging it by examples provided in the original Redmine ticket, such as:

class Array
  alias deconstruct itself
end

case [1, 2, 3, d: 4, e: 5, f: 6]
in a, *b, c, d:, e: Integer | Float => i, **f
  p a #=> 1
  p b #=> [2]
  p c #=> 3
  p d #=> 4
  p i #=> 5
  p f #=> {f: 6}
  e   #=> NameError
end

First of all, the…

OmbuLabs Blog 

Submit Great Pull Requests

Pull Requests let developers tell other team members about changes they've made to a project repository. Once a pull request is created, team members can review the set of changes, discuss potential modifications and even push follow-up commits before the changes are merged into the repository. Therefore, it is important to make sure that your pull requests are easily understandable to the reviewers.

Fellow developers need to be able to understand what the pull request is trying to achieve, what approach is being taken, and how all of the changed files relate to each other. In short, a great pull request will:

  • Be short, have a clear title and description, and do only one thing
  • Be…