• Home

  • Custom Ecommerce
  • Application Development
  • Database Consulting
  • Cloud Hosting
  • Systems Integration
  • Legacy Business Systems
  • Security & Compliance
  • GIS

  • Expertise

  • About Us
  • Our Team
  • Clients
  • Blog
  • Careers

  • CasePointer

  • VisionPort

  • Contact
  • Our Blog

    Ongoing observations by End Point Dev people

    .rbenv and Passenger: Working through an Upgrade

    Steph Skardal

    By Steph Skardal
    June 22, 2012

    Yesterday, I worked on upgrading the Piggybak demo application, which runs on Piggybak, an open source Ruby on Rails ecommerce plugin developed and maintained by End Point. The demo was running on Ruby 1.8.7 and Rails 3.1.3, but I wanted to update it to Ruby 1.9.* and Rails 3.2.6 to take advantage of improved performance in Ruby and the recent Rails security updates. I also wanted to update the Piggybak version, since there have been several recent bug fixes and commits.

    One of the constraints with the upgrade was that I wanted to upgrade via .rbenv, because End Point has been happily using .rbenv recently. Below are the steps Richard and I went through for the upgrade, as well as a minor Passenger issue.

    Step 1: .rbenv Installation

    First, I followed the instructions here to install rbenv and Ruby 1.9.3 locally under the user that Piggybak runs under (let’s call it the steph user). I set the local Ruby version to my local install. I also installed bundler using the local Ruby version.

    Step 2: bundle update

    Next, I blew away the existing bundle config for my application, as well as the installed bundler gem files for the application. I followed the standard steps to install and update the new gems with the local updated Ruby and updated Rails. Then I restarted the app.

    Step 3: Fail

    At this point, my application would not restart, and the backtrace complained of a Passenger issue, and it referenced Ruby 1.8. Richard and I investigated the errors and concluced that the application’s Passenger configuration was still referencing the system Ruby install and the outdated Passenger installation.

    Here’s where I hit the catch 22: I needed root access to update the passenger.conf as well as to install Passenger against Ruby 1.9.3. This defeated the purpose of using .rbenv and working with a local Ruby install only.

    Step 4: Local Passenger Installation

    To install Passenger against the local Ruby version, I decided to install it as the steph user. First, I installed the gem:

    gem install passenger
    

    Then, I went to the local installed version of Passenger to run the installation:

    cd /home/steph/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/passenger-3.0.13/bin
    ./passenger-install-apache2-module
    

    Next, I copied the passenger installation output to the passenger.conf file:

       LoadModule passenger_module /home/steph/.rbenv/versions/1.9.3-p194/lib/ruby/gems/\
         1.9.1/gems/passenger-3.0.13/ext/apache2/mod_passenger.so
       PassengerRoot /home/steph/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/passenger-3.0.13
       PassengerRuby /home/steph/.rbenv/versions/1.9.3-p194/bin/ruby
    

    With a server restart, the Piggybak demo was up and running on updated Ruby and Rails!

    Conclusion

    Retrospectively, I could have avoided the Passenger issue by installing Ruby 1.9.3 on the server as root, because there isn’t much else on the server. But I like using .rbenv and it’s possible that a Passenger upgrade won’t be required with every Ruby update, so the new Passenger configuration is acceptable [to me, for now].

    hosting piggybak rails


    Comments