Update: Make sure you update Rubygems using
sudo gem update --system.
Whilst I’ve been learning more about Rails 3, I’ve been using the built in
rails server to run my code. Today I tried to run my Rails 3 app through Passenger on Apache, and immediately hit an error page:
textuninitialized constant Rack::Runtime
It turns out that Passenger notices Rails’ new config.ru file, causing it to run as a Rack application. This requires a slight change in the app’s VirtualHost entry. The
RailsEnv setting now becomes
But that wasn’t all. My development machine was still running Passenger 2.2.7, which wouldn’t support Rails 3. To ensure a clean slate, I removed the old versions of Passenger and installed the latest build (2.2.11 at the time of writing). Once installed, I ran the standard Passenger installation script and updated apache2.conf:
```bash$ sudo gem update –system
$ sudo gem uninstall passenger
# Remove all versions of Passenger
$ sudo gem install passenger
$ sudo passenger-install-apache2-module```
NOTE: Your paths may be different. Use the config generated by Passenger’s install script)
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.11/ext/apache2/mod_passenger.so
After a quick restart of Apache, Passenger kicked in and my new Rails 3 app was up and running!