Project

General

Profile

« Previous | Next » 

Revision 6ce2ab70

Added by Ivan Necas over 11 years ago

  • ID 6ce2ab7004feb02a5526b6c743937c92f764c90f

Using Apipie versioning features and Maruku for markdown

Apipie switched from Redcarpet to Maruku to avoid crashes of the C
Extension. No further need of compiling anything to get markdown support.

View differences:

Gemfile
gem "safemode", "~> 1.1.0"
gem 'ruby_parser', '~> 3.0.0'
gem 'uuidtools'
gem "apipie-rails", "= 0.0.13"
gem "apipie-rails", '0.0.16'
gem 'rabl', '>= 0.7.5'
gem 'oauth'
app/controllers/api/v1/base_controller.rb
module V1
class BaseController < Api::BaseController
include Api::Version1
resource_description do
api_version "v1"
api_version "v2"
end
end
end
end
app/controllers/api/v2/base_controller.rb
module V2
class BaseController < Api::BaseController
include Api::Version2
resource_description do
resource_id "v2_base" # to avoid conflicts with V1::BaseController
api_version "v2"
end
end
end
end
app/views/api/v1/home/index.json.rabl
child(:links => "links") do
# gather index methods of resources
index_method_description_apis = Apipie.app.resource_descriptions.map do |name, resource_description|
if (description = Apipie.method_descriptions["#{name}#index"])
description.apis.first
index_method_description_apis = Apipie.app.resource_descriptions[Apipie.configuration.default_version].map do |name, resource_description|
if (description = Apipie.app["#{name}#index"])
description.method_apis_to_json.first
end
end.compact
# add additional actions
%w(home#status).each do |additional_action|
if (description = Apipie.app.method_descriptions[additional_action]) and
(api = description.apis.first)
if (description = Apipie.app[additional_action]) and
(api = description.method_apis_to_json.first)
index_method_description_apis << api
end
end
# render links
index_method_description_apis.each do |api|
url, description = api.api_url, api.short_description
url, description = api[:api_url], api[:short_description]
node(description.chomp(".")) { url }
end
end
bundler.d/development.rb
# To use debugger
gem "ruby-debug", :platforms => :ruby_18
gem "ruby-debug19", :platforms => :ruby_19
gem 'redcarpet', '<= 2.1.0'
gem 'maruku'
gem 'single_test'
gem 'pry'
gem "term-ansicolor"
config/initializers/apipie.rb
config.app_info = "The Foreman is aimed to be a single address for all machines life cycle management."
config.copyright = ""
config.api_base_url = "/api"
config.api_controllers_matcher = "#{Rails.root}/app/controllers/api/v1/*.rb"
config.api_controllers_matcher = "#{Rails.root}/app/controllers/api/**/*.rb"
config.ignored_by_recorder = %w[]
config.doc_base_url = "/apidoc"
config.use_cache = Rails.env.production?
config.validate = false
config.force_dsl = true
config.reload_controllers = Rails.env.development?
config.markup = Apipie::Markup::Markdown.new if Rails.env.development? and defined? Redcarpet
config.markup = Apipie::Markup::Markdown.new if Rails.env.development? and defined? Maruku
config.default_version = "v1"
end
# special type of validator: we say that it's not specified

Also available in: Unified diff