cannot load such file — rack/handler/puma

前端 未结 2 391
情书的邮戳
情书的邮戳 2020-12-31 21:31

My setup and the error

I get an error when I start my Sinatra application with rackup and puma. My config.ru file looks like this:

#\\         


        
相关标签:
2条回答
  • 2020-12-31 22:02
    1. Sandbox the gems so they don't get mixed up with those installed by Rubygems.

      Remove current bundler stuff with

      rm -rf .bundle Gemfile.lock bin vendor
      

      and then run

      bundle install --binstubs --path vendor
      

      This installs all gems into vendor/RUBY-ENGINE/VERSION/ and all executables into the bin dir. These are separate from the ones installed via the gem command, which will be system wide.

    2. Run using bundle exec, but since the --binstubs command was used you can instead run

      bin/rackup config.ru
      

    By using bundle exec or one of the executables from bin/ you're telling Bundler to only use the gems that it installed. If you installed Puma with Bundler then it will install the Puma handler with the Rack that Bundler installed. But, you'll probably have another version of Rack installed by Rubygems (via gem install rack -r) that doesn't have the handler. To get the right one, sandbox your project's gems and always run stuff from the bin/ directory. If you need the ruby command then use bundle exec ruby… and Bundler will load the correct gems for the project.

    I do this with every project now and only install gems via gem install… if I need them system wide. It also makes sure you don't miss any gems out of the Gemfile because you had them already available on your system - no nasty surprises on deployment!

    0 讨论(0)
  • 2020-12-31 22:04

    Try to be sure you have

    require "rack/handler/puma"
    

    This is one that

    Rack::Handler::Puma.run
    

    needs.

    Play with this http://gabebw.com/blog/2015/08/10/advanced-rack

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