Spine::Engines
Starting point for your Rack application and its configurations.
Installation
To install it, add the gem to your Gemfile:
gem 'spine-engines'
Then run bundle
. If you're not using Bundler, just gem install spine-engines
.
Usage
Define your application and configuration:
# lib/my_app/application.rb
module MyApp
module Application
extend Spine::Engines::Application
extend self
# Add loaders
loaders << Spine::Engines::Loaders::LoadPaths
loaders << Spine::Engines::Loaders::EnvironmentConfiguration
loaders << Spine::Engines::Loaders::Initializers
# Add extensions
extension Spine::Routing::Engine
# Add your own extra configuration
def active_record
::ActiveRecord::Base
end
end
end
Define your shared configuration between environments. You can define
environment specific configurations in config/environments/evironment_name.rb
.
# config/environment.rb
require File.('../boot', __FILE__)
environment = ENV['RACK_ENV'] || 'development'
Bundler.require(:default, environment)
require File.('../../lib/my_app/application', __FILE__)
MyApp::Application.configure do |config|
config.environment = environment
config.root = File.('../..', __FILE__)
config.load_paths! %w(
lib/my_app/**/*.rb
)
# Middlewares
config.middleware.use Rack::Lock
config.middleware.use Rack::Runtime
config.middleware.use Rack::MethodOverride
config.middleware.use Rack::CommonLogger, config.logger
config.middleware.use Rack::Head
config.middleware.use Rack::ConditionalGet
config.middleware.use Rack::ETag
end
MyApp::Application.initialize!
Add Bundler to boot:
# config/boot.rb
require 'rubygems'
# Set up gems listed in the Gemfile.
gemfile = File.('../../Gemfile', __FILE__)
begin
ENV['BUNDLE_GEMFILE'] = gemfile
require 'bundler'
Bundler.setup
rescue Bundler::GemNotFound => e
STDERR.puts e.
STDERR.puts "Try running `bundle install`."
exit!
end if File.exist?(gemfile)
Configuring Rack to use this application:
# config.ru
require ::File.('../config/environment', __FILE__)
run MyApp::Application