Class: Search

Inherits:
Application show all
Defined in:
app/controllers/search.rb

Instance Method Summary collapse

Methods inherited from Application

#access_denied, #append_tree, #bad_request?, #binary?, #build_tree, #can_edit_admin?, #cleanup_session, #conflict?, #convert_newline_to_br, #determine_name, #forbidden?, #format_exception, #is_admin?, #is_last_admin?, #list_available_recipes_for, #load_cookbook_segment, #load_environments, #load_session_user, #login_required, #logout_and_redirect_to_login, #not_found?, #redirect_back_or_default, #require_admin, #segment_files, #show_plain_file, #store_location, #str_to_bool, #syntax_highlight

Instance Method Details

#indexObject



26
27
28
29
30
31
32
33
34
35
36
# File 'app/controllers/search.rb', line 26

def index
  @s = Chef::Search::Query.new
  @search_indexes = begin
                      @s.list_indexes
                    rescue => e
                      Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
                      @_message = {:error => "Could not list search indexes"}
                      {}
                    end
  render
end

#showObject



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'app/controllers/search.rb', line 38

def show
  begin
    @s = Chef::Search::Query.new
    query = (params[:q].nil? || params[:q].empty?) ? "*:*" : URI.escape(params[:q], Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
    @results = @s.search(params[:id], query)
    @type = if params[:id].to_s == "node" || params[:id].to_s == "role" || params[:id].to_s == "client" || params[:id].to_s == "environment"
              params[:id]
            else
              "databag"
            end
    @results = @results - @results.last(2)
    @results.each do |result|
      result.delete(nil)
    end
    @results
    render
  rescue => e
    Chef::Log.error("#{e}\n#{e.backtrace.join("\n")}")
    @_message = { :error => "Unable to find the #{params[:id]}. (#{$!})" }
    @search_indexes = @s.list_indexes
    render :index
  end
end