Class: Quickstart

Inherits:
RestApi::Base show all
Includes:
RestApi::Cacheable
Defined in:
app/models/quickstart.rb

Constant Summary collapse

Disabled =
Class.new(StandardError)
SearchDisabled =
Class.new(StandardError)
NON_SCALABLE =

This is a short-term fix for BZ877849 The drupal quickstart nodes need to be augmented with a flag to indicate whether or not they can be scaled.

Regexp.new(['wordpress','drupal','spring','capedwarf','javaee'].join('|'),true)

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from RestApi::Base

alias_attribute, aliased_attributes, allow_anonymous?, #as, #as=, #assign_attributes, attr_alters, #attributes=, calculated_attributes, #clone, configuration=, connection, custom_id, delete, #dup, #duplicate_errors, exception_for_code, find, find_one, #get, get, #has_exit_code?, headers, #initialize, #load, #load_remote_errors, on_exit_code, #raise_on_invalid, #reload, remote_errors_for, #remote_results, #save!, #save_with_change_tracking, shared_connection, singleton?, #to_json, translate_api_error, use_patch_on_update?, #valid?

Methods included from ActiveResource::Associations

#belongs_to, #has_many, #has_one

Constructor Details

This class inherits a constructor from RestApi::Base

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class RestApi::Base

Class Method Details

.disabled?Boolean

Returns:

  • (Boolean)


86
87
88
# File 'app/models/quickstart.rb', line 86

def disabled?
  !api_links[:list] rescue true
end

.prefix_parametersObject



93
94
95
# File 'app/models/quickstart.rb', line 93

def prefix_parameters
  {}
end


64
65
66
67
68
# File 'app/models/quickstart.rb', line 64

def promoted(opts={})
  all({:from => (api_links[:list] or raise Disabled)}.merge(opts))
rescue Disabled
  []
end

.reset!Object



97
98
99
# File 'app/models/quickstart.rb', line 97

def reset!
  @api_links = nil
end

.search(terms, opts = {}) ⇒ Object



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'app/models/quickstart.rb', line 70

def search(terms, opts={})
  all(opts.merge(
    :from => (api_links[:search] or raise SearchDisabled),
    :params => {
      (api_links[:search_param] or raise SearchDisabled) => terms
    }
  ))
rescue SearchDisabled
  terms.downcase!
  promoted(opts).select do |q|
    q.description.downcase.include?(terms) or
      q.display_name.downcase.include?(terms) or
      (q.tags.include?(terms.to_sym) rescue false)
  end
end

.siteObject



90
91
92
# File 'app/models/quickstart.rb', line 90

def site
  api_links[:site] or RestApi::Info.site
end

Instance Method Details

#>>(application) ⇒ Object



55
56
57
58
59
# File 'app/models/quickstart.rb', line 55

def >>(application)
  #application.cartridges = cartridges
  application.initial_git_url = initial_git_url
  application
end

#cartridges_specObject



40
41
42
# File 'app/models/quickstart.rb', line 40

def cartridges_spec
  entity_decoded(attributes[:cartridges])
end

#learn_more_urlObject



28
29
30
# File 'app/models/quickstart.rb', line 28

def learn_more_url
  URI.join(self.class.site, href).to_s if href
end

#nameObject



20
21
22
# File 'app/models/quickstart.rb', line 20

def name
  entity_decoded(super)
end

#priorityObject



24
25
26
# File 'app/models/quickstart.rb', line 24

def priority
  super.to_i rescue 0
end

#scalableObject Also known as: scalable?



48
49
50
51
52
# File 'app/models/quickstart.rb', line 48

def scalable
  retval = !self.name.match(NON_SCALABLE)
ensure
  Rails.logger.debug("Handling #{self.name} quickstart as non-scalable") unless retval
end

#tagsObject



32
33
34
# File 'app/models/quickstart.rb', line 32

def tags
  @tags ||= ApplicationType.user_tags(tags_from(attributes[:tags])) + admin_tags + (3.days.ago < updated ? [:new] : [])
end

#updatedObject



36
37
38
# File 'app/models/quickstart.rb', line 36

def updated
  @updated ||= Time.at(attributes[:updated].to_i)
end