Module: Hobo

Defined in:
lib/hobo.rb,
lib/hobo/model.rb,
lib/hobo/engine.rb,
lib/hobo/routes.rb,
lib/hobo/undefined.rb,
lib/hobo/controller.rb,
lib/hobo/model/guest.rb,
lib/hobo/model/scopes.rb,
lib/hobo/rapid/helper.rb,
lib/hobo/model/find_for.rb,
lib/hobo/model/user_base.rb,
lib/hobo/controller/cache.rb,
lib/hobo/controller/model.rb,
lib/hobo/model/lifecycles.rb,
lib/hobo/model/view_hints.rb,
lib/hobo/model/permissions.rb,
lib/hobo/controller/user_base.rb,
lib/hobo/model/include_in_save.rb,
lib/hobo/model/lifecycles/state.rb,
lib/hobo/model/lifecycles/actions.rb,
lib/hobo/model/lifecycles/creator.rb,
lib/hobo/model/scopes/apply_scopes.rb,
lib/hobo/model/lifecycles/lifecycle.rb,
lib/hobo/model/lifecycles/transition.rb,
lib/hobo/model/accessible_associations.rb,
lib/hobo/model/scopes/automatic_scopes.rb,
lib/generators/hobo/i18n/i18n_generator.rb,
lib/hobo/extensions/action_mailer/helper.rb,
lib/generators/hobo/model/model_generator.rb,
lib/hobo/controller/authentication_support.rb,
lib/generators/hobo/assets/assets_generator.rb,
lib/generators/hobo/routes/routes_generator.rb,
lib/generators/hobo/subsite/subsite_generator.rb,
lib/generators/hobo/resource/resource_generator.rb,
lib/generators/hobo/controller/controller_generator.rb,
lib/generators/hobo/user_model/user_model_generator.rb,
lib/generators/hobo/user_mailer/user_mailer_generator.rb,
lib/generators/hobo/setup_wizard/setup_wizard_generator.rb,
lib/generators/hobo/admin_subsite/admin_subsite_generator.rb,
lib/generators/hobo/user_resource/user_resource_generator.rb,
lib/generators/hobo/install_plugin/install_plugin_generator.rb,
lib/generators/hobo/subsite_taglib/subsite_taglib_generator.rb,
lib/generators/hobo/user_controller/user_controller_generator.rb,
lib/generators/hobo/front_controller/front_controller_generator.rb,
lib/generators/hobo/install_default_plugins/install_default_plugins_generator.rb

Defined Under Namespace

Modules: Controller, MailerHelper, Model, Rapid, Routes Classes: AdminSubsiteGenerator, AssetsGenerator, Boolean, ControllerGenerator, Engine, Error, FrontControllerGenerator, I18nError, I18nGenerator, InstallDefaultPluginsGenerator, InstallPluginGenerator, ModelGenerator, PermissionDeniedError, RawJs, ResourceGenerator, RoutesGenerator, SetupWizardGenerator, SubsiteGenerator, SubsiteTaglibGenerator, Undefined, UndefinedAccessError, UserControllerGenerator, UserMailerGenerator, UserModelGenerator, UserResourceGenerator

Constant Summary collapse

VERSION =
File.read(File.expand_path('../../VERSION', __FILE__)).strip
@@root =
Pathname.new File.expand_path('../..', __FILE__)

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.enginesObject

Returns the value of attribute engines.



32
33
34
# File 'lib/hobo.rb', line 32

def engines
  @engines
end

.stable_cacheObject

Returns the value of attribute stable_cache.



32
33
34
# File 'lib/hobo.rb', line 32

def stable_cache
  @stable_cache
end

Class Method Details

.find_by_search(query, search_targets = []) ⇒ Object



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

def find_by_search(query, search_targets=[])
  if search_targets.empty?
   search_targets = Hobo::Model.all_models.select {|m| m.search_columns.any? }
  end

  query_words = ActiveRecord::Base.connection.quote_string(query).split

  search_targets.build_hash do |search_target|
    conditions = []
    parameters = []
    like_operator = ActiveRecord::Base.connection.adapter_name =~ /postg/i ? 'ILIKE' : 'LIKE'
    query_words.each do |word|
      column_queries = search_target.search_columns.map { |column| column == "id" ? "CAST(#{column} AS varchar) #{like_operator} ?" : "#{column} #{like_operator} ?" }
      conditions << "(" + column_queries.join(" or ") + ")"
      parameters.concat(["%#{word}%"] * column_queries.length)
    end
    conditions = conditions.join(" and ")

    results = search_target.where(conditions, *parameters)
    [search_target.name, results] unless results.empty?
  end
end

.raw_js(s) ⇒ Object



34
35
36
# File 'lib/hobo.rb', line 34

def raw_js(s)
  RawJs.new(s)
end

.rootObject



19
# File 'lib/hobo.rb', line 19

def self.root; @@root; end

.simple_has_many_association?(array_or_reflection) ⇒ Boolean

Returns:



61
62
63
64
65
66
67
# File 'lib/hobo.rb', line 61

def simple_has_many_association?(array_or_reflection)
  refl = array_or_reflection.respond_to?(:proxy_association) ? array_or_reflection.proxy_association.reflection : array_or_reflection
  return false unless refl.is_a?(ActiveRecord::Reflection::AssociationReflection)
  refl.macro == :has_many and
    (not refl.through_reflection) and
    (not refl.options[:conditions])
end

.subsitesObject



69
70
71
72
73
74
75
76
77
# File 'lib/hobo.rb', line 69

def subsites
  # Any directory inside app/controllers defines a subsite
  app_dirs = ["#{Rails.root}/app"] + Hobo.engines.map { |e| "#{e}/app" }
  @subsites ||= app_dirs.map do |app|
                  Dir["#{app}/controllers/*"].map do |f|
                    File.basename(f) if File.directory?(f)
                  end.compact
                end.flatten
end