jacopo beschi: yet another web guy

Posts Archive

Different caching strategies for Rails.cache and ActionController::Caching

Created at: Jun/19/2017 jacopo beschi

If you need to use different caching strategies for your Rails.cache and your ActionController::Cache (used for fragment caching) just put the following in your config/environments/env.rb file:

config.action_controller.perform_caching = true # this is used for your Fragment cache config.action_controller.cache_store = :file_store, 'action_controller_tore_path' # this is used for Rails.cache config.cache_store = :file_store, 'cache_store_path'

Read on

Thinner Rails Model with the Finder Pattern

Created at: Mar/20/2017 jacopo beschi

Hello everybody, today I want to share with you a pattern learned from gitlab: the finder pattern.

Most of the time when you want to find an item based on a set of different conditions you do something like this:

class Project
    def issues_for_user_filtered_by(user, filter)
        # A lot of logic not related to project model itself
    end
end

By doing that you end up having a lot of methods that does not really belong to the Model logic. A better solution is through the finder pattern:

issues = IssuesFinder.new(project, user, filter).execute

What the finder does is to accept a set of parameters and return an ActiveRecord::Associations::CollectionProxy that you can use for further filtering/mapping operations.

You can find a complete example of a finder following this link

Read on

Javascript multiple inheritance with ES5 and AngularJs

Created at: Mar/31/2016 jacopo beschi

In this article I'll show you how you can use multiple inheritance(trait) with Javascript EcmaScript 5 and AngularJS 1.0. AngularJS offer you a method: angular.extend that allow you to extend any object with the values and methods of other objects. In this article I show you how you can create a Dog. Dog is an animal but is also a mammal, for this reason a Dog needs to extend animal and also Mammal classes. Below is the code to create a Dog:

Read on

JSON API error handling with ruby

Created at: Mar/29/2016 jacopo beschi

Hello folks, after being inactive for a while I am finally back!
This post is about a technique that I found useful for general error handling with REST API and ruby on rails, but the concept works for any programming language/framework. Most of the time programmers handles api errors without a general pattern, that's bad because it's obvious that is more error prone, by using a general pattern you can also do some interestic automatic operations such as error logging and messaging to a monitoring service.

Read on

Solve problems gracefully with dynamic method generation in ruby

Created at: Aug/20/2015 jacopo beschi

Days ago i was writing an Rspec macro to gracefully handle authenticated api via a token. At the start i begun creating a couple of methods, each for every Rest verb: module RequestMacros def get_authorized(uri, user) get uri, nil, {'X-Api-Token' => user.api_token} end

  def post_authorized(uri, data, user, headers = {})
    post uri, data, headers.merge({'X-Api-Token' => user.api_token})
  end
Read on