0

I am trying to deploy a rails 3 app to a windows machine (yes it has to be windows, I cannot use linux)

I decided to try and use Mongrel + Apache (willing to try other setups if anyone knows one that works).

I have mongrel installed and I can run rails server mongrel and run my app fine. However when I try to start mongrel as a windows service using

mongrel_rails service::install -N mongrel1 -e production -p 3001 -c mydirectory`

I run into trouble. The server starts fine but when I try to get onto the web page I get the following error generated in my mongrel.log file.

Error calling Dispatcher.dispatch #<NameError: uninitialized constant ActionController::CgiRequest>
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel/rails.rb:76:in `block in process'
<internal:prelude>:10:in `synchronize'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel/rails.rb:74:in `process'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel.rb:165:in `block in process_client'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel.rb:164:in `each'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel.rb:164:in `process_client'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/mongrel-1.2.0.pre2-x86-mingw32/lib/mongrel.rb:291:in `block (2 levels) in run'

I have tried to read up on this but all the setup guides seem to be very dated.

Seki
  • 11,135
  • 7
  • 46
  • 70
Random Developer
  • 175
  • 5
  • 17

1 Answers1

0

I am running a Rails 3 app on Windows (Win7) using Apache + Mongrel. Here is perhaps another approach. In httpd.conf I set DocumentRoot as the path to my rails app. The Directory tag is then set to whatever Document Root is. Then add a VirtualHost tag as follows:

<VirtualHost localhost:80>
  Servername YourAppServer
  DocumentRoot "same path as before"
  ProxyPass / http://localhost:3000/
  ProxyPassReverse / http://localhost:3000/
  ProxyPreserveHost On
</VirtualHost>"

ServerName value I think is arbitrary.

You also need to add: LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so

I suppose that if you are using port 3001 instead of 3000, you make the appropriate substitutions.

Then start everything (from your app folder) with 'rails server -e production -p 3001' (Apache should already be running)

dallma77
  • 9
  • 5
  • Thanks for the reply, I have read that mongrel can only handle one request at once so it is best to setup 3 mongrel instances and use apache to distribute requests between them. I am trying to start the mongrel instances as windows services so that I don't have to have 3 console windows open all the time. I can start a mongrel server as you have described, but I cannot start it as a widows service. – Random Developer May 18 '12 at 14:35