我不是一个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)
我错过了什么?谢谢。
1条答案
按热度按时间0md85ypi1#
要在您的用户下进行更好的设置,可以执行以下操作:
1.确保ruby在你的用户下运行:
1.然后在脚本
server.rb
之外创建一个名为Gemfile
的文件:1.之后,确保安装了
bundler
(这是用于管理gem版本控制的gem),方法是:如果您遇到权限错误,是因为您的
ruby
程序是在root
用户下运行的,所以您可以通过sudo bundle install
使用,但其他任何程序都必须在sudo
下运行,或者您可以安装和设置rvm,它将在您的用户下安装和配置ruby
。1.安装后,您可以拨打:
1.通过以下方式运行服务器:
通过运行
bundle exec
命令ruby使用Gemfile.lock
安装的gem,这保证了你的软件需要特定的版本,避免冲突或其他问题。