ruby 'requirect':无法加载此类文件--样品架/处理器(LoadError)

nuypyhwy  于 2023-01-12  发布在  Ruby
关注(0)|答案(1)|浏览(250)

我不是一个Ruby爱好者,所以这可能是一个101问题,我只是想使用一个碰巧用Ruby编写的实用程序。
我正在使用tilemaker,这是openstreetmap生态系统中的一个实用程序。它以mbtiles格式创建tiles。存储库附带了一个简单的实用程序,可以在浏览器上提供tiles,以测试您创建的文件。这个实用程序是用Ruby编写的,这正是我遇到的问题。
存储库的自述文件包含Server Utility的说明。安装说明如下:
(If如果您还没有安装它们,您需要安装Ruby和所需的gem来运行演示服务器(例如,在Ubuntu上,先安装sudo apt install sqlite3 libsqlite3-dev ruby ruby-dev,然后再安装sudo gem install sqlite3 cgi glug rack)。
我使用的是Debian11(在Qubes上,所以我不介意按照他们的建议运行sudo gem install)。我希望这与Ubuntu足够接近,但可能这与问题有关。
这是我得到的:

$ ruby server.rb ~/countries-raster.mbtiles 
Starting local server
Traceback (most recent call last):
        3: from server.rb:22:in `<main>'
        2: from server.rb:118:in `<class:MapServer>'
        1: from /usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb:85:in `require'
/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb:85:in `require': cannot load such file -- rack/handler (LoadError)

我错过了什么?谢谢。

0md85ypi

0md85ypi1#

要在您的用户下进行更好的设置,可以执行以下操作:
1.确保ruby在你的用户下运行:

ruby -v # 2.7 or higher is better

1.然后在脚本server.rb之外创建一个名为Gemfile的文件:

# Gemfile
source "https://rubygems.org"

gem "rack"
gem "sqlite3"
gem "cgi"
gem "glug"

1.之后,确保安装了bundler(这是用于管理gem版本控制的gem),方法是:

gem install bundler

如果您遇到权限错误,是因为您的ruby程序是在root用户下运行的,所以您可以通过sudo bundle install使用,但其他任何程序都必须在sudo下运行,或者您可以安装和设置rvm,它将在您的用户下安装和配置ruby
1.安装后,您可以拨打:

bundle install 
# will install all the gems needed and will lock the latest versions for you inside Gemfile.lock

1.通过以下方式运行服务器:

bundle exec ruby server.rb

通过运行bundle exec命令ruby使用Gemfile.lock安装的gem,这保证了你的软件需要特定的版本,避免冲突或其他问题。

相关问题