Class: Middleman::Application

Inherits:
Object
  • Object
show all
Includes:
Hooks, Hooks::InstanceHooks, Configuration::Global, CoreExtensions::Extensions, CoreExtensions::Routing
Defined in:
lib/middleman-core/application.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from CoreExtensions::Routing

#page, #with_layout

Methods included from Configuration::Global

#config, #method_missing, #respond_to?, #set

Constructor Details

#initialize(&block) ⇒ Application

Initialize the Middleman project



196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
# File 'lib/middleman-core/application.rb', line 196

def initialize(&block)
  # Clear the static class cache
  cache.clear

  # Setup the default values from calls to set before initialization
  self.class.config.load_settings(self.class.superclass.config.all_settings)

  if Object.const_defined?(:Encoding)
    Encoding.default_internal = config[:encoding]
    Encoding.default_external = config[:encoding]
  end

  # Evaluate a passed block if given
  instance_exec(&block) if block_given?

  config[:source] = ENV['MM_SOURCE'] if ENV['MM_SOURCE']

  super
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Middleman::Configuration::Global

Class Method Details

.helpers(*extensions, &block)

This method returns an undefined value.

Mix-in helper methods. Accepts either a list of Modules and/or a block to be evaluated



50
51
52
53
# File 'lib/middleman-core/application.rb', line 50

def self.helpers(*extensions, &block)
  class_eval(&block)   if block_given?
  include(*extensions) if extensions.any?
end

.rootString

Root project directory (overwritten in middleman build/server)

Returns:

  • (String)


58
59
60
61
62
# File 'lib/middleman-core/application.rb', line 58

def self.root
  r = ENV['MM_ROOT'] ? ENV['MM_ROOT'].dup : ::Middleman::Util.current_directory
  r.encode!('UTF-8', 'UTF-8-MAC') if RUBY_PLATFORM =~ /darwin/
  r
end

.root_pathObject

Pathname-addressed root



66
67
68
# File 'lib/middleman-core/application.rb', line 66

def self.root_path
  Pathname(root)
end

Instance Method Details

#_hooksObject

Hooks clones _hooks from the class to the instance. github.com/apotonick/hooks/blob/master/lib/hooks/instance_hooks.rb#L10 Middleman expects the same list of hooks for class and instance hooks:



258
259
260
# File 'lib/middleman-core/application.rb', line 258

def _hooks
  self.class._hooks
end

#bind_addressNilClass, String

Which bind address the preview server should use

Returns:

  • (NilClass, String)


81
# File 'lib/middleman-core/application.rb', line 81

config.define_setting :bind_address, nil, 'The bind address of the preview server'

#build?Boolean

Whether we’re in build mode

Returns:

  • (Boolean)

    If we’re in build mode



233
234
235
# File 'lib/middleman-core/application.rb', line 233

def build?
  config[:environment] == :build
end

#build_dirString

Where to build output files

Returns:

  • (String)


141
# File 'lib/middleman-core/application.rb', line 141

config.define_setting :build_dir,   'build', 'Where to build output files'

#css_dirString

Location of stylesheets within source. Used by Compass.

Returns:

  • (String)


121
# File 'lib/middleman-core/application.rb', line 121

config.define_setting :css_dir,     'stylesheets', 'Location of stylesheets within source'

#development?Boolean

Whether we’re in development mode

Returns:

  • (Boolean)

    If we’re in dev mode



227
228
229
# File 'lib/middleman-core/application.rb', line 227

def development?
  config[:environment] == :development
end

#encodingString

Default string encoding for templates and output.

Returns:

  • (String)


153
# File 'lib/middleman-core/application.rb', line 153

config.define_setting :encoding, 'utf-8', 'Default string encoding for templates and output'

#environmentString

Middleman environment. Defaults to :development, set to :build by the build process

Returns:

  • (String)


101
# File 'lib/middleman-core/application.rb', line 101

config.define_setting :environment, ((ENV['MM_ENV'] && ENV['MM_ENV'].to_sym) || :development), 'Middleman environment. Defaults to :development, set to :build by the build process'

#fonts_dirString

Location of fonts within source. Used by Compass.

Returns:

  • (String)


129
# File 'lib/middleman-core/application.rb', line 129

config.define_setting :fonts_dir,   'fonts', 'Location of fonts within source'

#http_prefixString

Default prefix for building paths. Used by HTML helpers and Compass.

Returns:

  • (String)


145
# File 'lib/middleman-core/application.rb', line 145

config.define_setting :http_prefix, '/', 'Default prefix for building paths'

#httpsBoolean

Whether to serve the preview server over HTTPS.

Returns:

  • (Boolean)


85
# File 'lib/middleman-core/application.rb', line 85

config.define_setting :https, false, 'Serve the preview server over SSL/TLS'

#images_dirString

Location of images within source. Used by HTML helpers and Compass.

Returns:

  • (String)


125
# File 'lib/middleman-core/application.rb', line 125

config.define_setting :images_dir,  'images', 'Location of images within source'

#index_fileString

Which file should be used for directory indexes

Returns:

  • (String)


105
# File 'lib/middleman-core/application.rb', line 105

config.define_setting :index_file,  'index.html', 'Which file should be used for directory indexes'

#js_dirString

Location of javascripts within source.

Returns:

  • (String)


117
# File 'lib/middleman-core/application.rb', line 117

config.define_setting :js_dir,      'javascripts', 'Location of javascripts within source'

#layoutString, Symbold

Default layout name

Returns:

  • (String, Symbold)


149
# File 'lib/middleman-core/application.rb', line 149

config.define_setting :layout, :_auto_layout, 'Default layout name'

#layouts_dirString

Location of layouts within source. Used by renderers.

Returns:

  • (String)


137
# File 'lib/middleman-core/application.rb', line 137

config.define_setting :layouts_dir, 'layouts', 'Location of layouts within source'

#loggerObject

Reference to Logger singleton



191
192
193
# File 'lib/middleman-core/application.rb', line 191

def logger
  ::Middleman::Logger.singleton
end

#partials_dirString

Location of partials within source. Used by renderers.

Returns:

  • (String)


133
# File 'lib/middleman-core/application.rb', line 133

config.define_setting :partials_dir,   '', 'Location of partials within source'

#portFixnum

Which port preview should start on.

Returns:

  • (Fixnum)


73
# File 'lib/middleman-core/application.rb', line 73

config.define_setting :port, 4567, 'The preview server port'

#protect_from_csrfBoolean

Should Padrino include CRSF tag

Returns:

  • (Boolean)


157
# File 'lib/middleman-core/application.rb', line 157

config.define_setting :protect_from_csrf, false, 'Should Padrino include CRSF tag'

#server_nameNilClass, String

Which server name should be used

Returns:

  • (NilClass, String)


77
# File 'lib/middleman-core/application.rb', line 77

config.define_setting :server_name, nil, 'The server name of preview server'

#sourceString

Name of the source directory

Returns:

  • (String)


97
# File 'lib/middleman-core/application.rb', line 97

config.define_setting :source,      'source', 'Name of the source directory'

#source_dirString

The full path to the source directory

Returns:

  • (String)


240
241
242
# File 'lib/middleman-core/application.rb', line 240

def source_dir
  File.join(root, config[:source])
end

#ssl_certificateString

The (optional) path to the SSL cert to use for the preview server.

Returns:

  • (String)


89
# File 'lib/middleman-core/application.rb', line 89

config.define_setting :ssl_certificate, nil, 'Path to an X.509 certificate to use for the preview server'

#ssl_private_keyString

The (optional) private key for the certificate in :ssl_certificate.

Returns:

  • (String)


93
# File 'lib/middleman-core/application.rb', line 93

config.define_setting :ssl_private_key, nil, "Path to an RSA private key for the preview server's certificate"

#strip_index_fileBoolean

Whether to strip the index file name off links to directory indexes

Returns:

  • (Boolean)


109
# File 'lib/middleman-core/application.rb', line 109

config.define_setting :strip_index_file, true, 'Whether to strip the index file name off links to directory indexes'

#to_sObject Also known as: inspect

Work around this bug: bugs.ruby-lang.org/issues/4521 where Ruby will call to_s/inspect while printing exception messages, which can take a long time (minutes at full CPU) if the object is huge or has cyclic references, like this.



250
251
252
# File 'lib/middleman-core/application.rb', line 250

def to_s
  "#<Middleman::Application:0x#{object_id}>"
end

#trailing_slashBoolean

Whether to include a trailing slash when stripping the index file

Returns:

  • (Boolean)


113
# File 'lib/middleman-core/application.rb', line 113

config.define_setting :trailing_slash, true, 'Whether to include a trailing slash when stripping the index file'