无法加载此类文件 – rack / handler / puma
我的设置和错误
当我用机架和美洲狮开始我的Sinatra应用程序时出错。 我的config.ru
文件如下所示:
#\ -s puma require './controller/main.rb' run Sinatra::Application
所以,当我现在使用rackup时,我收到此错误:
/home/username/.rvm/gems/ruby-1.9.3-p392/gems/rack-1.5.2/lib/rack/handler.rb:76:in“require”:无法加载此类文件 – 机架/处理程序/ puma(LoadError)
我用ruby 1.9.3p392(2013-02-22修订版39386)[i686-linux]
到目前为止我尝试了什么
我的第一个想法是我忘了安装美洲狮,或者美洲狮在某种程度上被打破了。 所以我尝试过:
puma -v puma version 2.0.1
我直接用ruby开始它:
ruby controller/main.rb Puma 2.0.1 starting... * Min threads: 0, max threads: 16 * Environment: development * Listening on tcp://localhost:4567
我发现了这个美洲狮问题,但我找不到真正的解决方案。
最后我的问题
-
为什么要发生这种情况?
-
我怎样才能解决这个问题?
-
沙箱,这样他们就不会与Rubygems安装的那些混在一起。
删除当前的捆绑包东西
rm -rf .bundle Gemfile.lock bin vendor
然后跑
bundle install --binstubs --path vendor
这会将所有gem安装到
vendor/RUBY-ENGINE/VERSION/
并将所有可执行文件安装到bin
目录中。 这些是通过gem
命令安装的,它们将是系统范围的。 -
使用
bundle exec
运行,但由于使用了--binstubs
命令,您可以改为运行bin/rackup config.ru
通过使用bundle exec
或bin/
一个可执行文件bin/
你告诉Bundler只使用它安装的gem。 如果您使用Bundler安装Puma,那么它将使用Bundler安装的Rack安装Puma处理程序。 但是,你可能会有Rubygems安装的另一个版本的Rack(通过gem install rack -r
) 没有处理程序。 要获得正确的沙箱,请对项目的gem进行沙箱处理,并始终从bin/
目录运行。 如果你需要ruby
命令然后使用bundle exec ruby…
而Bundler将为项目加载正确的gem。
我现在每个项目都这样做,只通过gem install…
安装gems gem install…
如果我需要系统范围。 它还确保你不会遗漏Gemfile中的任何gem,因为你的系统上已有它们 – 部署时没有令人讨厌的惊喜!
尽量确保你拥有
require "rack/handler/puma"
这是一个
Rack::Handler::Puma.run
需要。
玩这个http://gabebw.com/blog/2015/08/10/advanced-rack