Rubyland

news, opinion, tutorials, about ruby, aggregated
Sources About
Search Results for “ruby” – via @codeship 

Apply Changelog Best Practices to Development

Reading Time: 6 minutes

Why does any project need a changelog? The primary reason for a changelog is to convey noteworthy changes. In essence it’s a form of communication to those who view the project to get insight of when something has changed, been added, removed, been deprecated, fixed or is important information relating to security. These changes are written in a less technical manner, allowing for people of most experience levels to benefit from a changelog being present. It is an easy location to find relevant information of value for developers and consumers.

Without a changelog, developers need to look through source code commit history with special tools to do the searches, look…

Code with Jason 

What a “Walking Skeleton” Is and Why I Always Start Projects with One

Every software project involves some amount of mystery and uncertainty. Actually, a software project is hardly made of anything but mystery and uncertainty.

Some jobs are more mysterious than others. I was recently asked by a client to build a Rails application that contained CRUD interfaces for a Patient resource and an InsuranceType resource. That work was not very mysterious.

My client also asked me to set up staging and production environments for this application on AWS. This might sound easy but setting up a Rails application on AWS/Elastic Beanstalk is totally not straightforward, even though it’s 2018, and even though I myself wrote guides on how to get Rails working on AWS. The…

Mike Perham 

Faktory 0.9.0 - Hello, Redis!

Faktory is my new background job system which brings Sidekiq-like background jobs to all languages. Want Sidekiq in PHP? Python? JavaScript? You got it!

faktory ui

Faktory 0.9 has just been released with a major architectural overhaul. I've replaced the previous storage engine, RocksDB, with Redis. This change had hugely important, very good downstream effects!

Want to try Faktory? The wiki has everything you need!

Why Redis?

So why did I replace RocksDB? RocksDB has two advantages over Redis:

  • it is very fast
  • it is embeddable (which means it links into your process and provides an API your code calls directly).

The problem is that everything else is a disadvantage:

  • It has dozens of…
BigBinary Blog 

Rails 5.2 disallows raw SQL in dangerous Active Record methods preventing SQL injections

This blog is part of our Rails 5.2 series.

We sometimes use raw SQL in Active Record methods. This can lead to SQL injection vulnerabilities when we unknowingly pass unsanitized user input to the Active Record method.

class UsersController < ApplicationController
  def index
    User.order("#{params[:order]} ASC")
  end
end

Although this code is looking fine on the surface, we can see the issues looking at the example from rails-sqli.

pry(main)> params[:order] = "(CASE SUBSTR(authentication_token, 1, 1) WHEN 'k' THEN 0 else 1 END)"

pry(main)> User.order("#{params[:order]} ASC")
User Load (1.0ms)  SELECT "users".* FROM "users" ORDER BY (CASE SUBSTR(authentication_token, 1, 1) WHEN 'k' T…

There are many Active Record methods which are vulnerable to SQL injection and some of…

RubyGuides 

How to Use the Ruby Grep Method (With Examples)

Let’s talk about the grep method. What can this method do for you? You can use Grep to filter enumerable objects, like Arrays & Ranges. “But select already does that!” Yes, but grep works in a different way & it produces different results. Let’s see some examples. Ruby Grep Method Examples Given this array: objects […]

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

Ruby Inside - Medium 

How we halved our memory consumption in Rails with jemalloc

One of the earliest projects I was involved in at Valiant was investigating ways to optimise performance and memory consumption in our Rails web application. Although I had heard the age-old complaints about Rails applications being slow, bulky and prone to memory bloat, I had yet to come across any practical, easy-to-navigate solutions to these issues.

Until we discovered jemalloc.

In this blog post, I will be giving a brief overview of what jemalloc is; how to check your current Rails app’s performance and memory consumption (including testing to see whether you have a memory leak); how to install jemalloc locally and in production; and finally, show you what our end-results were after we…

What is jemalloc?

Ruby traditionally uses the C library malloc to dynamically allocate, release,…

All Ruby Podcasts by Devchat.tv 

RR 384: “Sonic Pi” with Sam Aaron

Panel:

Special Guest: Sam Aaron

In this episode of Ruby Rogues, the panel talks with Sam Aaron who is the creator of Sonic Pi, which is the main topic that he and the panel talk about today. Sam is a computer scientist who has his Ph.D., and uses the Ruby language. He is also a programmer, educator, live coding musician, and father.

Show Topics:

1:25 – Panelist: Tell us what you are doing?

1:27 – Sam: Good question. I do a lot of different things and I try to challenge programming and take it a new

How can I be the most expressive person with code? I have written things to write music with code.

2:00 – Code is just a medium like dancing and writing. You…

Passenger - Phusion Blog 

What's in an app server

What's in an app server

In an ongoing effort to make Passenger more amenable to Open Source contributions - we'll support any arbitrary app out-of-the-box soon, and we've significantly updated our developer documentation - we questioned everything. From the brand name (Passenger), down to the terminology (application server), and from supporting legacy systems to rewriting entire parts of our Stack in Golang.

About the terminology. In my line of work (I am a Developer Advocate for Passenger) I will frequent meetups and conferences where I am asked to explain what the product I'm evangelizing actually does. More often than not people respond to my "Passenger is an app sever..." with blank stares and I hesitate to…

The Life of a Radar 

Working Towards Integration Testing Duolithic Applications

I've been revisiting Twist v2 recently. It's my book review tool that I've rebuilt multiple times over the past 8 years. Its latest incarnation is what I'm calling a "duolith": a very light Hanami backend application with a GraphQL API, and a frontend built with React and Apollo.

The backend and the frontend codebases are kept in separate directories in the same codebase. This allows for separation between the Ruby and JavaScript code, but also the ability to commit changes to both at the same time. The frontend knows how to communicate with the backend, but the backend is frontend-agnostic. Tomorrow I could replace it with Vue and the backend wouldn't care at all.

I've got pretty…

Mike Perham 

Testing Ruby's CGI

CGI is a standard for generating HTML pages from scripts executed as child processes by a web server. I explained CGI and how I use it in a previous post, CGI: Ruby's Bare Metal. I like to use CGI because it means that I don't have to run any Ruby app server (e.g. puma, passenger, unicorn) 24/7. Less moving parts == more robust!

Those app servers get most of the press these days so sadly CGI doesn't have much support and documentation; I couldn't find anything on how to test CGI scripts. These scripts handle my business, they need to work so I decided to put some effort into testing CGI. You, dear reader, are the benefactor!

Two things I learned:

  1. Webrick, Ruby's built-in HTTP server,…
Andy Croll 

A scope should return a scope

The more you can stay on the ‘rails’ when coding Ruby on Rails applications the easier your life will be when maintaining the apps you’re building.

A good way of doing this is to try and stick to the patterns set out in the standard Rails APIs. One of the patterns you can use is to encompass regularly used queries as scopes.

Instead of…

…using methods inside your scopes that return an object.

class Message < ActiveRecord
  scope :sent, -> { where.not(sent_at: nil) }
  scope :recently_sent, -> { sent.order(sent_at: :desc) }
  scope :most_recently_sent, -> { recently_sent.first } # returns an object or nil
end

Always…

…return an ActiveRelation from a named scope.

class Message < Activ…
RubyGems Blog 

September 2018 RubyGems Updates

Welcome to the RubyGems monthly update! As part of our efforts at Ruby Together, we publish a recap of the work that we’ve done the previous month. Read on to find out what updates were made to RubyGems and RubyGems.org in September.

rubygems.org news

This month, we updated seven dependencies on rubygems.org and simplified and sped up some rack-attack integration tests with the help of @mjankowski. We also discovered that it was possible to create “hidden” gems that would not show up in gem lists, and @kerrizor implemented a fix. Overall, rubygems.org got 15 commits from 2 authors making 146 additions and 263 deletions across 8 files.

rubygems news

This month, RubyGems merged 12 pull…

RubyGuides 

What is Ruby on Rails?

Ruby on Rails is an open-source web application framework. A framework is a collection of code, tools & utilities that give you a specific structure to work with. This structure makes your code more organized. Ok, but what does Rails do exactly? Rails helps you build websites. The kind of websites that you use every […]

The post What is Ruby on Rails? appeared first on RubyGuides. Don't miss your free gift here :)

Notes to self 

Cleaning up systemd journal logs on Fedora

systemd journal logs take a lot of space after a while. Let’s wipe them out!

First you might be interested how much space journal actually takes:

# journalctl --disk-usage
Archived and active journals take up 72.0M in the file system.

Now you know whether that’s too much or not. In case it is, use --vacuum-size option to limit the size of the log (everything above will be deleted). Here is me running the vacuum with 10MB limit:

# journalctl --vacuum-size=10M
Vacuuming done, freed 0B of archived journals from /var/log/journal/d0c1c31ca63b4654a92792c004b69295.

As you can see no space was freed up in my case. Why is that? Reading up the man page reveals that running –vacuum-size= has only…

The Bike Shed 

173: A Combinatoric Explosion of Nulls

Joël Quenneville joins Chris to discuss Elm, the strongly typed functional programming language for writing reliable client side web apps. They discuss recent changes from the 0.19 release including reduced bundle size from dead code elimination, the somewhat controversial removal of custom operators. Anecdotally, Joël and team saw a reduction from 31.5K to 16.6K in bundle size going from 0.18 to 0.19 and felt no pain from the custom operators removal, so a big net win for them with this new version.

Along the way Joël and Chris detour into the complexity of managing a project and community like Elm's and discuss Joël‘s recent work with the thoughtbot apprentice program. To round…

Awesome Ruby Newsletter 

Issue 125 - HTTP/2 for Ruby Web Development

Glauco Custódio 

Receive Policies Instead of Data

Hi folks, today I wanna share something that drew my attention while reading Confident Ruby.

Avdi presents the following method:

def delete_files(files, ignore_errors=false, log_errors=false)
  files.each do |file|
    begin
      File.delete(file)
    rescue => error
      puts error.message if log_errors
      raise unless ignore_errors
    end
  end
end

And its invocation:

require 'fileutils'
FileUtils.touch 'does_exist'
delete_files(['does_not_exist', 'does_exist'], true, true)

This code is not good at all.

  • the method worries to much in handling edge cases (error, logs)
  • The true, true in calls to delete_files does not help. We have to refer to the method definition to…
Depfu 

@depfu bot commands

There are two main ways you can interact with Depfu: clicking around in the UI and by commenting on the Depfu pull requests.

The UI is for getting an overview and configuring Depfu. The bot commands via comments are for day-to-day interactions, mainly working with a single version upgrade. You probably know the existing @depfu rebase.

Today we’re launching a few more bot commands that we think will make your everyday work with Depfu smoother and easier:

@depfu merge

If you ever worked with several open Depfu pull requests at the same time, you might know they can easily step on each other’s toes, resulting in merge conflicts. Or the case where you have an open PR with the build still…

Mike Perham 

Building Linux Packages and using Github Releases

I'm preparing to launch Faktory 0.9, a major overhaul to switch from RocksDB to Redis as the storage engine. The improvement in the development process is amazing. But I need to finalize how I distribute Faktory releases, which brings up the question:

As of right now, that tweet poll shows 58% of people want a deb, 32% want a Docker image, 7% want an rpm and 3% are Linux hipsters that lovingly craft each network packet by hand.

Building Packages

By removing RocksDB, a C++ dependency, we moved from a cgo build to a pure Go build. The advantages…

Ruby Weekly 

It's issue 420 of Ruby Weekly

#420 — October 11, 2018

Read on the Web

Ruby Weekly

csvreader: Read CSV-Formatted Tabular Data 'The Right Way' — An attempt at producing a better CSV reading library for Ruby due to issues in the one in the standard library.

Gerald Bauer

Pair With Me: Rubocop Cop that Detects Duplicate Array Allocations“I did have one person report a reasonably huge savings within their actual Rails app where they were chaining methods on a massive array of active record objects.”

Richard Schneeman

Spaces Object Storage Just Got Even Better. Learn More — A built-in CDN provides global edge caching to lower…

DigitalO…

Test Double | Our Blog 

I love meetings

I love meetings. Getting to know other people, understanding the challenges they're facing, and searching for ways to help them succeed is tremendously fun and rewarding. Helping others navigate the software industry is a big part of Test Double's mission, too, even when my direct involvement is limited to an introductory sales call.

I hate calendars. Each morning, I wake with ambitions of what I might accomplish. The possibilities are infinite! That is, of course, until I open my calendar:

A day from my calendar with four
  30-minute meetings, spread out

It might not look like much, but this is enough to immediately deflate my hopes of a productive, rewarding day. When I see a day like this one, I know that I'll have at most 3 hours in the morning…

Code with Jason 

How Dependency Injection Can Make Rails Tests Easier

“Dependency injection” is a fancy-sounding term. When I first heard it I assumed it referred to some super-advanced technique. It wasn’t until years later that I realized that dependency injection is a pretty straightforward technique once you understand what it is.

My aim with this post is to cut through the jargon and show you in simple terms what dependency injection is and why it’s useful.

But first: why are we interested in this topic?

Why bother learning dependency injection?

Depending on how it’s written, some code can be easy to test and some code can be hard to test. Code with entangled dependencies is hard to test.

Why is code with entangled dependencies hard to test? Imagine I…

Ruby on Rails Podcast 

247: Introducing Action Text for Rails 6 with Javan Makhmali

Action Text is a new framework coming to Rails 6 to make it easier to create, edit, and display rich text content within an app. Brittany invited Javan Makhmali, programmer at Basecamp, on to the show to get the scoop.

Links for this episode:

rails - Sips & Bits by michelada.io 

Building complex forms with Rails

Building complex forms with Rails

Building a form using Ruby on Rails sometimes can get a little bit more complicated than you think, when you want to use more than one model on it, even more, if your expertise on building forms is not extensive, and that's the moment when you wonder: Is there a better way to do this?

In Ruby on Rails the simplest way to do it is using "nested attributes" and creating a "nested form", but... What are these?

A nested attribute, allows you to create and save attributes from an associated model through its parent, and a nested form, is a form with another form inside of it. The second form is going to have the nested attributes you want to save.

Having said that, let's create an example using…

Valentino Gagliardi 

Test-Driven React: The Definitive Guide to Testing React Components

Test-Driven React is a living, breathing guide to testing React components. Constantly updated, better you bookmark it!

Test-Driven React: The Mostly Definitive Guide to Testing React

Web development is fantastic! You know HTML, CSS, JavaScript, and React!

You’re ready to build fantastic web applications people will use and love!

It sounds like a dream … until you land your first job as a front-end developer.

I don’t want to scare you but imagine this.

Molly, the lead developer, introduces you to a project after a brief tour of the offices.

She goes explaining how the app works and at some point she says:

“Ok, Gunnar here’s your task. We are in the process of rebuilding the application. I want you to rewrite it from scratch. But I want you to follow a…

Passenger - Phusion Blog 

Microservices vs spaghetti code are not your only options

Or: doing Kubernetes, without doing Kubernetes

Microservices vs spaghetti code are not your only options

For years it has been the ambition of Phusion and Hongli to standardise Passenger to enable more people to contribute, be less dependent on Hongli as the project’s benevolent leader (Guido van Rossum didn’t fancy that role for Python either) and establish design rules.

This discussion came back to me when I attended last month’s CodeDaze conference. There, Kerri Miller shared how her fascination with maps carried over to her development career. Kerri is a former Application Engineer at GitHub, former Senior Software Engineer at HashiCorp and works for Travis CI from the beginning of this year. She’s a familiar face at Ruby conferences. With her…

Ruby Together News 

September 2018 Monthly Update

Hello! Welcome to the monthly update. During September, our work was supported by Handshake, Stripe, Coinbase, Triplebyte, Bleacher Report, and many others.

ruby together news

In September, Ruby Together was supported by 73 different companies, including Sapphire member Stripe. Triplebyte joined as our newest Emerald member.

In addition, eight new developers signed up as members or friends of Ruby Together, including Rafael França. In total, we were supported by 77 individual members and 69 friends of Ruby Together. Thanks to all of our members for making everything that we do possible.

As mentioned last month, we solicited suggestions or applications to run in the yearly election for…

RubyGuides 

Ruby Map Method (With Examples)

Map is a Ruby method that you can use with Arrays, Hashes & Ranges. The main use for map is to TRANSFORM data. For example: Given an array of strings, you could go over every string & make every character UPPERCASE. Or if you have a list of User objects… You could convert them into […]

The post Ruby Map Method (With Examples) appeared first on RubyGuides. Don't miss your free gift here :)

All Ruby Podcasts by Devchat.tv 

MRS 064: Nathan Kontny

Panel: Charles Max Wood

Guest: Nathan Kontny

This week on My Ruby Story, the panel talks with Nathan Kontny who has been in the Ruby community since 2005. He once was a chemical engineer, and then got into programming after a broken ankle incident; after that...the rest is history! Today, Nathan and Chuck talk about Ruby, how to begin a startup company, Rockstar Coders, balancing life, and much more!

In particular, we dive pretty deep on:

1:05 – Chuck: E365 is the past episode you’ve been featured on.

1:14 – Nathan comments.

1:20 – Chuck.

1:56 – Nathan: Been in the community since 2005. I am a developer and entrepreneur. I do a lot of YouTube and videos nowadays.

2:50 – Chuck: How…

Greater Than Code 

100: The Business of Documentation with Jaime Slutzky

In this episode, Jaime Slutzky talks about making pieces of technology work together functionally, working for clients and business owners and then handing over processes and documentation, and what your clients need to know about tech stacks. Panelists: Jamey Hampton | John K. Sawers Guest Starring: Jaime Slutzky: @TechOfBusiness | Tech of Business | Podcast Show Notes: 01:12 – Jaime’s Superpower: Taking complex ideas and figuring out the fastest way from here to there. (i.e.: logistics!) Zapier 05:41 – Tech as a Roadblock 19:44 – Handing Off Responsibilities to Business Owners Process Street The Checklist Manifesto: How to Get Things Right Bullet Journals 18:09 – Identifying Ideal…
Code with Jason 

Atomic Commits and Testing

What atomic commits are and why they’re advantageous

I like to make Git commits very frequently. Looking at the Git log for a recent project, it looks like I tend to commit about every 5-15 minutes.

I find that the smaller my commits are the easier I make life for myself. I remember painful occasions in the past where I would do a big chunk of work, maybe two hours or so. Things would be going fine, going fine, and then all the sudden my work would collapse on itself and I wouldn’t be able to figure out how to get it back to a working state.

At that point my options would be either to scratch my head for the next hour to try to figure out what went wrong or to revert the whole two hours’…

Appfolio Engineering 

Traveling Ruby Conversation!

Hey, Rubyists!

I’m going to be traveling as I work for awhile. So expect announcements of interesting locations where I may be found. If you’d like to talk Ruby, I’m interested!

I’ll also try to contact local meetups in my various locations - I’d love to give talks or just hang out with the local folks!

I’m currently in Anaheim, California. Let me know if you’re nearby!

And I’ll be in Malaysia for RubyConf MY from October 15th-30th. Do I have any Malaysian readers?

Appfolio Engineering 

Ruby Method Lookup, RubyVM.stat and Global State

In Ruby, it can sometimes be a bit involved figuring out where a constant or a method comes from - not just for you, but for Ruby, too! When you call "foo," is it foo from your current class? One of its parents? A module included from a parent class? Somewhere else?

And of course, Ruby has a few objects whose methods are available just about everywhere - Object, BasicObject and Kernel.

When I wrote about the Global Method Cache, we touched on that just a little. Let's go a bit deeper, shall we?

Better yet, we'll learn about some things that you should carefully *not* do to keep your performance good, and how you check.

Method Caching and Cache Invalidation

Methods on three specific Ruby objects…

Schneems - Programming Practices, Performance, and Pedantry 

Pair With Me: Rubocop Cop that Detects Duplicate Array Allocations

You might know rubocop as the linter that helps enforce your code styles, but did you know you can use it to make your code faster? In this post, we’ll look at static performance analysis and then at the end there’s a video of me live coding a PR that introduces a new performance cop to rubocop.

Notes to self 

I am writing an introductory book to web application deployment

I decided to write a book (at the very least attempt to). And yes, there will be some Fedora inside!

Who is the target audience?

Everybody who want to start with system administration for the purposes of web server deployment. Beginners or false beginners. Ideally people with web development experience and comfortable with command line.

What will it be about?

The book will touch some general topics in system administration and provide some practical examples including deployment of Ruby on Rails & PostgreSQL application. I might add other stack/s once I have this ready.

What will be most likely in the book?

I am slowly working on the final Table of Contents. Here is something that will be…

All Ruby Podcasts by Devchat.tv 

RR 383: “Rbspy: A New(ish) Ruby Profiler!” with Julia Evans

Panel:

Special Guests: Julia Evans

In this episode of Ruby Rogues, the panel talks with Julia Evans who is a software engineer at Stripe and lives in Montreal, Quebec, Canada. The panel talks with Julia about her tool Ruby Spy among other topics. Check it out!

Show Topics:

1:34 – Julia gives her background.

1:52 – Chuck: You’ve been on the show before. Listeners, go check it out!

2:30 – What is Ruby Spy?

2:09 – Julia: I wanted to know WHY my computer was doing what it was doing. I felt that it was my right, so I wrote that program.

3:20 – Julia: This does have these profiling tools in Java. I thought it was unfair that Java had…

Honeybadger Developer Blog 

GitLab Integration and More New Features at Honeybadger

As fall arrives, our thoughts turn to cozy sweaters, pumpkin-spice lattes, and wicked new Honeybadger features. We're particularly proud of our new GitLab integration.
RubyGuides 

Understanding Method Visibility In Ruby

What does public, private & protected mean in Ruby? These 3 methods control the public interface of your class. They control WHO can call these methods. By default all your methods are public, anyone can use them. But you can also restrict them to only internal use. Why would you want to do that? To […]

The post Understanding Method Visibility In Ruby appeared first on RubyGuides. Don't miss your free gift here :)

Hi, we're Arkency 

What I've learnt at RESCON

During 4–6 October 2018 I had a pleasure to organize and participate in RESCON. It was an opportunity to show and share what I’ve learned over the years. I’ve met new people that are into this topics and that gave me new perspective on things I work on. Without further ado, below are things I’ve learnt on first ever RailsEventStore conference.

People love event schemas

There is a certain appeal in knowing the current shape of a domain event. It helps from a documentation point of view, it could drive better tooling as well. Without schemas you rely on thorough test coverage.

On hackathon I’ve seen a tool to show focused diff of schema changes over time. High five to Ania and Mariusz!

bogdanvlviv / Bogdan 

What is new in Rails 6.0

Hello!

This post about news, and some changes that have been done in Rails 6.0.

I am bogdanvlviv - Rails Contributor, and Ruby Programmer.

Note that this post is being updated since Rails 6.0 has not been released yet. In order to be notified about new changes in this post, you can subscribe to my mailing list, follow me on Twitter, or just refresh this page from time to time. Stay tuned!

Links to sort out:

Start Rails 6.0 development!!!

Rails 6 requires Ruby 2.4.1+

Parallel testing

Add Relation#pick as short-hand for single-value plucks

Add #create_or_find_by to lean on unique constraints

Introduce custom serializers to ActiveJob arguments

Deprecate…

Drifting Ruby Screencasts 

Service Objects for API Interactions with Twilio

In this episode, learn how to extract the interactions with an external API into a service object so that code is isolated and interchangeable.
Julia Evans 

What's a senior engineer's job?

There’s this great post by John Allspaw called “On being a senior engineer”. I originally read it 4ish years ago when I started my current job and it really influenced how I thought about the direction I wanted to go in.

Rereading it 4 years later, one thing that’s really interesting to me about that blog post is that it’s explaining that empathy / helping your team succeed is an important part of being a senior engineer. Which of course is true!

But from where I stand today, most (all?) of the senior engineers I know take on a significant amount of helping-other-people work in addition to their individual programming work. The challenge I see me/my coworkers struggling with today isn’t…

Ruby on Rails Podcast 

246: Trust Arts, Trust Rails with Patrick FitzGerald and Danielle Greaves

Brittany put her tickets aside to invite her web team at the Pittsburgh Cultural Trust, Patrick FitzGerald (Director of eCommerce) and Danielle Greaves (Frontend Developer) on to the show. They discuss their origin stories, their team dynamics and their favorite aspects of Rails.

Links for this episode:

Remote Ruby 

What else can Rails add by default?

RubySec 

Nokogiri gem, via libxml2, is affected by multiple vulnerabilities

The Bike Shed 

172: What I Believe About Software

Steph Viccari joins Chris for a conversation starting with a discussion of some deployment and orchestration issues Chris was helping out with, followed by some of Steph's recent experiences with JSONB in postgres and the relative trade-offs of unstructured data.

The heart of the conversation revolves around the core processes we use to develop software touching on sprint planning & story points, deadlines, the place for refactoring and code review in the regular cadence of development, and the often lamented retrospective meeting.

Awesome Ruby Newsletter 

Issue 124 - Upgrading GitHub from Rails 3.2 to 5.2

Ruby Weekly 

DHH introduces Action Text for Rails 6

#419 — October 4, 2018

Read on the Web

Ruby Weekly

Introducing Action Text for Rails 6Action Text is a new framework coming to Rails 6 to make it easier to create, edit, and display rich text content within an app. It leans upon Basecamp’s Trix editor which recently reached version 1.0. DHH has recorded a screencast showing how it works.

David Heinemeier Hansson

How GitHub Upgraded from Rails 3.2 to 5.2 — How Github, over a year and a half, upgraded from Rails 3.2 to Rails 5.2 using a dual boot process and a ton of patience. Definitely not an enviable task.

Eileen M. Uchitelle

Actionable…

Riding Rails 

Introducing Action Text for Rails 6

Action Text is a brand new framework coming to Rails 6 that’s going to make creating, editing, and displaying rich text content in your applications super easy. It’s an integration between the Trix editor, Active Storage-backed file and image processing, and a text-processing flow that ties it all together. With Action Text, you really shouldn’t ever have to impoverish your users with a vanilla textarea ever again!

Rails 6 is still a long ways off – we’re hoping to start the beta process in early 2019 – but Action Text is already in pretty decent shape. Yes, this is an alpha preview, and we haven’t even merged it into rails/rails yet, but it’s a release that’s been extracted from the code…

Riding Rails 

Introducing Action Text for Rails 6

Action Text is a brand new framework coming to Rails 6 that’s going to make creating, editing, and displaying rich text content in your applications super easy. It’s an integration between the Trix editor, Active Storage-backed file and image processing, and a text-processing flow that ties it all together. With Action Text, you really shouldn’t ever have to impoverish your users with a vanilla textarea ever again!

Rails 6 is still a long ways off – we’re hoping to start the beta process in early 2019 – but Action Text is already in pretty decent shape. Yes, this is an alpha preview, and we haven’t even merged it into rails/rails yet, but it’s a release that’s been extracted from the code…

Running with Ruby 

Simplifying internal validations using Dry-Validation

When building APIs for other developers, it’s often important to draw the line between other programmers input data and the internal world of your library. This process is called data validation and you’re probably familiar with this name.

What you may not know, is the fact that it can be achieved in many ways.

One that I particularly like is by using the dry-validation library. Here’s an example on how you can separate the validation from the actual business logic without actually changing the API of your library.

The inline way

The easiest way to provide validations is to embed the checks in a place where you receive the data.

This approach is great for super simple cases like the one…

ruby – Bibliographic Wilderness 

Some notes on what’s going on in ActiveStorage

I work in a library-archives-museum digital collections and preservation. This is of course a domain that is very file-centric (or “bytestream”-centric, as some might say). Keeping track of originals and their metadata (including digests/checksums), making lots of derivative files (or “variants” and/or “previews” as ActiveStorage calls them; of images, audio, video, or anything else)

So, building apps in this domain in Rails, I need to do a lot of things with files/bytestreams, ideally without having to re-invent wheels of basic bytestream management in rails, or write lots of boilerplate code. So I’m really interested in file attachment libraries for Rails. How they work, how to use them…

All Ruby Podcasts by Devchat.tv 

MRS 063: Victor Shepelev

Panel: Charles Max Wood

Guest: Victor Shepelev

This week on My Ruby Story, Charles talks with Victor Shepelev who is a Ruby programmer and also a poet. He works for Verbit.ai and lives in Kharkiv, Ukraine. Chuck and Victor talk about his background, how Victor got into Ruby, and his latest projects.

In particular, we dive pretty deep on:

1:13 – Chuck: Episode 367 – check it out!

1:37 – Background?

1:42 – Living in Ukraine.

2:08 – Chuck: How did you get into programming?

2:18 – Victor: I broke my leg and very bored. In ‘85-‘86 and I was gaming. Since then I got into programming and have been in it for 20 years.

3:20 – Chuck: Prince of Persia.

3:26 – Chuck: What made you stick with…

Passenger - Phusion Blog 

Passenger 5.3.5: fixing Ubuntu 18.04 regression

Passenger 5.3.5: fixing Ubuntu 18.04 regression

Version 5.3.5 of the Passenger application server for Ruby, Node.js, Meteor and Python has been released. This release fixes an issue where Ubuntu 18.04 packages failed to install.

Rebuild against the latest Nginx

Two weeks ago we became aware of issues with Ubuntu 18.04 package installation, triggered by a Nginx version mismatch. As it turns out, Passenger's libnginx-mod-http-passenger package for Ubuntu strictly depends on the Nginx version current with our previous (5.3.4) release, 1.14.0-0ubuntu1. Two weeks ago an update in Ubuntu bumped the Nginx version to 1.14.0-0ubuntu1.1, preventing libnginx-mod-http-passenger from being installed.

We've rebuild our packages against the most…

Greater Than Code 

099: The Knowledge You Possess with Stephanie Morillo

In this episode, Stephanie Morillo talks about content strategy, technical writing, organizing and optimizing company internal systems, and that you need to give yourself more credit for the things you’ve already accomplished! Panelists: Jamey Hampton | John K. Sawers | Coraline Ada Ehmke Guest Starring: Stephanie Morillo: @radiomorillo | stephaniemorillo | #WOCinTechChat Show Notes: 02:40 – Stephanie’s Superpower: Intellectual Curiosity 13:06 – On Being a Content PM, Technical Writer, and Ruby Together Core Team Member @azureadvocates Ruby Together 19:44 – Validating Open Source Software Contribution Write the Docs Slack Community 24:27 – Filtering Feedback 28:14 – The Importance of…
Honeybadger Developer Blog 

Honeybadger for Laravel Nova

Join Marcel Pociot as he walks through building a Honeybadger custom resource tool for Laravel Nova.
RubyGuides 

How To Delegate Methods in Ruby

In Object-Oriented Programming, there are two ways for classes to work together. They are: Inheritance Composition With inheritance, you create class hierarchies, where a parent class shares methods, constants & instance variable definitions with any class that inherits from it. For example: In Ruby, every object inherits from the Object class by default. That’s why […]

The post How To Delegate Methods in Ruby appeared first on RubyGuides. Don't miss your free gift here :)

Ruby Magic by AppSignal 

The Magic of Class-level Instance Variables

In a previous Ruby Magic, we figured out how to reliably inject modules into classes by overwriting its .new method, allowing us to wrap methods with additional behavior.

This time, we’re taking it one step further by extracting that behaviour into a module of its own so we can reuse it. We’ll build a Wrappable module that handles the class extension for us, and we’ll learn all about class-level instance variables along the way. Let’s dive right in!

Introducing the Wrappable Module

In order to wrap objects with modules when they are initialized, we have to let the class know what wrapping models to use. Let’s start by creating a simple Wrappable module that provides a wrap method which…

BigBinary Blog 

Ruby 2.6 adds RubyVM::AST module

This blog is part of our Ruby 2.6 series. Ruby 2.6.0-preview2 was recently released.

Ruby 2.6 added RubyVM::AST to generate Abstract Syntax Tree of code. Please note that this feature is experimental and under active development.

As of now RubyVM::AST supports two methods named as parse and parse_file.

parse method takes string as parameter and returns root node of the tree in the form of an object of RubyVM::AST::Node.

parse_file method takes file name as parameter and returns root node of the tree in the form of an object of RubyVM::AST::Node.

Ruby 2.6.0-preview2

irb> RubyVM::AST.parse("(1..100).select { |num| num % 5 == 0 }")
=> #<RubyVM::AST::Node(NODE_SCOPE(0) 1:0, 1:38): >

irb>

RubyVM::AST::Node

Depfu 

Changelogs: To write or to generate?

The first rule of automation: Automate as much as you can, but not more.

In the last two posts, we’ve established why changelogs are important and how they should look. In this post, we’re going to take a look at the practicalities.

Let’s start with where to put it - If your project is on GitHub, you have two good places to write a changelog. One is simply creating a file called CHANGELOG.md (analoguous to the infamous README.md) in your project root folder. Unfortunately, there’s no standard for the actual file name, but CHANGELOG.md is a good default and quite common (and this is not exactly a good opportunity to show your creative side).

The other one is to use GitHub releases. GitHub…

All Ruby Podcasts by Devchat.tv 

RR 382: "When to Build... When to Buy" with The Panelists

Panel:

In this episode of Ruby Rogues, the panel talks amongst themselves the topic: “When to Build, or When to Buy.” They discuss how time is limited, and whether it is worth their time to build their own app/software or to just purchase. They discuss the pros and cons of each. Check-out today’s episode for more details!

Show Topics:

1:40 – Chuck: Anything that prompted choosing this topic?

2:13 – Dave: I am not a huge stickler of keeping tracks of things. With a new car, I wanted to start this off right. I wanted an app to show history of car. I wanted a simple view and wanted to take pictures of receipts. I didn’t find anything out there…

Ruby Magic by AppSignal 

Inheritable class instance variables in Ruby

In a previous post we figured out how to reliably wrap objects with additional behavior by modifying the way Ruby creates objects. Now let’s look at extracting that behavior into a module so that we can reuse it.

Introducing the Wrappablemodule

In order to wrap objects with modules when they are initialized, we have to tell the class what wrapping models to use. Let’s start by creating a simple Wrappable module that provides a wrap method that pushes the given module into an array defined as class attribute. Additionally we redefine the new method as discussed in the previous post.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
module Wrappable 
  @@wrappers = []

  def wrap(mod)
    @@wrappers << mod
Ruby Conferences 'n' Camps in 2018 - What's Upcoming? 

London Ruby Unconference @ London, England, United Kingdom - Ruby Conferences 'n' Camps Update

Conferences 'n' Camps

What's News? What's Upcoming in 2018?

London Ruby Unconference (FREE)
Oct/6 (1d) Sat @ London, England, United Kingdom • (Updates)

See all Conferences 'n' Camps in 2018».

Julia Evans 

Some possible career goals

I was thinking about career goals a person could have (as a software developer) this morning, and it occurred to me that there are a lot of possible goals! So I asked folks on Twitter what some possible goals were and got a lot of answers.

This list intentionally has big goals and small goals, and goals in very different directions. It definitely does not attempt to tell you what sorts of goals you should have. I’m not sure yet whether it’s helpful or not but here it is just in case :)

I’ve separated them into some very rough categories. Also I feel like there’s a lot missing from this list still, and I’d be happy to hear what’s missing on twitter.

technical goals

  • become an expert in…
Riding Rails 

Multi env credentials support, Action Cable channel unit testing and more!

Hello everyone! This is Prathamesh from Pune, India bringing you the latest news from the Rails world.

Multi environment support for credentials

Now it is possible to have credentials for each environment. If the file for current environment exists it will take precedence over config/credentials.yml.enc. For eg. production environment looks for
config/credentials/production.yml.enc first.

Support for unit testing Action Cable channels

This change introduced ActionCable::Channel::TestCase  which provides an ability to unit test channel classes.

Raise error when using recyclable cache keys using a store which does not support it

Some cache stores do not support recyclable cache keys.…

Andy Croll 

Don’t Loop & Do Work in Jobs

Getting as much of the slow or non-essential work of your application into asynchronous jobs is a good idea for the overall performance of your application.

Instead of…

…doing a single job that iterates over a group of objects and does some work on each one:

class DoABunchOfTranslationsJob < ApplicationJob
  def perform
    Text.find_each do |text|
      text.do_a_slow_translation
    end
  end
end

Use…

…an initial ‘enqueuing’ job to create many small, independent jobs that act on each object individually.

class DoABunchOfTranslationsJob < ApplicationJob
  Text.find_each do |text|
    DoASingleTranslationJob.perform_later(text)
  end
end

class DoASingleTranslationJob < ApplicationJob

But why?

Jobs should ideally run as quickly as possible and make use of the concurrency of…

Karol Galanciak - Ruby on Rails and Ember.js consultant 

The Problems With Validating ActiveRecord Models And Why State Validation Is a Bad Idea

In the typical Rails application, you can find the most of the validations in the ActiveRecord models, which is nothing surprising – ActiveRecord models are used for multiple things. Whether it is a good thing, or a bad thing (in most cases it’s the latter) deserves a separate book or at least blog post-series as it’s not a simple problem, there is one specific thing that can cause a lot of issues that are difficult to solve and go beyond design decisions and ease of maintenance of the application, something that impacts the behavior of the model – the validations.

Just to give you a real-world example of what validation in ActiveRecord model looks like (as impossible as it seems, it…

Drivy Engineering 

Open-sourcing checker jobs

We’ve recently extracted the checker_jobs gem from our codebase. It’s a simple alerting tool with a very specific purpose which this article will explain.

Over time, we update the rules that our data has to comply with. Making sure our data is always what we expect it to be is hard, especially when old constraints change, new constraints come along, new fields are added, backfill isn’t always possible…

Even with a careful team behind it, the system can produce corrupted data for weeks, months, or years before anyone notices. By that time, it could be too late or just impossible to fix. In comparison, crashes are noticed faster and could be corrected quickly, when a data issue could spread…

Drifting Ruby 

Updated to Mojave

MacOS 10.14 was released recently and updating the operating system of your development environment can be scary. Typically, I’ll wait some time before I update to ensure I don’t lose productivity. I took the plunge and updated and ran into a strange error where a library was missing.

If you’ve upgrade to Mojave and try to install a gem like mini_racer you will run into problems with a library not being found. This was due to XCode 10 removing the library. However, there is an easy fix to this.

The first indication was that the command line tools were not installed.

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

current directory:…
Awesome Ruby Newsletter 

Issue 123 - Jon Rowe and Sam Phippen are RSpec's new leads

BigBinary Blog 

Inline Installation of Firefox Extension

Inline Installation

Firefox extensions, similar to Chrome extensions, help us modify and personalize our browsing experience by adding new features to the existing sites.

Once we’ve published our extension to the Mozilla’s Add-on store(AMO), users who browse the AMO can find the extension and install it with one-click. But, if a user is already on our site where a link is provided to the extension’s AMO listing page, they would need to navigate away from our website to the AMO, complete the install process, and then return back to our site. That is a bad user experience.

The inline installation enables us to initiate the extension installation from our site. The extension can still be…

Ruby Weekly 

Creating an executable file from Ruby code

#418 — September 27, 2018

Read on the Web

Ruby Weekly

Making a Ruby Executable with ruby-packer — If you need to distribute your Ruby gem as a single (albeit, large) executable, ruby-packer is one way to go.

Josef Strzibny

Awesome Ruby: Curated List of Ruby Libraries and Tools — It’s been a year since we’ve linked to this epic, categorized collection of Ruby greatness, and it continues to be updated several times a month with new entries added and obsolete entries removed.

Marc Anguera Insa

Burn Your Logs — Use Sentry's open source error tracking to get to the root cause of issues. Setup only takes…

RubyMine Blog 

Intention Actions in RubyMine

RubyMine provides you with a set of intention actions that can help you to quickly fix code smells, convert statements for better code style, add strings to locale dictionaries, use language injections, and do other handy things simply by pressing Alt+Enter. Let’s review all the basic and new intention actions added in RubyMine 2018.3 EAP.

Quick Overview

Let’s start with some basic exaxmples:

Below is a two-line statement that uses a ternary operator. You can easily convert it to an if...end clause, which is considered preferable for multiline statements. Just put the caret anywhere inside the statement, and press Alt+Enter:

That’s it! Note that…

Ruby on Rails Podcast 

245: How I Got My First Pull Request into Rails with Nick Schwaderer

Brittany's official debut as the host of the podcast! Brittany invites Nick Schwaderer, Ruby on Rails engineer at OceansHQ, on to the podcast to discuss meaningfully leveling up your open-source participation. They dive into Nick's first contribution to Rails core.

Links for this episode:

Martian Chronicles, Evil Martians’ team blog 

Learning how to learn deep learning

Author: Alexey Gaziev, Lead Developer at Evil Martians, CTO at Amplifr

This is a story of a software engineer’s head-first dive into the “deep” end of machine learning. CTO of Amplifr shares notes taken on his still ongoing journey from Ruby developer to deep learning enthusiast and provides tips on how to start from scratch and make the most out of a life-changing experience.

Let’s start with an imaginary portrait and see if you recognize yourself or someone you know.

You are a software engineer who works with code every day, building complex things, turning business requirements into application logic and shipping mostly on time. You have tried your hand at different programming…

avdi.codes 

New MOOM pairing video #7

Hiya! I just wanted to send out a quick update to let you know that a new pair-programming video has been added to the MOOM course:

In this video you'll see Betsy and I dig into the step definitions for a new acceptance test, and along the way discuss good step design and using Page Objects for testing. This video is a free update for all participants in the MOOM course.

Enjoy!

BigBinary Blog 

Using parametrized containers for deploying Rails micro services on Kubernetes

When using micro services with containers, one has to consider modularity and reusability while designing a system.

While using Kubernetes as a distributed system for container deployments, modularity and reusability can be achieved using parameterizing containers to deploy micro services.

Parameterized containers

Assuming container as a function in a program, how many parameters does it have? Each parameter represents an input that can customize a generic container to a specific situation.

Let’s assume we have a Rails application isolated in services like puma, sidekiq/delayed-job and websocket. Each service runs as a separate deployment on a separate container for the same…

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

Ruby Russia @ Moscow, Russia - Ruby Conferences 'n' Camps Update

Conferences 'n' Camps

What's News? What's Upcoming in 2018?

Ruby Russia
Oct/6 (1d) Sat @ Moscow, Russia • (Updates)

See all Conferences 'n' Camps in 2018».

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

RubyConf Malaysia @ Kuala Lumpur, Malaysia - Ruby Conferences 'n' Camps Update

Conferences 'n' Camps

What's News? What's Upcoming in 2018?

RubyConf Malaysia
Oct/25+26 (2d) Thu+Fri @ Kuala Lumpur, Malaysia • (Updates)

See all Conferences 'n' Camps in 2018».

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

Keep Ruby Weird @ Austin, Texas, United States - Ruby Conferences 'n' Camps Update

Conferences 'n' Camps

What's News? What's Upcoming in 2018?

Keep Ruby Weird
Nov/9 (1d) Fri @ Austin, Texas, United States • (Updates)

See all Conferences 'n' Camps in 2018».

All Ruby Podcasts by Devchat.tv 

MRS 062: Neil Brown

Panel: Charles Max Wood

Guest: Dr. Neil Brown

This week on My Ruby Story, Charles talks with Dr. Neil Brown who is a researcher. He helps people teach “how to program” more effectively and efficiently. Check out his social media pages and his research via the web. Chuck and Neil talk about his research among other topics.

In particular, we dive pretty deep on:

0:52 – Chuck: We are talking with Neil Brown.

1:05 – Chuck: I’ve always wanted to go to London! Let’s dive in and talk about you and how you got into all of this stuff.

1:40 – Neil: I was in primary/elementary school and sometime there I went to my dad and I asked him how are these games made? He gave me a book.

3:12 – Chuck:…

RubyGuides 

The Ultimate Guide to Ruby Gems, Gemfiles & Bundler

A Ruby gem packages together Ruby code in a way that is easy to share with others. Gems solve mostly two problems: A common format for sharing libraries & tools in Ruby A way to describe dependencies so they are installed automatically with the gem Thanks to Ruby gems we have a rich ecosystem of […]

The post The Ultimate Guide to Ruby Gems, Gemfiles & Bundler appeared first on RubyGuides. Don't miss your free gift here :)

OmbuLabs Blog 

Step up the security of your Rails app | Part 1

The internet is a wonderful place, but there will always be people that don't have good intentions when they visit our websites. That's why you need to be aware of the vulnerabilities that your application can have and how to avoid them. In this article I'll cover two common security problems in Rails applications (I'll probably make a second part since this is a very extensive topic).

It's also worth to mention that Rails itself has improved a lot over the years to make everything more secure and easy for the people who use it. That's one of the reasons why it's so important to upgrade your Rails project.

Before we start you should know that Rails has an official security guide with a…

Notes to self 

Making a Ruby executable with ruby-packer

You can make a single executable from your gem or even a Rails application. I just tried ruby-packer and it works as promised.

One of the things that I missed when writing a command line tool in Ruby was making a binary that is easy to distribute. Since Ruby is an interpreter we cannot just make a binary.

However, there are ways how to package Ruby interpreter and all the required gems together with your program as one distribution. For one there was Traveling Ruby project. Another good option is to look at how Vagrant is packaged (I did that when we were bringing Vagrant natively for Fedora back in the day). But neither approach felt quite right and the best way to distribute Ruby programs…

RubyMine Blog 

RubyMine 2018.2.3 Is Available

Hi everyone,

RubyMine 2018.2.3 (build 182.4323.73) is now available. This minor release features an ability to explicitly run scripts with bundle exec. Previously RubyMine used RUBYOPT options to achieve the same result, which caused confusion and issues in specific cases (see RUBY-11434 & RUBY-22247).

To explicitly run scripts with bundle exec, go to Help | Find Action | Experimental features, and check ruby.force.explicit.bundle.exec:

explicit_bunde_exect

Note that this option will be enabled by default starting with v2018.3 (to be released in November 2018).

Some other annoying issues were also fixed in this build:

  • GEM_HOME/GEM_PATH not set” warning [RUBY-22254]
  • Inability to read the $GEM_HOME environment…

Download RubyMine 2018.2.3

See…

All Ruby Podcasts by Devchat.tv 

RR 381: “Ruby GUI Development” with Saverio Miroddi

Panel:

  • Charles Max Wood
  • Dave Kimura
  • Eric Berry

Special Guests: Saverio Miroddi

In this episode of Ruby Rogues, the panel talks to Saverio Miroddi who is an engineer among other things. Saverio has written articles, and a link to two of his articles is found below. The panel and Saverio talk about Ruby, Ruby Motion, Shoes, Hackety Hack, and much more! Check out the episode!

Show Topics:

2:05 – Chuck asks a question.

2:42 – Chuck: What do you recommend for the listeners?

2:49 – Saverio: At the time I recommended an underdog. Now, making a recommendation is kind of hard. It depends on what they need. It’s fascinating in a way, because web development is not straightforward.…

Super Good Software 

Rails: A New Scope

Rails has some magic. Sometimes that magic is very confusing. This is the story of one of those times where the magic is confusing.

ActiveRecord provides two different ways of defining scopes. First is by using the scope class method:

class Post < ActiveRecord::Base
  scope :published, -> {
    where('published_at < ?', Time.zone.now)
  }
end

The other way is by defining them as a class methods. Class methods on models are available as scopes… even if you didn’t mean to use them that way.

class Post < ActiveRecord::Base
  def self.published
    where('published_at < ?', Time.zone.now)
  end
end

Either of these allow you to use published as a scope, chained along…

Remote Ruby 

Chasing Bugs, Redis, Tailwind-Stimulus Controllers, and Superleggera

Chris and Jason start their morning talking about different projects they've been working on.
Julia Evans 

Why sell zines?

Hello! As you may have noticed, I’ve been writing a few new zines (they’re all at https://jvns.ca/zines ), and while my zines used to be free (or pay-for-early-access-then-free after), the new ones are not free! They cost $10!

In this post, I want to talk a little about why I made the switch and how it’s been going so far.

selling your work is okay

I wanted to start out by saying something sort of obvious – if you decide to sell your work instead of giving it away for free, you don’t need to justify that (why would you?). Since I’ve started selling my zines, exactly 0 people have told me “julia, how dare you sell your work”, and a lot of people have said “your work is amazing and I’m…

Search Results for “ruby” – via @codeship 

Updated GitHub Integration

Reading Time: 4 minutes

Today we rolled out a new GitHub integration (based on GitHub Apps) which changes login options and how projects are created.

Logging in with GitHub

The first thing you might notice, is that you’ll be asked to authorize CodeShip to access your GitHub account. We are migrating away from the OAuth App to the new GitHub App.

One improvement is that we no longer require read/write access to your repositories. Using the GitHub App APIs enables us to be more granular in what permissions the CodeShip GitHub App requires.

If you only use GitHub to login to CodeShip, you can stop here and skip the rest of this message. However, if you manage or setup projects, please read the…

Julia Evans 

New zine: Help! I have a manager!

I just released a new zine! It’s called “Help! I have a manager!”

This zine is everything I wish somebody had told me when I started out in my career and had no idea how I was supposed to work with my manager. Basically I’ve learned along the way that even when I have a great manager, there are still a lot of things I can do to make sure that we work well together, mostly around communicating clearly! So this zine is about how to do that.

You can get it for $10 at https://gum.co/manager-zine. Here’s the cover and table of contents:

The cover art is by Deise Lino. Tons of people helped me write this zine – thanks to Allison, Brett, Jay, Kamal, Maggie, Marc, Marco, Maya, Will, and…

Mike Perham 

Moving to Mastodon

Last month I revived my Mastodon account after seeing one more round of Twitter giving Nazi accounts acting in bad faith a pass while suspending upset liberal accounts acting in good faith.

I think this concept of acting in good faith vs bad faith is the crux of the issue in social media today. Is this person trying to make things better or are they delaying action, spreading confusion or uncertainty, harassing others into silence? Often it is easy to tell in the case of red-blooded USA patriot accounts with IP addresses in St. Petersburg or anonymous anime fans who make it clear that they hate women.

But often it's not clear at all. People acting in good faith can still inadvertantly…

RubyMine Blog 

I18n Features in RubyMine

This post will cover a number of handy options that RubyMine provides to help you internationalize your application, including the newest ones added in the recently announced RubyMine 2018.3 EAP.

Creating I18n translations

First of all, you can create an I18n property from a string for all existing dictionaries. To do this, simply put the caret on the desired string, press Alt+Enter to invoke Intention Actions, and Choose I18n string value. This will open a dialog where you can create a property key and provide translations for…


RubyMine will create a key-value pair…

The Bike Shed 

171: What If We Just Used a Form?

Matt Sumner joins Chris for a discussion around Matt's recent adventures with the block chain and Ethereum, as well as tackling the thorny issue of server rendered vs client side apps. They cover a bit of history, a bit of opinion, and some practical considerations to keep in mind when tackling rich client development.

Awesome Ruby Newsletter 

Issue 122 - I wrote this simple serverless platform dedicated to run Ruby functions. Feedback appreciated!

Code with Jason 

Reverse job ad

.footer-opt-in {display: none;}

I’m looking for a new job. Inspired by this reverse job ad, I decided to create one of my own.

Who I am

I’m Jason Swett, software engineer. I’ve been coding since the ’90s. I’ve taught programming in Nigeria, Bulgaria, the Netherlands and even Missouri. I’m the host of the Ruby Testing Podcast and author of Angular for Rails Developers. Most of my work over the last six years has been in Ruby on Rails. I’m primarily a back-end engineer although I’ve done my fair share of JavaScript work as well.

What I’m looking for in my next role

In my next role I can see myself doing any combination of the following things:

  • Training and mentoring junior developers
  • Devel…
Ruby Weekly 

A Future for Serverless Ruby?

#417 — September 20, 2018

Read on the Web

Ruby Weekly

A Future for Serverless Ruby? — Ruby has been a long overlooked language when it comes to serverless but OpenWhisk, an open source serverless system, has now added native support. FaaStRuby is another interesting experiment in the serverless Ruby world right now, too.

Justin Halsall

RubyMe: A Paid Mentorship Program for Early-Career Ruby Developers — If you’re accepted, you’ll get paid for 8 hours of Ruby related community work (documentation, design, testing, etc.) and be mentored through the process.

Ruby Together

Real-Time Production…

Toxic Elephant 

Betting

I happened upon this comment.

But more important, it just doesn’t work sensibly to explain why many people decline modest bets (e.g. that someone not on the brink of starvation would decline a 50/50 lose $100 vs gain $110) bet.

You can look at this bet in two ways. The first is the single bet. Then, you can think about how bad you feel about losing $100, versus how good you feel about gaining $110.

The second way is as a repeated bet. And I think this is how people do think about it: If I bet yesterday, why not bet today? Or, I lost yesterday, I need to bet again today to ‘make up for it’.

Emotions aside, the reason given that the bet is a good one, is that in the long run the better…

Greater Than Code 

098: Designing For Inclusion with Jenny Shen

In this episode, Jenny Shen talks about not giving a f*ck and why that’s okay, design and UX for international users, paid mentorship, and the intersection between privilege and open source. Panelists: Jamey Hampton | Jessica Kerr | Sam Livingston-Gray Guest Starring: Jenny Shen: @jennyshen | jennyshen.com Show Notes: 01:51 – Jenny’s Superpower: Not Giving a F*ck and Sticking Up For Others The Subtle Art of Not Giving a F*ck: A Counterintuitive Approach to Living a Good Life 05:00 – Living a Remote Lifestyle and Cross-Cultural Communication 08:34 – Design and UX For International Users / Research for Local Users 18:08 – Designing to Include All People: Is it possible? 27:07 – Paid…
Jekyll • Simple, blog-aware, static sites 

Security Fixes for series 3.6, 3.7 and 3.8

Hi Jekyllers,

We have patched a critical vulnerability reported to GitHub a couple of weeks ago and have released a set of new gems to bring that patch to you. The vulnerability allowed arbitrary file reads with the cunning use of the include: setting in the config file.

By simply including a symlink in the include array allowed the symlinked file to be read into the build when they shouldn’t actually be read in any circumstance.   Further details regarding the patch can be viewed at the pull request URL

The patch has been released as versions 3.6.3, 3.7.4 and 3.8.4.   Thanks to @parkr v3.7.4 was released a couple of weeks prior and has been bundled with github-pages-v192.

Please keep…

All Ruby Podcasts by Devchat.tv 

MRS 061: Erik Dietrich

Panel: Charles Max Wood

Guest: Erik Dietrich

This week on My Ruby Story, Charles talks to Erik Dietrich who is a consultant and a business owner. After he left the IT life, he is a partner for a content marketing company among others.

In particular, we dive pretty deep on:

0:52 – Greetings! It’s another story on Ruby Stories.

1:04 – We have had you on Episode 296.

1:28 – Guest: I did in my blogger days, but over the course of time but I ran into management roles and then left. That definitely skewed my topics that I talked about.

1:59 – Chuck: Introduce yourself for people. 

2:53 – Chuck: Let’s talk about your career or even further back. How did you get into programming?

3:24 –…

Julia Evans 

Build impossible programs

Hello! My talk from Deconstruct this year (“Build impossible programs”) is up. It’s about my experience building a Ruby profiler. This is the second talk I’ve given about building a profiler – the first one (Building a Ruby profiler) was more of a tech deep dive. This one is a squishier talk about myths I believed about doing ambitious work and how a lot of those myths turn out not to be true.

There’s a transcript on Deconstruct’s site. They’re also gradually putting up the other talks from Deconstruct 2018, which were generally excellent.

video

slides

As usual these days I drew the slides by hand. It’s way easier/faster, and it’s more fun.

zine side note

One extremely awesome…

RubyGuides 

How to Use Ruby Conversion Methods

If you would like to use string methods (like gsub) but you’re working with an integer… What can you do? Use a conversion method! For example: You can convert the Integer 1 to the String “1”. Then you can use methods from the converted class, which helps you do something that wasn’t possible before. In […]

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

Passenger - Phusion Blog 

Dropping RHEL6, Debian 7 and Ruby 1.8 support?

Dropping RHEL6, Debian 7 and Ruby 1.8 support?

We are considering dropping support in Passenger for RHEL/CentOS 6, Debian 7 and Ruby 1.8. These distributions are very old, so it's getting increasingly hard to maintain support for these. They also slow down our development process and thus slow down future improvements.

By dropping support for old operating systems, we'll be able to use C++11, which should simplify our codebase. By dropping Ruby 1.8, we'll be able to upgrade the gems we use during development and testing, and we'll be able to remove various compatibility code.

Since 2014, Ruby 1.8(.7) no longer receives security patches. We recommend everyone to inspect their systems and to upgrade. Besides 1.8, other older Ruby versions…

Passenger - Phusion Blog 

Migrating Passenger from C++ to Go?

Migrating Passenger from C++ to Go?

Passenger is mostly written in C++. The main reasons were: Apache and Nginx integration (via modules), ease of installation for users (users commonly have a C/C++ compiler installed), and performance. Back when Passenger was first created, C and C++ were the only viable options that satisfy these purposes.

But the programming language ecosystem has changed a lot since then. Comparatively, C++ is limiting our development velocity. That's why we've been pondering slowly migrating Passenger to an alternative language.

This article describes:

  • What the problems are with C++ that makes us consider a migration.
  • What requirements alternatives must satisfy.
  • How a migration path would look like.
  • Wha…

Let us hear from you!

What do you think about the user implications? Read the last section and…

Hi, we're Arkency 

3 ways to make your ruby object thread-safe

Let’s say you have an object and you know or suspect it might be used (called) from many threads. What can you do to make it safe to use in such a way?

1. Make it stateless & frozen

Here is the most basic approach which is sometimes the easiest to go with and also very safe. Make your object state-less. In other words, forbid an object from having any long-term internal state. That means, use only local variables and no instance variables (@ivars).

To be sure that you are not accidentally adding state, you can freeze the object. That way it’s going to raise an exception if you ever try to refactor it.

class MyCommandHandler
  def initialize
    make_threadsafe_by_stateless
  end

  def c…
All Ruby Podcasts by Devchat.tv 

RR 380: "Deploying Ruby on Rails application using HAProxy Ingress with unicorn/puma and websockets‌" with Rahul Mahale

Panel:

  • Charles Max Wood
  • Dave Kimura
  • Eric Berry

Special Guests: Rahul Mahale

In this episode of Ruby Rogues, the panel talks to Rahul Mahale. Rahul is a Senior DevOps Engineer at BigBinary in India. He has also worked with SecureDB Inc., Tiny Owl, Winjit Technologies among others. In addition, he attended the University of Pune. The panel and the guest talk about Kubernetes.

Show Topics:

1:25 – Swag.com for t-shirts and mugs, etc. for Ruby Rogues / DevChat.tv.

1:49 – Chuck: Why are you famous?

1:57 – Guest’s background.

4:35 – Chuck: Kubernetes – Anyone play with this?

4:49 – Panelist: Yes. Funny situation, I was working with Heroku. Heroku is very costly, but great.

The…

Ruby Together News 

Announcing Ruby Me

A paid mentorship program for early-career Ruby developers.

Ruby Together is extremely excited to announce a new program, designed by Coraline Ada Ehmke: Ruby Me.

The mission of the RubyMe program is to help early-career developers improve their skills and confidence by contributing to Ruby open source projects, by paying them to pair on open source software for 8 hours per month. Through this program we hope to give these developers the skills and experience that they need for continued growth and success in their careers.

Early-career developers (with a firm grasp of Ruby fundamentals) can apply for a spot in the three-month long program. If you’re a recent bootcamp grad, career…

OmbuLabs Blog 

Refactoring with Design Patterns - The Template Pattern

In our last article of the refactoring series we saw how design patterns can be used to make our Ruby code beautiful and clean. Design patterns are a powerful tool for any developer and a familiarity with them will lead to better code by forcing a consideration of SOLID principles.

Now let's talk about other pattern that when properly used can be very helpful: The Template Method.

The Template Method

The Template Method is described as "a behavioral design pattern that lets you define the skeleton of an algorithm and allow subclasses to redefine certain steps of the algorithm without changing its structure."

The goal is to separate code that changes from code that doesn't change,…

ruby – Bibliographic Wilderness 

Notes on study of shrine implementation

Developing software that is both simple and very flexible/composable is hard, especially in shared dependencies. Flexiblity and composability often lead to very abstract, hard to understand architecture. An architecture custom-fitted for particular use cases/domains has an easier time of remaining simple with few moving parts. I think this is a fundamental tension in software architecture.

shrine is a “File Attachment toolkit for Ruby applications”, developed with explicit goals of being more flexible than some of what came before. True to form, it’s internal architecture can be a bit confusing.

I want to work with shrine, and develop some new functionality based on it, related to…