Class: Rails::Server

Inherits:
Rack::Server
  • Object
show all
Defined in:
railties/lib/rails/commands/server.rb

Defined Under Namespace

Classes: Options

Instance Method Summary collapse

Constructor Details

#initializeServer

Returns a new instance of Server.



40
41
42
43
# File 'railties/lib/rails/commands/server.rb', line 40

def initialize(*)
  super
  set_environment
end

Instance Method Details

#appObject



45
46
47
# File 'railties/lib/rails/commands/server.rb', line 45

def app
  @app ||= super.respond_to?(:to_app) ? super.to_app : super
end

#default_optionsObject



89
90
91
92
93
94
95
96
97
98
# File 'railties/lib/rails/commands/server.rb', line 89

def default_options
  super.merge({
    :Port        => 3000,
    :environment => (ENV['RAILS_ENV'] || "development").dup,
    :daemonize   => false,
    :debugger    => false,
    :pid         => File.expand_path("tmp/pids/server.pid"),
    :config      => File.expand_path("config.ru")
  })
end

#log_pathObject



85
86
87
# File 'railties/lib/rails/commands/server.rb', line 85

def log_path
  "log/#{options[:environment]}.log"
end

#middlewareObject



77
78
79
80
81
82
83
# File 'railties/lib/rails/commands/server.rb', line 77

def middleware
  middlewares = []
  middlewares << [Rails::Rack::LogTailer, log_path] unless options[:daemonize]
  middlewares << [Rails::Rack::Debugger]  if options[:debugger]
  middlewares << [::Rack::ContentLength]
  Hash.new(middlewares)
end

#opt_parserObject



49
50
51
# File 'railties/lib/rails/commands/server.rb', line 49

def opt_parser
  Options.new
end

#set_environmentObject



53
54
55
# File 'railties/lib/rails/commands/server.rb', line 53

def set_environment
  ENV["RAILS_ENV"] ||= options[:environment]
end

#startObject



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'railties/lib/rails/commands/server.rb', line 57

def start
  url = "#{options[:SSLEnable] ? 'https' : 'http'}://#{options[:Host]}:#{options[:Port]}"
  puts "=> Booting #{ActiveSupport::Inflector.demodulize(server)}"
  puts "=> Rails #{Rails.version} application starting in #{Rails.env} on #{url}"
  puts "=> Call with -d to detach" unless options[:daemonize]
  trap(:INT) { exit }
  puts "=> Ctrl-C to shutdown server" unless options[:daemonize]

  #Create required tmp directories if not found
  %w(cache pids sessions sockets).each do |dir_to_make|
    FileUtils.mkdir_p(Rails.root.join('tmp', dir_to_make))
  end

  super
ensure
  # The '-h' option calls exit before @options is set.
  # If we call 'options' with it unset, we get double help banners.
  puts 'Exiting' unless @options && options[:daemonize]
end