Skip to content
This repository has been archived by the owner on Mar 7, 2018. It is now read-only.

Commit

Permalink
Switch server to puma and adapt command line
Browse files Browse the repository at this point in the history
- adapt command line to use pumactl
- change command line options to support pumactl daemon mode with configurable pidfile
- adapt cli_test.rb to the new setup
- use newest rubies and jruby in travis builds
  • Loading branch information
qbrossard committed Feb 15, 2016
1 parent 8a695bd commit 0afb283
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 29 deletions.
8 changes: 4 additions & 4 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
language: ruby
rvm:
- 2.1.2
- 2.0.0
- 1.9.3

- 2.3.0
- 2.2.4
- 2.1.8
- jruby-19mode
script: "rake test"
2 changes: 1 addition & 1 deletion dashing.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Gem::Specification.new do |s|
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('puma', '~> 2.16.0')
s.add_dependency('rufus-scheduler', '~> 2.0.24')
s.add_dependency('thor', '> 0.18.1')
s.add_dependency('sprockets', '~> 2.10.1')
Expand Down
13 changes: 1 addition & 12 deletions lib/dashing/app.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
require 'sass'
require 'json'
require 'yaml'
require 'thin'

SCHEDULER = Rufus::Scheduler.new

Expand Down Expand Up @@ -34,7 +33,7 @@ def authenticated?(token)
set :sprockets, Sprockets::Environment.new(settings.root)
set :assets_prefix, '/assets'
set :digest_assets, false
set server: 'thin', connections: [], history_file: 'history.yml'
set server: 'puma', connections: [], history_file: 'history.yml'
set :public_folder, File.join(settings.root, 'public')
set :views, File.join(settings.root, 'dashboards')
set :default_dashboard, nil
Expand Down Expand Up @@ -123,16 +122,6 @@ def authenticated?(token)
end
end

Thin::Server.class_eval do
def stop_with_connection_closing
Sinatra::Application.settings.connections.dup.each(&:close)
stop_without_connection_closing
end

alias_method :stop_without_connection_closing, :stop
alias_method :stop, :stop_with_connection_closing
end

def send_event(id, body, target=nil)
body[:id] = id
body[:updatedAt] ||= Time.now.to_i
Expand Down
13 changes: 8 additions & 5 deletions lib/dashing/cli.rb
Original file line number Diff line number Diff line change
Expand Up @@ -57,16 +57,19 @@ def install(gist_id, *args)
desc "start", "Starts the server in style!"
method_option :job_path, :desc => "Specify the directory where jobs are stored"
def start(*args)
port_option = args.include?('-p') ? '' : ' -p 3030'
#TODO use correct dir for pid.
daemon_pidfile = args.include?('-d') && !args.any? { |val| /^--pidfile/ =~ val } ? '--pidfile ./puma.pid' : ''
args = args.join(' ')
command = "bundle exec thin -R config.ru start#{port_option} #{args}"
command = "bundle exec pumactl start #{args} #{daemon_pidfile}"
command.prepend "export JOB_PATH=#{options[:job_path]}; " if options[:job_path]
run_command(command)
end

desc "stop", "Stops the thin server"
def stop
command = "bundle exec thin stop"
desc "stop", "Stops the puma server (daemon mode only)"
def stop(*args)
args = args.join(' ')
daemon_pidfile = !args.include?('--pidfile') ? '--pidfile ./puma.pid' : args
command = "bundle exec pumactl #{daemon_pidfile} stop"
run_command(command)
end

Expand Down
26 changes: 19 additions & 7 deletions test/cli_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -101,31 +101,43 @@ def test_install_task_warns_when_gist_not_found
assert_includes output, 'Could not find gist at '
end

def test_start_task_starts_thin_with_default_port
command = 'bundle exec thin -R config.ru start -p 3030 '
def test_start_task_starts_puma_with_default_port
command = 'bundle exec pumactl start '
@cli.stubs(:run_command).with(command).once
@cli.start
end

def test_start_task_starts_thin_with_specified_port
command = 'bundle exec thin -R config.ru start -p 2020'
def test_start_task_starts_puma_in_daemon_mode
command = 'bundle exec pumactl start -d --pidfile ./puma.pid'
@cli.stubs(:run_command).with(command).once
@cli.start('-d')
end

def test_start_task_starts_puma_in_daemon_mode_with_custom_pidfile
command = 'bundle exec pumactl start -d --pidfile /tmp/pids/puma.pid '
@cli.stubs(:run_command).with(command).once
@cli.start('-d', '--pidfile /tmp/pids/puma.pid')
end

def test_start_task_starts_puma_with_specified_port
command = 'bundle exec pumactl start -p 2020 '
@cli.stubs(:run_command).with(command).once
@cli.start('-p', '2020')
end

def test_start_task_supports_job_path_option
commands = [
'export JOB_PATH=other_spot; ',
'bundle exec thin -R config.ru start -p 3030 '
'bundle exec pumactl start '
]

@cli.stubs(:options).returns(job_path: 'other_spot')
@cli.stubs(:run_command).with(commands.join('')).once
@cli.start
end

def test_stop_task_stops_thin_server
@cli.stubs(:run_command).with('bundle exec thin stop')
def test_stop_task_stops_puma_server
@cli.stubs(:run_command).with('bundle exec pumactl --pidfile ./puma.pid stop')
@cli.stop
end

Expand Down

0 comments on commit 0afb283

Please sign in to comment.