Class: Nginxtra::Actions::Rails::Server
- Inherits:
-
Object
- Object
- Nginxtra::Actions::Rails::Server
- Includes:
- Nginxtra::Action
- Defined in:
- lib/nginxtra/actions/rails/server.rb
Instance Method Summary collapse
- #basedir ⇒ Object
- #config_path ⇒ Object
- #ensure_in_rails_app ⇒ Object
- #ensure_server_gem_installed ⇒ Object
- #in_rails_app? ⇒ Boolean
- #passenger_installed? ⇒ Boolean
- #server ⇒ Object
- #start_nginxtra ⇒ Object
- #start_verbose_output ⇒ Object
- #stop_nginxtra ⇒ Object
- #stop_verbose_output ⇒ Object
- #verbose_thread ⇒ Object
- #wait_till_finished ⇒ Object
- #workingdir ⇒ Object
Methods included from Nginxtra::Action
Instance Method Details
#basedir ⇒ Object
63 64 65 |
# File 'lib/nginxtra/actions/rails/server.rb', line 63 def basedir File.absolute_path "tmp/nginxtra" end |
#config_path ⇒ Object
67 68 69 |
# File 'lib/nginxtra/actions/rails/server.rb', line 67 def config_path File.absolute_path "tmp/nginxtra.conf.rb" end |
#ensure_in_rails_app ⇒ Object
21 22 23 24 25 |
# File 'lib/nginxtra/actions/rails/server.rb', line 21 def ensure_in_rails_app unless in_rails_app? raise Nginxtra::Error::IllegalState.new "You must be in a rails root directory to run nginxtra_rails." end end |
#ensure_server_gem_installed ⇒ Object
27 28 29 30 31 |
# File 'lib/nginxtra/actions/rails/server.rb', line 27 def ensure_server_gem_installed unless passenger_installed? raise Nginxtra::Error::IllegalState.new "Please 'gem install passenger' to continue." end end |
#in_rails_app? ⇒ Boolean
75 76 77 78 |
# File 'lib/nginxtra/actions/rails/server.rb', line 75 def in_rails_app? return true if File.exists? "script/rails" File.exists?("script/server") && File.exists?("app") end |
#passenger_installed? ⇒ Boolean
59 60 61 |
# File 'lib/nginxtra/actions/rails/server.rb', line 59 def passenger_installed? Gem::Specification.find_by_name("passenger") end |
#server ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/nginxtra/actions/rails/server.rb', line 7 def server ensure_in_rails_app ensure_server_gem_installed begin start_verbose_output start_nginxtra wait_till_finished ensure stop_verbose_output stop_nginxtra end end |
#start_nginxtra ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/nginxtra/actions/rails/server.rb', line 33 def start_nginxtra port = @thor.["port"] environment = @thor.["environment"] @thor.empty_directory "tmp" unless File.directory? "tmp" @thor.empty_directory "tmp/nginxtra" unless File.directory? "tmp/nginxtra" @thor.create_file config_path, %{nginxtra.simple_config do rails :port => #{port}, :environment => "#{environment}" end }, :force => true @thor.invoke Nginxtra::CLI, ["start"], :basedir => basedir, :config => config_path, :workingdir => workingdir, :"non-interactive" => true @thor.say "Listening on http://localhost:#{port}/" @thor.say "Environment: #{environment}" end |
#start_verbose_output ⇒ Object
80 81 82 83 84 |
# File 'lib/nginxtra/actions/rails/server.rb', line 80 def start_verbose_output return unless @thor.["verbose"] @verbose_run = true Thread.new { verbose_thread } end |
#stop_nginxtra ⇒ Object
55 56 57 |
# File 'lib/nginxtra/actions/rails/server.rb', line 55 def stop_nginxtra @thor.invoke Nginxtra::CLI, ["stop"], :basedir => basedir, :config => config_path, :workingdir => workingdir, :"non-interactive" => true end |
#stop_verbose_output ⇒ Object
86 87 88 89 |
# File 'lib/nginxtra/actions/rails/server.rb', line 86 def stop_verbose_output return unless @thor.["verbose"] @verbose_run = false end |
#verbose_thread ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/nginxtra/actions/rails/server.rb', line 91 def verbose_thread environment = @thor.["environment"] log_path = "log/#{environment}.log" if File.exists? log_path log = File.open log_path, "r" log.seek 0, IO::SEEK_END else while @verbose_run if File.exists? log_path log = File.open log_path, "r" break end sleep 0.1 end end while @verbose_run select [log] line = log.gets if line puts line puts line while(line = log.gets) end sleep 0.1 end ensure log.close if log end |
#wait_till_finished ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/nginxtra/actions/rails/server.rb', line 47 def wait_till_finished @thor.say "Ctrl-C or Ctrl-D to shutdown server" next until $stdin.getc.nil? @thor.say "Captured Ctrl-D..." rescue Interrupt @thor.say "Captured Ctrl-C..." end |
#workingdir ⇒ Object
71 72 73 |
# File 'lib/nginxtra/actions/rails/server.rb', line 71 def workingdir File.absolute_path "." end |