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