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 / .rubocop.yml
Created August 2, 2017 18:10
Prevent RuboCop from checking the use of quotes
inherit_from: ../.rubocop.yml
# Checks if uses of quotes match the configured preference.
Style/StringLiterals:
Enabled: false
@lujanfernaud
lujanfernaud / testing_image_attachments_in_rails.md
Last active February 22, 2018 07:25
Testing image attachments or uploads in Rails

Testing Image Attachments/Uploads in Rails

Model

We need to use File.open(Rails.root.join("<image_path>")).

File.open(Rails.root.join("test/fixtures/files/sample.jpeg"))
@lujanfernaud
lujanfernaud / rails_pundit_custom_redirection_when_not_authorized.md
Last active April 30, 2018 17:56
Rails and Pundit: Custom Redirection When Not Authorized

Rails and Pundit: Custom Redirection When Not Authorized

To use a custom redirection when a resource is not authorized we only need to add an user_not_authorized method to the controller, and define the redirection.

Example:

class Groups::MembershipRequestsController < ApplicationController
  def new
 @membership_request = MembershipRequest.new
@lujanfernaud
lujanfernaud / running_rails5_in_production_locally.md
Last active May 24, 2018 10:50
Running a Rails 5 App in Production Locally

Running a Rails 5 App in Production Locally

This is what we need to do:

export RAILS_ENV=production
rake db:reset
rake assets:precompile
RAILS_SERVE_STATIC_FILES=true
SECRET_KEY_BASE=production rails s
@lujanfernaud
lujanfernaud / rails_migrations.md
Last active June 19, 2018 07:06
Rails: Migrations

Rails: Migrations

Add reference:

# add_reference :table, :column_name, foreign_key: boolean
add_reference :bookings, :flight, foreign_key: true

Add index:

@lujanfernaud
lujanfernaud / rails_random_date_in_period.md
Last active June 19, 2018 16:55
Rails: Random Date in Period

Rails: Random Date in Period

def random_date_in_period(period)
  rand(period).seconds.ago
end

random_date_in_period 1.year #=> Tue, 22 May 2018 04:55:54 UTC +00:00
random_date_in_period 1.year #=> Mon, 06 Nov 2017 19:50:07 UTC +00:00
@lujanfernaud
lujanfernaud / rails_order_by_priority_and_date_with_limit_for_category.md
Created June 20, 2018 07:15
Rails: Order by Priority and Date with Limit for Category

Rails: Order by Priority and Date with Limit for Category

# group.rb

# When we pass NULL to LIMIT, Postgres treats it as LIMIT ALL (no limit).
# https://www.postgresql.org/docs/current/static/sql-select.html#SQL-LIMIT
def topics_prioritized(normal_topics_limit: nil)
  ids = topic_ids(normal_topics_limit)
@lujanfernaud
lujanfernaud / rails_update_comments_count_for_all_topics_in_a_group.md
Created July 17, 2018 07:44
Rails: Update Comments Count for All Topics in a Group

Rails: Update Comments Count for All Topics in a Group

def update_topics_comments_count
  begin
    ActiveRecord::Base.connection.execute <<~SQL
      UPDATE topics
         SET comments_count = (SELECT count(1)
                                 FROM topic_comments
 WHERE topic_comments.topic_id = topics.id
@lujanfernaud
lujanfernaud / rails_default_timestamp_for_datetime_column.md
Created July 23, 2018 07:49
Rails: Setting a Default Timestamp for a Datetime Column

Rails: Setting a Default Timestamp for a Datetime Column

In Rails 5 we can set a default timestamp for a datetime column using a lambda with 'CURRENT_TIMESTAMP'.

default: -> { 'CURRENT_TIMESTAMP' }

Creating a table:

@lujanfernaud
lujanfernaud / rails_simple_decorator.rb
Created July 26, 2018 08:55
Rails: Simple Decorator
# frozen_string_literal: true
class ObjectNameDecorator < SimpleDelegator
delegate :class, :is_a?, to: :__getobj__
def self.collection(objects)
objects.map { |group| ObjectNameDecorator.new(object) }
end
private