Не удалось настроить веб-сервер https + sinatra + opalrb (звездочки) - PullRequest
0 голосов
/ 22 октября 2019

Я хочу, чтобы мое простое приложение sinatra с OpalRb Sprockets работало через веб-протокол https.

Но оно не работает. Для каждого сгенерированного опалового js-файла возвращается 404:

[22 / Oct / 2019: 17: 48: 17 HDT] "GET /assets/application.self-1919f5f7df8787d30bea01e4777248655a1ffc0533dcb37dedd4f797c018e19c.js / /1.1 "404 555

[22 / Oct / 2019: 17: 48: 16 HDT]" GET /assets/async/countdown.self-1a8c3d3b24219f07fe1d619745a23543afbc1862ed427e52d884ba406a0173ac.js 1004 = HTTP4*https://localhost:4443/ -> /assets/async/countdown.self-1a8c3d3b24219f07fe1d619745a23543afbc1862ed427e52d884ba406a0173ac.js?body=1 [2019-10-22 17:48:16] DEBUG Rack :: Handler :: WEBrick вызывается. 127.0.0.1 - - [22 / Октябрь / 2019: 17: 48: 16 -0900] «GET /assets/async/task.self-51bf482f4ed7ef3fb4dcdc63597ba56150e816bbdd68d6bc09c5e5f30f779723.js?body=1 ...

Я предполагаю, что пути звездочек не подключены к приложению sinatra. Я запускаю сервер с: "bundle exec rackup"

require 'webrick/https'
require 'webrick'

require 'bundler'

Bundler.require

### OPAL SPROCKETS ###

opal = Opal::Sprockets::Server.new {|s|
  s.append_path 'app'
  s.main = 'application'
}

sprockets   = opal.sprockets
prefix      = '/assets'

# WEBRICK HTTPS

CERT_PATH = 'cert/'.freeze

root = File.expand_path File.dirname(__FILE__) + "/public"

puts root

webrick_options = {
  Host: '0.0.0.0',
  Port: 4443,
  Logger: WEBrick::Log.new($stderr, WEBrick::Log::DEBUG),
#  DocumentRoot:  root,
  SSLEnable: true,
  SSLVerifyClient: OpenSSL::SSL::VERIFY_NONE,
  SSLCertificate: OpenSSL::X509::Certificate.new(File.open(File.join(CERT_PATH, 'chip.crt')).read),
  SSLPrivateKey: OpenSSL::PKey::RSA.new(File.open(File.join(CERT_PATH, 'chip.key')).read),
  SSLCertName: [['EN', '0.0.0.0']]
}

### APPLICATION ###

get '/' do
  @str_js_include = Opal::Sprockets.javascript_include_tag('application', sprockets: sprockets, prefix: prefix, debug: true).to_s

  erb :main
end

get '/test' do
  erb :test
end

get '/login' do
  erb :login
end

map prefix do
  # Rack::Handler::WEBrick.run sprockets - tried to do like that, no success
  run sprockets
end


Rack::Handler::WEBrick.run Sinatra::Application, webrick_options```
...