Module: Hanami
- Defined in:
- lib/hanami.rb,
lib/hanami/app.rb,
lib/hanami/env.rb,
lib/hanami/routes.rb,
lib/hanami/server.rb,
lib/hanami/static.rb,
lib/hanami/version.rb,
lib/hanami/welcome.rb,
lib/hanami/hanamirc.rb,
lib/hanami/components.rb,
lib/hanami/middleware.rb,
lib/hanami/application.rb,
lib/hanami/early_hints.rb,
lib/hanami/environment.rb,
lib/hanami/rake_helper.rb,
lib/hanami/assets/asset.rb,
lib/hanami/cli/commands.rb,
lib/hanami/assets/static.rb,
lib/hanami/common_logger.rb,
lib/hanami/config/mapper.rb,
lib/hanami/config/routes.rb,
lib/hanami/configuration.rb,
lib/hanami/views/default.rb,
lib/hanami/config/cookies.rb,
lib/hanami/cli/commands/db.rb,
lib/hanami/config/security.rb,
lib/hanami/config/sessions.rb,
lib/hanami/routing/default.rb,
lib/hanami/views/null_view.rb,
lib/hanami/application_name.rb,
lib/hanami/cli/commands/new.rb,
lib/hanami/rendering_policy.rb,
lib/hanami/config/load_paths.rb,
lib/hanami/configuration/app.rb,
lib/hanami/cli/commands/assets.rb,
lib/hanami/cli/commands/routes.rb,
lib/hanami/cli/commands/server.rb,
lib/hanami/components/app/view.rb,
lib/hanami/cli/commands/command.rb,
lib/hanami/cli/commands/console.rb,
lib/hanami/cli/commands/db/drop.rb,
lib/hanami/cli/commands/destroy.rb,
lib/hanami/cli/commands/project.rb,
lib/hanami/cli/commands/version.rb,
lib/hanami/components/component.rb,
lib/hanami/application_namespace.rb,
lib/hanami/cli/commands/db/apply.rb,
lib/hanami/cli/commands/generate.rb,
lib/hanami/components/app/assets.rb,
lib/hanami/components/app/routes.rb,
lib/hanami/components/components.rb,
lib/hanami/action/csrf_protection.rb,
lib/hanami/action/routing_helpers.rb,
lib/hanami/cli/commands/db/create.rb,
lib/hanami/cli/commands/templates.rb,
lib/hanami/cli/commands/db/console.rb,
lib/hanami/cli/commands/db/migrate.rb,
lib/hanami/cli/commands/db/prepare.rb,
lib/hanami/cli/commands/db/version.rb,
lib/hanami/cli/commands/db/rollback.rb,
lib/hanami/cli/commands/destroy/app.rb,
lib/hanami/configuration/middleware.rb,
lib/hanami/application_configuration.rb,
lib/hanami/cli/commands/generate/app.rb,
lib/hanami/components/app/controller.rb,
lib/hanami/cli/commands/destroy/model.rb,
lib/hanami/cli/commands/destroy/action.rb,
lib/hanami/cli/commands/destroy/mailer.rb,
lib/hanami/cli/commands/generate/model.rb,
lib/hanami/components/routes_inspector.rb,
lib/hanami/cli/commands/generate/action.rb,
lib/hanami/cli/commands/generate/mailer.rb,
lib/hanami/cli/commands/generate/secret.rb,
lib/hanami/views/default_template_finder.rb,
lib/hanami/cli/commands/assets/precompile.rb,
lib/hanami/cli/commands/destroy/migration.rb,
lib/hanami/config/framework_configuration.rb,
lib/hanami/cli/commands/generate/migration.rb,
lib/hanami/environment_application_configurations.rb
Overview
Copyright notice
This file contains a method copied from Rack::Static (rack gem).
Rack - Copyright © 2007 Christian Neukirchen Released under the MIT License
Defined Under Namespace
Modules: Action, Assets, Components, Config, Mailer, Routing, Version, Views Classes: App, Application, ApplicationConfiguration, ApplicationName, ApplicationNamespace, CLI, CommonLogger, Configuration, EarlyHints, Env, Environment, EnvironmentApplicationConfigurations, Hanamirc, Middleware, RakeHelper, RenderingPolicy, Routes, Server, Static, Welcome
Constant Summary collapse
- DEFAULT_PUBLIC_DIRECTORY =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
'public'.freeze
- VERSION =
Defines the full version
Version.version
Class Method Summary collapse
-
.app ⇒ Hanami::App
private
Main application that mounts many Rack and/or Hanami applications.
-
.app?(app) ⇒ TrueClass, FalseClass
Check if an application is allowed to load.
-
.boot ⇒ NilClass
Boot your Hanami project.
-
.code_reloading? ⇒ TrueClass, FalseClass
private
Check if code reloading is enabled.
-
.configuration ⇒ Hanami::Configuration
private
Hanami configuration.
-
.configure(&blk) ⇒ Object
Configure Hanami project.
-
.env ⇒ String
Return the current environment.
-
.env?(*names) ⇒ TrueClass, FalseClass
Check to see if specified environment(s) matches the current environment.
-
.environment ⇒ Hanami::Environment
private
Current environment.
-
.logger ⇒ Hanami::Logger
Project logger.
-
.plugin(&blk) ⇒ Object
Configure a plugin.
-
.plugins ⇒ Object
private
Plugins registry.
-
.public_directory ⇒ Pathname
Project public directory.
-
.root ⇒ Pathname
Return root of the project (top level directory).
Class Method Details
.app ⇒ Hanami::App
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Main application that mounts many Rack and/or Hanami applications.
This is used as integration point for:
* `config.ru` (`run Hanami.app`)
* Feature tests (`Capybara.app = Hanami.app`)
It lazily loads your Hanami project, in case it wasn’t booted on before. This is the case when ‘hanami server` isn’t invoked, but we use different ways to run the project (eg. ‘rackup`).
150 151 152 153 |
# File 'lib/hanami.rb', line 150 def self.app boot App.new(configuration, environment) end |
.app?(app) ⇒ TrueClass, FalseClass
Check if an application is allowed to load.
The list of applications to be loaded can be set via the ‘HANAMI_APPS` env variable. If the HANAMI_APPS env variable is not set, it defaults to loading all applications.
175 176 177 178 179 180 |
# File 'lib/hanami.rb', line 175 def self.app?(app) return true unless ENV.key?('HANAMI_APPS') allowed_apps = ENV['HANAMI_APPS'].to_s.split(',') allowed_apps.include?(app.to_s.downcase) end |
.boot ⇒ NilClass
Boot your Hanami project
NOTE: In case this is invoked many times, it guarantees that the boot
process happens only once.
NOTE: This MUST NOT be wrapped by a Mutex, because it would cause a deadlock.
124 125 126 127 128 129 |
# File 'lib/hanami.rb', line 124 def self.boot Components.release if code_reloading? Components.resolve('all') Hanami::Model.disconnect if defined?(Hanami::Model) nil end |
.code_reloading? ⇒ TrueClass, FalseClass
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Check if code reloading is enabled.
268 269 270 271 272 |
# File 'lib/hanami.rb', line 268 def self.code_reloading? environment Components.resolve('code_reloading') Components['code_reloading'] end |
.configuration ⇒ Hanami::Configuration
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Hanami configuration
74 75 76 77 78 79 |
# File 'lib/hanami.rb', line 74 def self.configuration @_mutex.synchronize do raise "Hanami not configured" unless defined?(@_configuration) @_configuration end end |
.configure(&blk) ⇒ Object
Configure Hanami project
Please note that the code for this method is generated by ‘hanami new`.
60 61 62 63 64 |
# File 'lib/hanami.rb', line 60 def self.configure(&blk) @_mutex.synchronize do @_configuration = Hanami::Configuration.new(&blk) end end |
.env ⇒ String
Return the current environment
216 217 218 |
# File 'lib/hanami.rb', line 216 def self.env environment.environment end |
.env?(*names) ⇒ TrueClass, FalseClass
Check to see if specified environment(s) matches the current environment.
If multiple names are given, it returns true, if at least one of them matches the current environment.
244 245 246 |
# File 'lib/hanami.rb', line 244 def self.env?(*names) environment.environment?(*names) end |
.environment ⇒ Hanami::Environment
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Current environment
254 255 256 257 258 |
# File 'lib/hanami.rb', line 254 def self.environment Components.resolved('environment') do Environment.new end end |
.logger ⇒ Hanami::Logger
Project logger
279 280 281 |
# File 'lib/hanami.rb', line 279 def self.logger Components['logger'] end |
.plugin(&blk) ⇒ Object
Configure a plugin
86 87 88 |
# File 'lib/hanami.rb', line 86 def self.plugin(&blk) @_plugins << blk end |
.plugins ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Plugins registry
NOTE: We can’t use ‘Components` registry.
Plugins are loaded when Bundler requires ‘Gemfile` gems. During this phase the `Components` that we can resolve are erased by the first incoming request in development. They are erased by a workaround that we had to put in place in `Hanami.boot`. This workaround is `Components.release` and it was introduced because `shotgun` failed to reload components, so we have to release for each incoming request. After the `Components` registry is cleared up, Hanami is able to resolve all the components from scratch.
When we’ll switch to ‘hanami-reloader` for development, we can remove `Components.release` and we’ll be able to store plugins in ‘Components` and remove `Hanami.plugins` as well.
110 111 112 |
# File 'lib/hanami.rb', line 110 def self.plugins @_plugins end |
.public_directory ⇒ Pathname
Project public directory
202 203 204 |
# File 'lib/hanami.rb', line 202 def self.public_directory root.join(DEFAULT_PUBLIC_DIRECTORY) end |
.root ⇒ Pathname
Return root of the project (top level directory).
190 191 192 |
# File 'lib/hanami.rb', line 190 def self.root environment.root end |