Как использовать другой Webrick (не версию с текущим Ruby) вне его использования в Rails - PullRequest
3 голосов
/ 02 августа 2020

Я пытаюсь использовать Webrick как простой веб-сервер на моем локальном компьютере. Однако вместо использования Webrick, включенного в Ruby 2.6, я хотел бы использовать его копию. Я использую упаковщик, и вот мой Gemfile:

gem 'webrick', path: '/Users/jht/jht-webrick/webrick'

, и когда я делаю bundle info webrick, я получаю:

  * webrick (1.6.0)
    Summary: HTTP server toolkit
    Homepage: https://www.ruby-lang.org
    Path: /Users/jht/jht-webrick/webrick 

Однако, когда я запускаю его, он использует включенный ruby 2.6 вебрик. Как я могу заставить его использовать веб-прием, указанный в моем Gemfile?

Я использую этот скрипт (и вы можете видеть, где я пытался обновить путь загрузки и напрямую загрузить исходный код):

# $LOAD_PATH.unshift('../webrick/')

# puts "load path: #{$LOAD_PATH}"

# load '../webrick/lib/webrick.rb'

require 'webrick'

root = File.expand_path './public_html'
server = WEBrick::HTTPServer.new :Port => 8000, :DocumentRoot => root

trap 'INT' do server.shutdown end

server.start

Ответы [ 2 ]

4 голосов
/ 07 августа 2020

Чтобы пакет разрешал зависимость, я думаю, вам нужно добавить эту настройку:

require "bundler"
Bundler.setup

вверху ruby файла сценария

0 голосов
/ 12 августа 2020

при использовании бандлера для принудительного применения версий rubygems, затем вы должны запускать его в контексте бандлера.

это можно сделать двумя способами:

  1. в исполняемом код, добавив

    require "bundler"
    Bundler.setup
    
  2. в команду выполнения, вызвав ее с помощью сборщика, такого как bundle exec ruby src/main.rb

...