Module: Padrino
- Extended by:
- Configuration, Loader
- Defined in:
- lib/padrino-core/version.rb,
lib/padrino-core.rb,
lib/padrino-core/tasks.rb,
lib/padrino-core/caller.rb,
lib/padrino-core/filter.rb,
lib/padrino-core/loader.rb,
lib/padrino-core/logger.rb,
lib/padrino-core/module.rb,
lib/padrino-core/router.rb,
lib/padrino-core/server.rb,
lib/padrino-core/command.rb,
lib/padrino-core/mounter.rb,
lib/padrino-core/cli/base.rb,
lib/padrino-core/reloader.rb,
lib/padrino-core/application.rb,
lib/padrino-core/cli/adapter.rb,
lib/padrino-core/cli/binstub.rb,
lib/padrino-core/path_router.rb,
lib/padrino-core/cli/launcher.rb,
lib/padrino-core/configuration.rb,
lib/padrino-core/reloader/rack.rb,
lib/padrino-core/reloader/storage.rb,
lib/padrino-core/application/flash.rb,
lib/padrino-core/path_router/route.rb,
lib/padrino-core/application/routing.rb,
lib/padrino-core/path_router/matcher.rb,
lib/padrino-core/path_router/compiler.rb,
lib/padrino-core/path_router/error_handler.rb,
lib/padrino-core/application/show_exceptions.rb,
lib/padrino-core/application/application_setup.rb,
lib/padrino-core/application/params_protection.rb,
lib/padrino-core/mounter/application_extension.rb,
lib/padrino-core/application/authenticity_token.rb
Overview
Manages current Padrino version for use in gem generation.
We put this in a separate file so you can get padrino version without include full padrino core.
Defined Under Namespace
Modules: ApplicationSetup, Cli, Configuration, Flash, Loader, Module, ParamsProtection, PathRouter, Reloader, Routing, Tasks Classes: Application, ApplicationLoadError, AuthenticityToken, Filter, Logger, Mounter, Router, Server, ShowExceptions
Constant Summary collapse
- PADRINO_IGNORE_CALLERS =
List of callers in a Padrino application that should be ignored as part of a stack trace.
[ %r{lib/padrino-.*$}, %r{/padrino-.*/(lib|bin)}, %r{/bin/padrino$}, %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}, %r{/lib/bundler}, ]
- VERSION =
The version constant for the current version of Padrino.
'0.15.3'
Class Attribute Summary collapse
-
.mounted_root(*args) ⇒ String
The root to the mounted apps base directory.
Class Method Summary collapse
-
.add_middleware(router) ⇒ Object
Creates Rack stack with the router added to the middleware chain.
-
.application ⇒ Padrino::Router
The resulting rack builder mapping each ‘mounted’ application.
-
.bin(*args) ⇒ Boolean
This method return the correct location of padrino bin or exec it using Kernel#system with the given args.
-
.clear_middleware! ⇒ Array
Clears all previously configured middlewares.
-
.configure_apps { ... } ⇒ Object
Configure Global Project Settings for mounted apps.
-
.env ⇒ Symbol
Helper method that return RACK_ENV.
-
.gem(name, main_module) ⇒ Object
Registers a gem with padrino.
- .gems ⇒ Object
-
.global_configurations ⇒ Object
Stores global configuration blocks.
-
.insert_mounted_app(mounter) ⇒ Object
Inserts a Mounter object into the mounted applications (avoids duplicates).
- .logger ⇒ Padrino::Logger
-
.logger=(value) ⇒ Object
Set the padrino logger.
-
.middleware ⇒ Array<Array<Class, Array, Proc>>
A Rack::Builder object that allows to add middlewares in front of all Padrino applications.
- .modules ⇒ Object
-
.mount(name, options = {}) ⇒ Object
Mounts a new sub-application onto Padrino project.
-
.mounted_apps ⇒ Array
The mounted padrino applications (MountedApp objects).
-
.replace_with_binstub(executable) ⇒ Object
Replaces the current process with it’s binstub.
-
.root(*args) ⇒ String
Helper method for file references.
-
.ruby_command ⇒ String
Return the path to the ruby interpreter taking into account multiple installations and windows extensions.
-
.run!(options = {}) ⇒ Object
Runs the Padrino apps as a self-hosted server using: thin, mongrel, or WEBrick in that order.
-
.set_encoding ⇒ NilClass
Set
Encoding.default_internal
andEncoding.default_external
toEncoding::UFT_8
. -
.use(mw, *args) { ... } ⇒ Object
Convenience method for adding a Middleware to the whole padrino app.
-
.version ⇒ String
The current Padrino version.
Instance Method Summary collapse
-
#RUBY_IGNORE_CALLERS ⇒ Object
Add rubinius (and hopefully other VM implementations) ignore patterns …
Methods included from Configuration
Methods included from Loader
after_load, before_load, called_from, clear!, dependency_paths, load!, loaded?, precompile_all_routes!, reload!, require_dependencies
Class Attribute Details
Class Method Details
.add_middleware(router) ⇒ Object
Creates Rack stack with the router added to the middleware chain.
123 124 125 126 127 128 |
# File 'lib/padrino-core.rb', line 123 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 |
.application ⇒ Padrino::Router
The resulting rack builder mapping each ‘mounted’ application.
71 72 73 74 75 76 |
# File 'lib/padrino-core.rb', line 71 def application warn 'WARNING! No apps are mounted. Please, mount apps in `config/apps.rb`' if Padrino.mounted_apps.empty? router = Padrino::Router.new Padrino.mounted_apps.each { |app| app.map_onto(router) } middleware.empty? ? router : add_middleware(router) end |
.bin(*args) ⇒ Boolean
This method return the correct location of padrino bin or exec it using Kernel#system with the given args.
16 17 18 19 |
# File 'lib/padrino-core/command.rb', line 16 def self.bin(*args) @_padrino_bin ||= [self.ruby_command, File.("../../../bin/padrino", __FILE__)] args.empty? ? @_padrino_bin : system(args.unshift(@_padrino_bin).join(" ")) end |
.clear_middleware! ⇒ Array
Clears all previously configured middlewares.
147 148 149 |
# File 'lib/padrino-core.rb', line 147 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:
91 92 93 94 |
# File 'lib/padrino-core.rb', line 91 def configure_apps(&block) return unless block_given? global_configurations << block end |
.env ⇒ Symbol
Helper method that return RACK_ENV.
58 59 60 |
# File 'lib/padrino-core.rb', line 58 def env @_env ||= RACK_ENV.to_s.downcase.to_sym end |
.gem(name, main_module) ⇒ Object
Registers a gem with padrino. This relieves the caller from setting up loadpaths by itself and enables Padrino to look up apps in gem folder.
The name given has to be the proper gem name as given in the gemspec.
180 181 182 183 184 185 |
# File 'lib/padrino-core.rb', line 180 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 |
.gems ⇒ Object
189 190 191 |
# File 'lib/padrino-core.rb', line 189 def gems @gems ||= [] end |
.global_configurations ⇒ Object
Stores global configuration blocks.
99 100 101 |
# File 'lib/padrino-core.rb', line 99 def global_configurations @_global_configurations ||= [] end |
.insert_mounted_app(mounter) ⇒ Object
Inserts a Mounter object into the mounted applications (avoids duplicates).
254 255 256 |
# File 'lib/padrino-core/mounter.rb', line 254 def insert_mounted_app(mounter) Padrino.mounted_apps.push(mounter) unless Padrino.mounted_apps.include?(mounter) end |
.logger ⇒ Padrino::Logger
17 18 19 |
# File 'lib/padrino-core/logger.rb', line 17 def self.logger Padrino::Logger.logger end |
.logger=(value) ⇒ Object
Set the padrino logger.
47 48 49 |
# File 'lib/padrino-core/logger.rb', line 47 def self.logger=(value) Padrino::Logger.logger = value end |
.middleware ⇒ Array<Array<Class, Array, Proc>>
A Rack::Builder object that allows to add middlewares in front of all Padrino applications.
137 138 139 |
# File 'lib/padrino-core.rb', line 137 def middleware @middleware ||= [] end |
.modules ⇒ Object
195 196 197 |
# File 'lib/padrino-core.rb', line 195 def modules @modules ||= [] end |
.mount(name, options = {}) ⇒ Object
Mounts a new sub-application onto Padrino project.
266 267 268 |
# File 'lib/padrino-core/mounter.rb', line 266 def mount(name, ={}) Mounter.new(name, ) end |
.mounted_apps ⇒ Array
Returns the mounted padrino applications (MountedApp objects).
245 246 247 |
# File 'lib/padrino-core/mounter.rb', line 245 def mounted_apps @mounted_apps ||= [] end |
.replace_with_binstub(executable) ⇒ Object
Replaces the current process with it’s binstub.
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/padrino-core/cli/binstub.rb', line 5 def self.replace_with_binstub(executable) begin return if Bundler.definition.missing_specs.empty? rescue NameError, NoMethodError, Bundler::GemfileNotFound end project_root = Dir.pwd until project_root.empty? break if File.file?(File.join(project_root, 'Gemfile')) project_root = project_root.rpartition('/').first end if %w(Gemfile .components).all? { |file| File.file?(File.join(project_root, file)) } binstub = File.join(project_root, 'bin', executable) if File.file?(binstub) exec Gem.ruby, binstub, *ARGV else puts 'Please run `bundle install --binstubs` from your project root to generate bundle-specific executables' exit! end end end |
.root(*args) ⇒ String
Helper method for file references.
48 49 50 |
# File 'lib/padrino-core.rb', line 48 def root(*args) File.(File.join(PADRINO_ROOT, *args)) end |
.ruby_command ⇒ String
Return the path to the ruby interpreter taking into account multiple installations and windows extensions.
28 29 30 31 32 33 34 35 36 37 |
# File 'lib/padrino-core/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 Padrino apps as a self-hosted server using: thin, mongrel, or WEBrick in that order.
10 11 12 13 |
# File 'lib/padrino-core/server.rb', line 10 def self.run!(={}) Padrino.load! Server.start(*detect_application()) end |
.set_encoding ⇒ NilClass
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.
114 115 116 117 118 |
# File 'lib/padrino-core.rb', line 114 def set_encoding # remove after 0.15 warn 'Warning! Padrino.set_encoding is deprecated. Padrino no longer manages ruby default encodings' nil end |
.use(mw, *args) { ... } ⇒ Object
Convenience method for adding a Middleware to the whole padrino app.
163 164 165 |
# File 'lib/padrino-core.rb', line 163 def use(mw, *args, &block) middleware << [mw, args, block] end |
.version ⇒ String
The current Padrino version.
17 18 19 |
# File 'lib/padrino-core/version.rb', line 17 def self.version VERSION end |
Instance Method Details
#RUBY_IGNORE_CALLERS ⇒ Object
Add rubinius (and hopefully other VM implementations) ignore patterns …
28 |
# File 'lib/padrino-core/caller.rb', line 28 PADRINO_IGNORE_CALLERS.concat(RUBY_IGNORE_CALLERS) |