Sha256: 69d17f70efcd23372c3af5327fb52a768db03527eba65f5b7a1514d2078e8a2c

Contents?: true

Size: 1.39 KB

Versions: 3

Compression:

Stored size: 1.39 KB

Contents

$:.unshift(File.join(File.dirname(__FILE__), 'lib'))

require 'uri'
require 'yaml'

require 'rack'
require 'rack/cache'
require 'rack/rewrite'
require 'rack/throttle'

require 'murlsh'

config = YAML.load_file('config.yaml')

# for Heroku
db_config_file = File.join(File.dirname(__FILE__), 'config', 'database.yml')
if File.exist?(db_config_file)
  config['db'] = YAML.load_file(db_config_file)['production']
end

# use Rack::ShowExceptions
# no more than 1024 requests per day per ip
use Rack::Throttle::Daily, :max => 1024

if !config['cache_metastore'].to_s.empty? and
  !config['cache_entitystore'].to_s.empty?
  use Rack::Cache,
    :verbose => true,
    :metastore => config['cache_metastore'],
    :entitystore => config['cache_entitystore']
end

use Rack::ConditionalGet
use Murlsh::EtagAddEncoding
use Rack::Deflater
use Rack::Head
use Rack::ETag
use Murlsh::FarFutureExpires, :patterns => [
  %r{[\da-z]{32}\.(?:gif|jpe?g|png)$}i,
  %r{\.gen\.(css|js)$}
]

feed_url = URI.join(config.fetch('root_url'), config.fetch('feed_file'))
use Murlsh::MustRevalidate, :patterns => %r{^#{Regexp.escape(feed_url.path)}$}

use Rack::Static, :urls => %w{/css/ /img/ /js/}, :root => 'public'

use Rack::Rewrite do
  r301 '/atom.xml', feed_url.to_s
  r301 '/rss.xml', URI.join(config.fetch('root_url'), 'rss.rss').to_s
end

# use Rack::Lint

Dir['plugins/*.rb'].each { |p| require "./#{p}" }

run Murlsh::Dispatch.new(config)

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
murlsh-1.6.1 config.ru
murlsh-1.6.0 config.ru
murlsh-1.5.0 config.ru