Skip to content

Instantly share code, notes, and snippets.

class SomeClass
# ...
def execute
api_client.get(id)
rescue StandardError => e
@retries = @retries + 1
retries > RETRY_LIMIT ? raise(e) : retry
end
class WeatherUpdateJob
include Sidekiq::Worker
sidekiq_options retry: 3
def perform
Weather.new(data: BestWeatherAPI.get)
Weather.save!
end
end
module Aws::S3
module Errors
extend Aws::Errors::DynamicErrors
class BucketAlreadyExists < ServiceError
def initialize(context, message, data = Aws::EmptyStructure.new)
super(context, message, data)
end
end
class BucketAlreadyOwnedByYou < ServiceError
def get
Retriable.retriable do
# code here...
end
rescue StandardError => e
logger.error 'failed_request', error: e
end
# Will retry all exceptions
Retriable.with_context(:aws) do
# aws_call
end
# Will retry Mysql::DeadlockException
Retriable.with_context(:mysql) do
# write_to_table
end
Retriable.configure do |c|
c.contexts[:aws] = {
tries: 3,
on: [Aws::Errors::ServiceError, Errno::ECONNRESET]
}
c.contexts[:mysql] = {
tries: 10,
on: Mysql::DeadlockException
}
end
require 'retriable'
class Api
# Use it in methods that interact with unreliable services
def get
Retriable.retriable do
# code here...
end
end
end
class SomeClass
attr_reader :id, :retries
ApiError = Class.new(StandardError)
RETRY_LIMIT = 3
def initialize(id)
@id = id
@retries = 0
@kirillshevch
kirillshevch / rails_new_options_help.md
Last active April 8, 2024 15:24
List of "rails new" options to generate a new Rails 7 application

Run rails new --help to see all of the options you can use to create a new Rails application:

Output for Rails 7+

Usage:
  rails new APP_PATH [options]

Options:
      [--skip-namespace], [--no-skip-namespace]              # Skip namespace (affects only isolated engines)
class Integer
def times_method
(0...self).each do |i|
yield(i)
end
return self
end
end