Browse Source

rename Riemann::Dash -> Riemann::Dash::App + move sinatra app to app.rb

tags/0.2.3
Roman Heinrich 9 years ago
parent
commit
5b4338bf8c
  1. 4
      bin/riemann-dash
  2. 106
      lib/riemann/dash.rb
  3. 104
      lib/riemann/dash/app.rb
  4. 2
      lib/riemann/dash/controller/css.rb
  5. 2
      lib/riemann/dash/controller/index.rb
  6. 2
      lib/riemann/dash/version.rb

4
bin/riemann-dash

@ -3,5 +3,5 @@
$LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib')))
require 'riemann/dash'
Riemann::Dash.load ARGV.first
Riemann::Dash.run!
Riemann::Dash::App.load ARGV.first
Riemann::Dash::App.run!

106
lib/riemann/dash.rb

@ -1,105 +1,5 @@
require 'rubygems'
require 'sinatra/base'
module Riemann
class Dash < Sinatra::Base
# A little dashboard sinatra application.
require 'yaml'
require 'find'
require 'erubis'
require 'sass'
def self.config
@config ||= {
:controllers => [File.join(File.dirname(__FILE__), 'dash', 'controller')],
:views => File.join(File.dirname(__FILE__), 'dash', 'views'),
:ws_config => File.join(File.dirname(__FILE__), '..', '..', 'config', 'config.json'),
:public => File.join(File.dirname(__FILE__), 'dash', 'public')
}
end
def self.load(filename)
unless load_config(filename || 'config.rb')
# Configuration failed; load a default view.
puts "No configuration loaded; using defaults."
end
# load controllers
config[:controllers].each { |d| load_controllers d }
# views
set :views, File.expand_path(config[:views])
# setup public dir
public_dir(config[:public])
end
# Executes the configuration file.
def self.load_config(filename)
begin
instance_eval File.read(filename)
true
rescue Errno::ENOENT
false
end
end
# Load controllers.
# Controllers can be regular old one-file-per-class, but
# if you prefer a little more modularity, this method will allow you to
# define all controller methods in their own files. For example, get
# "/posts/*/edit" can live in controller/posts/_/edit.rb. The sorting
# system provided here requires files in the correct order to handle
# wildcards appropriately.
def self.load_controllers(dir)
rbs = []
Find.find(
File.expand_path(dir)
) do |path|
rbs << path if path =~ /\.rb$/
end
# Sort paths with _ last, becase those are wildcards.
rbs.sort! do |a, b|
as = a.split File::SEPARATOR
bs = b.split File::SEPARATOR
# Compare common subpaths
l = [as.size, bs.size].min
catch :x do
(0...l).each do |i|
a, b = as[i], bs[i]
if a[/^_/] and not b[/^_/]
throw :x, 1
elsif b[/^_/] and not a[/^_/]
throw :x, -1
elsif ord = (a <=> b) and ord != 0
throw :x, ord
end
end
# All subpaths are identical; sort longest first
if as.size > bs.size
throw :x, -1
elsif as.size < bs.size
throw :x, -1
else
throw :x, 0
end
end
end
rbs.each do |r|
require r
end
end
# Add an additional public directory.
def self.public_dir(dir)
require 'riemann/dash/rack/static'
use Riemann::Dash::Static, :root => dir
end
end
end
require 'riemann/dash/version'
require 'riemann/dash/config'
require 'riemann/dash/app'

104
lib/riemann/dash/app.rb

@ -0,0 +1,104 @@
module Riemann
module Dash
class App < Sinatra::Base
# A little dashboard sinatra application.
require 'yaml'
require 'find'
require 'erubis'
require 'sass'
def self.config
@config ||= {
:controllers => [File.join(File.dirname(__FILE__), 'dash', 'controller')],
:views => File.join(File.dirname(__FILE__), 'dash', 'views'),
:ws_config => File.join(File.dirname(__FILE__), '..', '..', 'config', 'config.json'),
:public => File.join(File.dirname(__FILE__), 'dash', 'public')
}
end
def self.load(filename)
unless load_config(filename || 'config.rb')
# Configuration failed; load a default view.
puts "No configuration loaded; using defaults."
end
# load controllers
config[:controllers].each { |d| load_controllers d }
# views
set :views, File.expand_path(config[:views])
# setup public dir
public_dir(config[:public])
end
# Executes the configuration file.
def self.load_config(filename)
begin
instance_eval File.read(filename)
true
rescue Errno::ENOENT
false
end
end
# Load controllers.
# Controllers can be regular old one-file-per-class, but
# if you prefer a little more modularity, this method will allow you to
# define all controller methods in their own files. For example, get
# "/posts/*/edit" can live in controller/posts/_/edit.rb. The sorting
# system provided here requires files in the correct order to handle
# wildcards appropriately.
def self.load_controllers(dir)
rbs = []
Find.find(
File.expand_path(dir)
) do |path|
rbs << path if path =~ /\.rb$/
end
# Sort paths with _ last, becase those are wildcards.
rbs.sort! do |a, b|
as = a.split File::SEPARATOR
bs = b.split File::SEPARATOR
# Compare common subpaths
l = [as.size, bs.size].min
catch :x do
(0...l).each do |i|
a, b = as[i], bs[i]
if a[/^_/] and not b[/^_/]
throw :x, 1
elsif b[/^_/] and not a[/^_/]
throw :x, -1
elsif ord = (a <=> b) and ord != 0
throw :x, ord
end
end
# All subpaths are identical; sort longest first
if as.size > bs.size
throw :x, -1
elsif as.size < bs.size
throw :x, -1
else
throw :x, 0
end
end
end
rbs.each do |r|
require r
end
end
# Add an additional public directory.
def self.public_dir(dir)
require 'riemann/dash/rack/static'
use Riemann::Dash::Static, :root => dir
end
end
end
end

2
lib/riemann/dash/controller/css.rb

@ -1,4 +1,4 @@
class Riemann::Dash
class Riemann::Dash::App
get '/css' do
scss :css, :layout => false
end

2
lib/riemann/dash/controller/index.rb

@ -1,4 +1,4 @@
class Riemann::Dash
class Riemann::Dash::App
require 'multi_json'
require 'fileutils'
require 'set'

2
lib/riemann/dash/version.rb

@ -1,4 +1,4 @@
module Riemann; end
class Riemann::Dash
module Riemann::Dash
VERSION = '0.2.2'
end

Loading…
Cancel
Save