Phusion Passenger Error: You have activated rack 1.2.1, but your Gemfile requires rack 1.2.2

后端 未结 9 2025
清酒与你
清酒与你 2020-12-23 21:43

I\'m trying to run a Ruby on Rails app on a Dreamhost shared server. All is well so far except one weird bug I have not been able to unravel.

Sometimes when I visit

相关标签:
9条回答
  • 2020-12-23 22:23

    try to restart your server after edit in your Gemfile and put this: gem 'rack', '1.2.1'

    0 讨论(0)
  • 2020-12-23 22:30

    After long periods of inactivity, I've been receiving a similar error for a couple of Sinatra applications on a DreamHost VPS:

    Phusion Passenger Error: You have activated rack 1.2.1, but your Gemfile requires rack 1.3.0.

    Like how @aren55555 described, if you simply refresh the page, the error goes away. Here is something that I discovered about the server configuration:

    [psXXXXX]$ gem env
    RubyGems Environment:
      - RUBYGEMS VERSION: 1.3.6
      - RUBY VERSION: 1.8.7 (2008-08-11 patchlevel 72) [x86_64-linux]
      - INSTALLATION DIRECTORY: /home/XXXXXXXXX/.gems/
      - RUBY EXECUTABLE: /usr/bin/ruby1.8
      - EXECUTABLE DIRECTORY: /home/XXXXXXXXX/.gems/bin
      - RUBYGEMS PLATFORMS:
        - ruby
        - x86_64-linux
      - GEM PATHS:
         - /home/XXXXXXXXX/.gems/               <-- Rack 1.3.0 Gem was installed here
         - /usr/lib/ruby/gems/1.8               <-- Rack 1.2.1 Gem was installed here
      - GEM CONFIGURATION:
         - :update_sources => true
         - :verbose => true
         - :benchmark => false
         - :backtrace => false
         - :bulk_threshold => 1000
      - REMOTE SOURCES:
         - http://rubygems.org/
    

    My guess as to what was happening is, after Passenger "wakes up", for some reason it's looking first (or perhaps only) to the Gems at the system-level, selecting Rack 1.2.1 as the latest version. My short-term hacky solution was simply to install Rack 1.3.0 there:

    gem install rack -v 1.3.0 --install-dir /usr/lib/ruby/gems/1.8

    It seems to have worked. Hope this is helpful to anyone else tearing their hair out there.

    0 讨论(0)
  • 2020-12-23 22:32

    I solved this way on Dreamhost:

    Remove from Gemfile any line: gem 'rack', ....

    rm Gemfile.lock
    rm -rf .bundle
    rm -rf  vendor/bundle
    

    install / use the gems locally and regenerates the file 'Gemfile.lock' with:

    bundle install
    

    install gems in vendor/bundle

    bundle install --deployment
    

    restart:

    touch tmp/restart.txt
    
    0 讨论(0)
  • 2020-12-23 22:34

    I just ran into this problem on Dreamhost. The problem is that the Dreamhost server has rack 1.2.1 installed and your Gemfile is loading 1.2.2. I found that if I just install rack:

    gem install rack
    

    Then the latest version of rack (1.2.2 as of right now) will get installed to your home gems folder (~/.gems). When passenger starts up, it will use 1.2.2.

    0 讨论(0)
  • 2020-12-23 22:35

    I fought with this problem for hours before eventually giving up on Passenger. Any new version of Rails will use a more recent Rack than Dreamhost's Passenger requires.

    However, you don't need Passenger to boot the app. Dreamhost provides some pretty easy (and working) instructions about how to boot the app using FastCGI, and you won't have to corrupt your Gemfile in the process:

    http://wiki.dreamhost.com/Rails_3#Using_FastCGI

    0 讨论(0)
  • 2020-12-23 22:40

    This works in Rails 3.0.x & Passenger 3.0.15

    create a file:

    config/setup_load_paths.rb
    

    with content:

    require 'rubygems'
    require 'bundler/setup'
    

    Passenger will then load the rack gem specified in your Gemfile.lock

    0 讨论(0)
提交回复
热议问题