Skip to content

Instantly share code, notes, and snippets.

Avatar

Lázaro Nixon lazaronixon

View GitHub Profile
@lazaronixon
lazaronixon / application_controller.rb
Last active April 11, 2023 18:02
Application controller and concerns
View application_controller.rb
class ApplicationController < ActionController::Base
include SetCurrentRequestDetails
include SetCurrentTimeZone
include Authenticate
include ForgeryProtection
include ErrorResponses
include SetSentryUser
@lazaronixon
lazaronixon / Gemfile
Last active April 3, 2023 18:33
Action deliver
View Gemfile
gem "abstract_notifier"
@lazaronixon
lazaronixon / settings.json
Last active February 2, 2023 05:32
VSCode as Atom
View settings.json
{
"workbench.startupEditor": "none",
"workbench.colorTheme": "Atom One Light",
"workbench.activityBar.visible": false,
"editor.minimap.enabled": false,
"editor.scrollBeyondLastLine": false,
"editor.guides.indentation": false,
"editor.fontSize": 14,
"editor.tabSize": 2,
"editor.renderControlCharacters": false,
View touch_delegator_parent_bug.rb
# frozen_string_literal: true
require "bundler/inline"
gemfile(true) do
source "https://rubygems.org"
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
# Activate the gem you are reporting the issue against.
@lazaronixon
lazaronixon / callbacks.rb
Created May 18, 2022 00:33
Elastic search index async
View callbacks.rb
module ElasticsearchExtension
module Callbacks
extend ActiveSupport::Concern
included do
after_commit -> { IndexJob.perform_later(:create, self.class.name, self.id) }, on: :create
after_commit -> { IndexJob.perform_later(:update, self.class.name, self.id) }, on: :update
after_commit -> { IndexJob.perform_later(:destroy, self.class.name, self.id) }, on: :destroy
end
end
@lazaronixon
lazaronixon / Gemfile.rb
Last active May 17, 2022 04:57
Elasticsearch integrated with geared pagination
View Gemfile.rb
# Search
gem "elasticsearch-model", "~> 7.1.0"
gem "elasticsearch-rails", "~> 7.1.0"
gem "geared_pagination"
@lazaronixon
lazaronixon / rubocop.yml
Last active October 21, 2022 17:49
Basecamp Rubocop Template
View rubocop.yml
# This template is inspired on https://github.com/basecamp/audits1984/blob/master/.rubocop.yml
#
# 1 - Add dependencies to group :development, :test
# gem "rubocop", "~> 1.26", require: false
# gem "rubocop-performance", require: false
# gem "rubocop-rails", require: false
#
# 2 - Create a file .rubocop.yml and add the lines below
# inherit_from: https://gist.githubusercontent.com/lazaronixon/7815d84702f277ead5e89c9f2aa5581f/raw/rubocop.yml
#
@lazaronixon
lazaronixon / create_password_resets_locks.rb
Last active February 28, 2022 06:10
Password reset locking database
View create_password_resets_locks.rb
class CreatePasswordResetLocks < ActiveRecord::Migration[7.0]
def change
create_table :password_reset_locks do |t|
t.string :ip_address, null: false
t.integer :attempts, null: false, default: 0
t.datetime :locked_at
end
add_index :password_reset_locks, :ip_address, unique: true
@lazaronixon
lazaronixon / dropzone_controller.js
Last active May 26, 2023 06:12
Dropzone.js + Stimulus + Active Storage
View dropzone_controller.js
import { Controller } from "stimulus"
import { DirectUpload } from "@rails/activestorage"
import Dropzone from "dropzone"
import { getMetaValue, findElement, removeElement, insertAfter } from "helpers"
Dropzone.autoDiscover = false
export default class extends Controller {
static targets = [ "input" ]
@lazaronixon
lazaronixon / WebSecurityFilter.java
Last active June 19, 2019 00:02
SpringBoot Simple Secure API
View WebSecurityFilter.java
import java.io.IOException;
import java.util.Objects;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;