Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 10 additions & 15 deletions lib/dashing/app.rb
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,9 @@ def authenticated?(token)
set :views, File.join(settings.root, 'dashboards')
set :default_dashboard, nil
set :auth_token, nil
set :template_languages, %i[html erb]

if File.exists?(settings.history_file)
if File.exist?(settings.history_file)
set :history, YAML.load_file(settings.history_file)
else
set :history, {}
Expand Down Expand Up @@ -84,9 +85,9 @@ def authenticated?(token)

get '/:dashboard' do
protected!
tilt_html_engines.each do |suffix, _|
file = File.join(settings.views, "#{params[:dashboard]}.#{suffix}")
return render(suffix.to_sym, params[:dashboard].to_sym) if File.exist? file
settings.template_languages.each do |language|
file = File.join(settings.views, "#{params[:dashboard]}.#{language}")
return render(language, params[:dashboard].to_sym) if File.exist?(file)
end

halt 404
Expand Down Expand Up @@ -119,10 +120,11 @@ def authenticated?(token)

get '/views/:widget?.html' do
protected!
tilt_html_engines.each do |suffix, engines|
file = File.join(settings.root, "widgets", params[:widget], "#{params[:widget]}.#{suffix}")
return engines.first.new(file).render if File.exist? file
settings.template_languages.each do |language|
file = File.join(settings.root, "widgets", params[:widget], "#{params[:widget]}.#{language}")
return Tilt[language].new(file).render if File.exist?(file)
end

"Drats! Unable to find a widget file named: #{params[:widget]} to render."
end

Expand Down Expand Up @@ -162,21 +164,14 @@ def first_dashboard
files.sort.first
end

def tilt_html_engines
Tilt.mappings.select do |_, engines|
default_mime_type = engines.first.default_mime_type
default_mime_type.nil? || default_mime_type == 'text/html'
end
end

def require_glob(relative_glob)
Dir[File.join(settings.root, relative_glob)].each do |file|
require file
end
end

settings_file = File.join(settings.root, 'config/settings.rb')
require settings_file if File.exists?(settings_file)
require settings_file if File.exist?(settings_file)

{}.to_json # Forces your json codec to initialize (in the event that it is lazily loaded). Does this before job threads start.
job_path = ENV["JOB_PATH"] || 'jobs'
Expand Down
31 changes: 16 additions & 15 deletions smashing.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,22 @@ Gem::Specification.new do |s|

s.files = Dir['README.md', 'javascripts/**/*', 'templates/**/*','templates/**/.[a-z]*', 'lib/**/*']

s.add_dependency('sass', '~> 3.2.12')
s.add_dependency('coffee-script', '~> 2.2.0')
s.add_dependency('execjs', '~> 2.0.2')
s.add_dependency('sinatra', '~> 1.4.4')
s.add_dependency('sinatra-contrib', '~> 1.4.2')
s.add_dependency('thin', '~> 1.6.1')
s.add_dependency('rufus-scheduler', '~> 3.2.0')
s.add_dependency('thor', '~> 0.19')
s.add_dependency('sprockets', '~> 2.10.1')
s.add_dependency('rack', '~> 1.5.4')
s.add_dependency('sass', '~> 3.4.24')
s.add_dependency('coffee-script', '~> 2.4.1')
s.add_dependency('execjs', '~> 2.7.0')
s.add_dependency('sinatra', '~> 2.0.0')
s.add_dependency('sinatra-contrib', '~> 2.0.0')
s.add_dependency('thin', '~> 1.7.0')
s.add_dependency('rufus-scheduler', '~> 3.4.2')
s.add_dependency('thor', '~> 0.19.4')
s.add_dependency('sprockets', '~> 3.7.1')
s.add_dependency('rack', '~> 2.0.0')

s.add_development_dependency('rake', '~> 10.1.0')
s.add_development_dependency('haml', '~> 4.0.4')
s.add_development_dependency('minitest', '~> 5.2.0')
s.add_development_dependency('mocha', '~> 0.14.0')
s.add_development_dependency('rake', '~> 12.0.0')
s.add_development_dependency('haml', '~> 5.0.1')
s.add_development_dependency('rack-test', '~> 0.6.3')
s.add_development_dependency('minitest', '~> 5.10.2')
s.add_development_dependency('mocha', '~> 1.2.1')
s.add_development_dependency('fakeweb', '~> 1.3.0')
s.add_development_dependency('simplecov', '~> 0.8.2')
s.add_development_dependency('simplecov', '~> 0.14.1')
end
4 changes: 4 additions & 0 deletions templates/project/config.ru
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ require 'dashing'
configure do
set :auth_token, 'YOUR_AUTH_TOKEN'

# See http://www.sinatrarb.com/intro.html > Available Template Languages on
# how to add additional template languages.
set :template_languages, %i[html erb]

helpers do
def protected!
# Put any authentication code you want in here.
Expand Down
9 changes: 9 additions & 0 deletions test/app_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,8 @@ def test_page_title_set_correctly
end

def test_get_haml_dashboard
app.template_languages << :haml

with_generated_project do |dir|
File.write(File.join(dir, 'dashboards/hamltest.haml'), '.gridster')
get '/hamltest'
Expand All @@ -113,6 +115,8 @@ def test_get_haml_dashboard
end

def test_get_haml_widget
app.template_languages << :haml

with_generated_project do |dir|
File.write(File.join(dir, 'widgets/clock/clock.haml'), '%h1 haml')
File.unlink(File.join(dir, 'widgets/clock/clock.html'))
Expand Down Expand Up @@ -156,6 +160,11 @@ def with_generated_project
app.settings.public_folder = File.join(dir, 'new_project/public')
app.settings.views = File.join(dir, 'new_project/dashboards')
app.settings.root = File.join(dir, 'new_project')

app.settings.raise_errors = true
app.settings.dump_errors = false
app.settings.show_exceptions = false

yield app.settings.root
end
end
Expand Down
2 changes: 1 addition & 1 deletion test/test_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def temp
yield path
ensure
Dir.chdir WORKING_DIRECTORY
FileUtils.rm_rf(path) if File.exists?(path)
FileUtils.rm_rf(path) if File.exist?(path)
end

module Dashing
Expand Down