Module: Tennpipes

Extended by:
Loader
Defined in:
lib/tennpipes-base/version.rb,
lib/tennpipes-base.rb,
lib/tennpipes-base/tasks.rb,
lib/tennpipes-base/caller.rb,
lib/tennpipes-base/filter.rb,
lib/tennpipes-base/loader.rb,
lib/tennpipes-base/logger.rb,
lib/tennpipes-base/module.rb,
lib/tennpipes-base/router.rb,
lib/tennpipes-base/server.rb,
lib/tennpipes-base/command.rb,
lib/tennpipes-base/mounter.rb,
lib/tennpipes-base/cli/base.rb,
lib/tennpipes-base/reloader.rb,
lib/tennpipes-base/application.rb,
lib/tennpipes-base/cli/adapter.rb,
lib/tennpipes-base/path_router.rb,
lib/tennpipes-base/cli/launcher.rb,
lib/tennpipes-base/reloader/rack.rb,
lib/tennpipes-base/reloader/storage.rb,
lib/tennpipes-base/application/flash.rb,
lib/tennpipes-base/path_router/route.rb,
lib/tennpipes-base/application/routing.rb,
lib/tennpipes-base/path_router/matcher.rb,
lib/tennpipes-base/path_router/compiler.rb,
lib/tennpipes-base/path_router/error_handler.rb,
lib/tennpipes-base/application/show_exceptions.rb,
lib/tennpipes-base/application/application_setup.rb,
lib/tennpipes-base/application/params_protection.rb,
lib/tennpipes-base/application/authenticity_token.rb

Overview

Manages current Tennpipes version for use in gem generation.

We put this in a separate file so you can get tennpipes version without include full tennpipes core.

Defined Under Namespace

Modules: ApplicationSetup, Cli, Flash, Loader, Module, ParamsProtection, PathRouter, Reloader, Routing, Tasks Classes: Application, ApplicationLoadError, AuthenticityToken, Filter, Logger, Mounter, Router, Server, ShowExceptions

Constant Summary collapse

TENNPIPES_IGNORE_CALLERS =

List of callers in a Tennpipes application that should be ignored as part of a stack trace.

[
  %r{lib/tennpipes-.*$},
  %r{/tennpipes-.*/(lib|bin)},
  %r{/bin/tennpipes$},
  %r{/sinatra(/(base|main|show_?exceptions))?\.rb$},
  %r{lib/tilt.*\.rb$},
  %r{lib/rack.*\.rb$},
  %r{lib/mongrel.*\.rb$},
  %r{lib/shotgun.*\.rb$},
  %r{bin/shotgun$},
  %r{\(.*\)},
  %r{shoulda/context\.rb$},
  %r{mocha/integration},
  %r{test/unit},
  %r{rake_test_loader\.rb},
  %r{custom_require\.rb$},
  %r{active_support},
  %r{/thor}
]
VERSION =

The version constant for the current version of Tennpipes.

'3.6.6'

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Loader

after_load, before_load, called_from, clear!, dependency_paths, load!, loaded?, precompile_all_routes!, reload!, require_dependencies

Class Attribute Details

.mounted_root(*args) ⇒ String

Returns the root to the mounted apps base directory.

Parameters:

  • args (Array)

Returns:

  • (String)

    the root to the mounted apps base directory.



275
276
277
# File 'lib/tennpipes-base/mounter.rb', line 275

def mounted_root(*args)
  Tennpipes.root(@mounted_root ||= "", *args)
end

Class Method Details

.add_middleware(router) ⇒ Object

Creates Rack stack with the router added to the middleware chain.



120
121
122
123
124
125
# File 'lib/tennpipes-base.rb', line 120

def add_middleware(router)
  builder = Rack::Builder.new
  middleware.each{ |mw,args,block| builder.use(mw, *args, &block) }
  builder.run(router)
  builder.to_app
end

.applicationTennpipes::Router

The resulting rack builder mapping each ‘mounted’ application.

Returns:

Raises:



68
69
70
71
72
73
# File 'lib/tennpipes-base.rb', line 68

def application
  warn 'WARNING! No apps are mounted. Please, mount apps in `config/apps.rb`' unless Tennpipes.mounted_apps.present?
  router = Tennpipes::Router.new
  Tennpipes.mounted_apps.each { |app| app.map_onto(router) }
  middleware.present? ? add_middleware(router) : router
end

.bin(*args) ⇒ Boolean

This method return the correct location of tennpipes bin or exec it using Kernel#system with the given args.

Examples:

Tennpipes.bin('start', '-e production')

Parameters:

  • args (Array)

    command or commands to execute

Returns:

  • (Boolean)


16
17
18
19
# File 'lib/tennpipes-base/command.rb', line 16

def self.bin(*args)
  @_tennpipes_bin ||= [self.ruby_command, File.expand_path("../../../bin/tennpipes", __FILE__)]
  args.empty? ? @_tennpipes_bin : system(args.unshift(@_tennpipes_bin).join(" "))
end

.clear_middleware!Array

Clears all previously configured middlewares.

Returns:

  • (Array)

    An empty array



144
145
146
# File 'lib/tennpipes-base.rb', line 144

def clear_middleware!
  @middleware = []
end

.configure_apps { ... } ⇒ Object

Configure Global Project Settings for mounted apps. These can be overloaded in each individual app’s own personal configuration. This can be used like:

Examples:

Tennpipes.configure_apps do
  enable  :sessions
  disable :raise_errors
end

Yields:

  • The given block will be called to configure each application.



88
89
90
91
# File 'lib/tennpipes-base.rb', line 88

def configure_apps(&block)
  return  unless block_given?
  global_configurations << block
end

.envSymbol

Helper method that return RACK_ENV.

Returns:

  • (Symbol)

    The Tennpipes Environment.



55
56
57
# File 'lib/tennpipes-base.rb', line 55

def env
  @_env ||= RACK_ENV.to_s.downcase.to_sym
end

.gem(name, main_module) ⇒ Object

Registers a gem with tennpipes. This relieves the caller from setting up loadpaths by itself and enables Tennpipes to look up apps in gem folder.

The name given has to be the proper gem name as given in the gemspec.

Parameters:

  • name (String)

    The name of the gem being registered.

  • main_module (Module)

    The main module of the gem.



177
178
179
180
181
182
# File 'lib/tennpipes-base.rb', line 177

def gem(name, main_module)
  _, spec = Gem.loaded_specs.find{|spec_pair| spec_pair[0] == name }
  gems << spec
  modules << main_module
  spec.full_gem_path
end

.gemsObject



186
187
188
# File 'lib/tennpipes-base.rb', line 186

def gems
  @gems ||= []
end

.global_configurationsObject

Stores global configuration blocks.



96
97
98
# File 'lib/tennpipes-base.rb', line 96

def global_configurations
  @_global_configurations ||= []
end

.insert_mounted_app(mounter) ⇒ Object

Inserts a Mounter object into the mounted applications (avoids duplicates).

Parameters:



292
293
294
# File 'lib/tennpipes-base/mounter.rb', line 292

def insert_mounted_app(mounter)
  Tennpipes.mounted_apps.push(mounter) unless Tennpipes.mounted_apps.include?(mounter)
end

.loggerTennpipes::Logger

Examples:

logger.debug "foo"
logger.warn "bar"

Returns:



17
18
19
# File 'lib/tennpipes-base/logger.rb', line 17

def self.logger
  Tennpipes::Logger.logger
end

.logger=(value) ⇒ Object

Set the tennpipes logger.

Examples:

using ruby default logger

require 'logger'
Tennpipes.logger = Logger.new(STDOUT)

using ActiveSupport

require 'active_support/buffered_logger'
Tennpipes.logger = Buffered.new(STDOUT)

Parameters:

  • value (Object)

    an object that respond to <<, write, puts, debug, warn etc..

Returns:

  • (Object)

    The given value.



38
39
40
# File 'lib/tennpipes-base/logger.rb', line 38

def self.logger=(value)
  Tennpipes::Logger.logger = value
end

.middlewareArray<Array<Class, Array, Proc>>

A Rack::Builder object that allows to add middlewares in front of all Tennpipes applications.

Returns:

  • (Array<Array<Class, Array, Proc>>)

    The middleware classes.



134
135
136
# File 'lib/tennpipes-base.rb', line 134

def middleware
  @middleware ||= []
end

.modulesObject



192
193
194
# File 'lib/tennpipes-base.rb', line 192

def modules
  @modules ||= []
end

.mount(name, options = {}) ⇒ Object

Mounts a new sub-application onto Tennpipes project.

Examples:

Tennpipes.mount("blog_app").to("/blog")

See Also:

  • Tennpipes::Mounter#new


304
305
306
# File 'lib/tennpipes-base/mounter.rb', line 304

def mount(name, options={})
  Mounter.new(name, options)
end

.mounted_appsArray

Returns the mounted tennpipes applications (MountedApp objects).

Returns:

  • (Array)

    the mounted tennpipes applications (MountedApp objects)



283
284
285
# File 'lib/tennpipes-base/mounter.rb', line 283

def mounted_apps
  @mounted_apps ||= []
end

.root(*args) ⇒ String

Helper method for file references.

Examples:

# Referencing a file in config called settings.yml
Tennpipes.root("config", "settings.yml")
# returns TENNPIPES_ROOT + "/config/setting.yml"

Parameters:

Returns:

  • (String)

    The absolute path.



45
46
47
# File 'lib/tennpipes-base.rb', line 45

def root(*args)
  File.expand_path(File.join(TENNPIPES_ROOT, *args))
end

.ruby_commandString

Return the path to the ruby interpreter taking into account multiple installations and windows extensions.

Returns:

  • (String)

    path to ruby bin executable



28
29
30
31
32
33
34
35
36
37
# File 'lib/tennpipes-base/command.rb', line 28

def self.ruby_command
  @ruby_command ||= begin
    ruby = File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name'])
    ruby << RbConfig::CONFIG['EXEEXT']

    # escape string in case path to ruby executable contain spaces.
    ruby.sub!(/.*\s.*/m, '"\&"')
    ruby
  end
end

.run!(options = {}) ⇒ Object

Runs the Tennpipes apps as a self-hosted server using: thin, mongrel, or WEBrick in that order.

Examples:

Tennpipes.run! # with these defaults => host: "127.0.0.1", port: "3000", adapter: the first found
Tennpipes.run!("0.0.0.0", "4000", "mongrel") # use => host: "0.0.0.0", port: "4000", adapter: "mongrel"


10
11
12
13
# File 'lib/tennpipes-base/server.rb', line 10

def self.run!(options={})
  Tennpipes.load!
  Server.start(*detect_application(options))
end

.set_encodingNilClass

Set Encoding.default_internal and Encoding.default_external to Encoding::UFT_8.

Please note that in 1.9.2 with some template engines like haml you should turn off Encoding.default_internal to prevent problems.

Returns:

  • (NilClass)

See Also:



111
112
113
114
115
# File 'lib/tennpipes-base.rb', line 111

def set_encoding
  Encoding.default_external = Encoding::UTF_8
  Encoding.default_internal = Encoding::UTF_8
  nil
end

.use(mw, *args) { ... } ⇒ Object

Convenience method for adding a Middleware to the whole tennpipes app.

Parameters:

  • m (Class)

    The middleware class.

  • args (Array)

    The arguments for the middleware.

Yields:

  • The given block will be passed to the initialized middleware.



160
161
162
# File 'lib/tennpipes-base.rb', line 160

def use(mw, *args, &block)
  middleware << [mw, args, block]
end

.versionString

The current Tennpipes version.

Returns:

  • (String)

    The version number.



17
18
19
# File 'lib/tennpipes-base/version.rb', line 17

def self.version
  VERSION
end

Instance Method Details

#RUBY_IGNORE_CALLERSObject

Add rubinius (and hopefully other VM implementations) ignore patterns …



27
# File 'lib/tennpipes-base/caller.rb', line 27

TENNPIPES_IGNORE_CALLERS.concat(RUBY_IGNORE_CALLERS)