Skip to content

Commit

Permalink
Fixes #4478 - API documentation localized
Browse files Browse the repository at this point in the history
  • Loading branch information
mbacovsky committed Nov 5, 2014
1 parent 4717733 commit 9920782
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 0 deletions.
18 changes: 18 additions & 0 deletions app/services/foreman/plugin.rb
Original file line number Diff line number Diff line change
Expand Up @@ -236,5 +236,23 @@ def search_path_override(engine_name, &blk)
Rails.logger.warn "Ignoring override of FiltersHelper#search_path_override for '#{engine_name}': no override block is present"
end
end

# list of API controller paths, globs allowed
def apipie_documented_controllers(controllers = nil)
if controllers
@apipie_documented_controllers = controllers
Apipie.configuration.api_controllers_matcher.concat(controllers)
end
@apipie_documented_controllers
end

# list of clontroller classnames that are ignored by apipie
def apipie_ignored_controllers(controllers = nil)
if controllers
@apipie_ignored_controllers = controllers
Apipie.configuration.ignored.concat(controllers)
end
@apipie_ignored_controllers
end
end
end
File renamed without changes.
20 changes: 20 additions & 0 deletions config/initializers/apipie.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,26 @@
config.ignored_by_recorder = %w[]
config.doc_base_url = "/apidoc"
config.use_cache = Rails.env.production? || File.directory?(config.cache_dir)
# config.languages = [] # turn off localized API docs and CLI, useful for development
config.languages = FastGettext.available_locales # generate API docs for all available locales
config.default_locale = FastGettext.default_locale
config.locale = lambda { |loc| loc ? FastGettext.set_locale(loc) : FastGettext.locale }

substitutions = {
'operatingsystem_families' => Operatingsystem.families.join(", "),
'providers' => ComputeResource.providers.join(', ')
}

config.translate = lambda do |str, loc|
old_loc = FastGettext.locale
FastGettext.set_locale(loc)
if str
trans = _(str)
trans = trans % substitutions
end
FastGettext.set_locale(old_loc)
trans
end
config.validate = false
config.force_dsl = true
config.reload_controllers = Rails.env.development?
Expand Down
24 changes: 24 additions & 0 deletions lib/tasks/plugin_apipie.rake
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
desc 'Generate apipie:cache for plugin - called via rake plugin:apipie:cache[plugin_name]'
task 'plugin:apipie:cache', :engine do |t, args|

if args[:engine]
# Partially load the Rails environment to avoid
# the need of a database being setup
Rails.application.initialize!

path_name = args[:engine].gsub('-', '_')
@engine = "#{path_name.camelize}::Engine".constantize
@engine_root = @engine.root

plugin = Foreman::Plugin.find(args[:engine])

Apipie.configuration.ignored = plugin.apipie_ignored_controllers || []
api_controllers = plugin.apipie_documented_controllers || ["#{@engine_root}/app/controllers/#{path_name}/api/*.rb"]
Apipie.configuration.api_controllers_matcher = api_controllers

Rake::Task['apipie:cache'].execute
else
puts "You must specify the name of the plugin (e.g. rake plugin:apipie:cache['my_plugin'])"
end

end

0 comments on commit 9920782

Please sign in to comment.