module Spokes::Versioning::MinorVersioning

Minor versioning mix-in for controllers.

Usage:

# app/controllers/my_controller.rb
class MyController
  include MinorVersioning

  def index
    logger.info(minor_version)
  end
end

Constants

API_VERSION

Public Instance Methods

minor_version() click to toggle source
# File lib/spokes/versioning/minor_versioning.rb, line 35
def minor_version
  @minor_version ||= begin
                       chosen_version = request.headers[API_VERSION]
                       return chosen_version if valid_minor_version?(chosen_version)
                       default_minor_version
                     end
end
set_minor_version_response_header() click to toggle source
# File lib/spokes/versioning/minor_versioning.rb, line 31
def set_minor_version_response_header
  response.headers[API_VERSION] = minor_version
end

Private Instance Methods

all_minor_versions() click to toggle source
# File lib/spokes/versioning/minor_versioning.rb, line 64
def all_minor_versions
  has_versions = Rails.application.config.respond_to?(:minor_versions)
  raise('config/minor_versions.yml doesn\'t exist.') unless has_versions
  Rails.application.config.minor_versions
end
default_minor_version() click to toggle source
# File lib/spokes/versioning/minor_versioning.rb, line 45
def default_minor_version
  @default_minor_version ||= begin
                               default = find_default_version
                               raise('No version marked as default in the configuration.') if default.nil?
                               default
                             end
end
find_default_version() click to toggle source
# File lib/spokes/versioning/minor_versioning.rb, line 53
def find_default_version
  all_minor_versions.each do |version, info|
    return version if info[:default]
  end
  nil
end
valid_minor_version?(version) click to toggle source
# File lib/spokes/versioning/minor_versioning.rb, line 60
def valid_minor_version?(version)
  version.present? && all_minor_versions.keys.include?(version)
end