如何解决捆绑器不适用于机架应用程序
| 这是我的代码# config.ru
require \"rubygems\"
require \"bundler\"
Bundler.setup
Bundler.require
FooApp = Proc.new do |env|
[200,{\'Content-Type\' => \'text/plain\'},\"foo\"]
end
Routes = Rack::Mount::RouteSet.new do |set|
set.add_route FooApp,{ :request_method => \'GET\',:path_info => %r{^/foo$} },{},:foo
end
run Routes
我的Gemfile看起来像这样
source :rubygems
gem \'rack-mount\'
我做了捆绑安装,生成了Gemfile.lock。
当我跑步
rackup config.ru
我收到以下错误
uninitialized constant Rack::Mount (NameError)
如果我删除对捆绑程序的依赖,则该代码有效。但是我想打捆机工作。这段代码是大型应用程序的一种小形式。
解决方法
Bundler.require
尝试在gem \lib
目录中加载一个名为rack-mount.rb
(与gem的名称相同)的文件。那是Rubygems约定。对于大多数Rack gem,这是行不通的,因为它们不包含此类文件。
取而代之的是命名空间。例如,rack-mount \的ѭ6文件夹包含一个rack
文件夹,其中包含一个名为mount.rb
的文件(请参阅GitHub上的rack-mount / tree / master / lib)。
要解决此问题,您必须告诉Bundler需要哪个文件:
source :rubygems
gem \"rack-mount\",:require => \"rack/mount\"
Bundler文档包含有关如何编写Gemfile的更多信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。