When developing a Rails 4.1.6 project, I can start a Webrick server with:
rails s
Before the server has processed any requests, I can:
- Stop it with control-C
- Suspend it with control-Z
After the server has processed a request, I can still stop it with control-C, but I can no longer suspend it with control-Z. Typing control-Z echoes "^Z" to the terminal, but the server continues to run and will processes any requests it receives.
Why does control-Z fail to suspend the server once the server has processed a request?
Details
Starting the server:
$ rails s
Warning: NLS_LANG is not set. fallback to US7ASCII.
=> Booting WEBrick
=> Rails 4.1.6 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (--binding option)
=> Ctrl-C to shutdown server
[2014-10-28 15:16:09] INFO WEBrick 1.3.1
[2014-10-28 15:16:09] INFO ruby 2.1.2 (2014-05-08) [i686-linux]
[2014-10-28 15:16:09] INFO WEBrick::HTTPServer#start: pid=29538 port=3000
Control-Z before the server has processed any requests:
$ rails s
Warning: NLS_LANG is not set. fallback to US7ASCII.
=> Booting WEBrick
=> Rails 4.1.6 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (--binding option)
=> Ctrl-C to shutdown server
^Z
[1]+ Stopped rails s
Processing a request:
Started GET "/" for 127.0.0.1 at 2014-10-28 15:18:24 -0700
ActiveRecord::SchemaMigration Load (4.2ms) SELECT "SCHEMA_MIGRATIONS".* FROM "SCHEMA_MIGRATIONS"
(69.1ms) SELECT column_name AS name, data_type AS sql_type, data_default, nullable, virtual_column, hidden_column, data_type_owner AS sql_type_owner, DECODE(data_type, 'NUMBER', data_precision, 'FLOAT', data_precision, 'VARCHAR2', DECODE(char_used, 'C', char_length, data_length), 'RAW', DECODE(char_used, 'C', char_length, data_length), 'CHAR', DECODE(char_used, 'C', char_length, data_length), NULL) AS limit, DECODE(data_type, 'NUMBER', data_scale, NULL) AS scale FROM all_tab_cols WHERE owner = 'DOCUMENT_DIRECTOR_DEVELOPMENT' AND table_name = 'SCHEMA_MIGRATIONS' AND hidden_column = 'NO' ORDER BY column_id
Processing by IndexController#index as JSON
Rendered index/index.json.jbuilder (3.1ms)
Completed 200 OK in 10ms (Views: 9.9ms | ActiveRecord: 0.0ms)
Control-Z after processing a request, pressed many times because I mean business:
^Z^Z^Z^Z^Z^Z
Gemfile:
source 'https://rubygems.org'
source 'http://gems:9292'
gem 'activerecord-oracle_enhanced-adapter',
git: 'https://github.com/wconrad/oracle-enhanced.git',
branch: 'better-system-password-entry'
gem 'apipie-rails'
gem 'capistrano-rails', group: :development
gem 'capistrano-rvm'
gem 'cucumber-rails', :require => false, group: [:test]
gem 'cute_print'
gem 'database_cleaner', group: [:development, :test]
gem 'factory_girl_rails', group: [:development, :test]
gem 'jbuilder'
gem 'jsonpath', group: :test
gem 'maruku'
gem 'newrelic_rpm'
gem 'opacs_billing'
gem 'opacs_db'
gem 'rails'
gem 'rails-erd', group: :development
gem 'retryable'
gem 'rspec-rails', group: [:development, :test]
gem 'ruby-oci8'
gem 'sass-rails'
gem 'sdoc', group: :doc
gem 'simplecov', require: false, group: :test
gem 'spring', group: :development
gem 'versionist'
gem 'yard'
Versions:
- MRI 2.1.2
- Rails 4.1.6
- bash 4.2.37
- Debian GNU/Linux "wheezy"