Skip to content

Instantly share code, notes, and snippets.

View lujanfernaud's full-sized avatar
🦪
Working from home

Luján Fernaud lujanfernaud

🦪
Working from home
View GitHub Profile
@lujanfernaud
lujanfernaud / rails_permitting_arrays_in_strong_parameters.md
Created May 5, 2021 07:01
Rails: Permitting Arrays in Strong Parameters

Rails: Permitting Arrays in Strong Parameters

We can do so by adding an array value to the param:

params.permit(:email, :name, sites: [])

We can even use nested arrays:

@lujanfernaud
lujanfernaud / rails_datetime_select_capybara.md
Last active April 20, 2021 00:39
Rails: Test datetime_select using Capybara

Rails: Test datetime_select using Capybara

# test_helper.rb

def select_date_and_time(date, **options)
  return nil unless date
  
 field = options[:from]
@lujanfernaud
lujanfernaud / ruby_require_all_files_within_a_directory.md
Created March 19, 2021 14:59
Ruby: Require All Files Within a Directory

Ruby: Require All Files Within a Directory

Dir[File.expand_path('../config/routes/*.rb', __dir__)].each do |file|
  require_relative file
end
@lujanfernaud
lujanfernaud / ruby_validate_url.md
Last active February 23, 2021 18:53
Ruby: Validate URL

Ruby: Validate URL

We can match against %r{^(http|https)://[a-z0-9]+([\-.]{1}[a-z0-9]+)*\.[a-z]{2,6}(:[0-9]{1,5})?(/.*)?$}ix.

Non Rails version:

  VALID_URL_REGEXP = %r{^(http|https)://[a-z0-9]+([\-.]{1}[a-z0-9]+)*\.[a-z]{2,6}(:[0-9]{1,5})?(/.*)?$}ix.freeze

 def valid_url?(url)
@lujanfernaud
lujanfernaud / ruby_validate_email.md
Created February 23, 2021 17:44
Ruby: Validate Email

Ruby: Validate Email

We can match against URI::MailTo::EMAIL_REGEXP.

  def valid_email?(email)
    email && email.match?(URI::MailTo::EMAIL_REGEXP)
  end
@lujanfernaud
lujanfernaud / rolify_remove_all_roles_for_user_in_resource.md
Last active November 29, 2020 16:14
Rolify: Remove all roles for user

Rolify: Remove All Roles For User In a Specific Resource

We find all roles assigned to the user in the resource, a group in this case.

@user.roles.where(resource: @group)
=> [#<Role:0x00000004a80580
 id: 24,
@lujanfernaud
lujanfernaud / log_interactor_execution.rb
Last active August 7, 2020 12:37
Debugging: LogInteractorExecution
# Usage:
#
# class SomeInteractor
# include Interactor
# include LogInteractorExecution
#
# # ...
#
# private
#
@lujanfernaud
lujanfernaud / sidekiq_clear_specific_queue.md
Created July 27, 2020 07:31
Sidekiq: Clear a Specific Queue

Sidekiq: Clear a Specific Queue

Find the queue by name:

> queue = Sidekiq::Queue.all.detect { |queue| queue.name == 'compliance_requests' }
=> #<Sidekiq::Queue:0x00007fa5c4069778 @name="compliance_requests", @rname="queue:compliance_requests">

Clear the queue:

@lujanfernaud
lujanfernaud / rspec_add_metadata_based_on_path.md
Created May 8, 2020 06:32
RSpec: Add metadata based on path

RSpec: Add metadata based on path

RSpec.configure do |config|
  config.define_derived_metadata(file_path: %r{platforms/.*/spec/controllers/}) do |metadata|
    metadata[:type] = :controller
    metadata[:platform_controller] = true
  end

 config.include MainAppRoutesHelper, platform_controller: true