OpalRb Sprockets を使用したシンプルなシナトラ アプリケーションを webrick https で動作させたいと考えています。
しかし、うまくいきません。生成された opal js ファイルごとに 404 が返されます。
[2019/10/22:17:48:17 HDT] "GET /assets/application.self-1919f5f7df8787d30bea01e4777248655a1ffc0533dcb37dedd4f797c018e19c.js?body=1 HTTP/1.1" 404 555
[2019/10/22:17:48:16 HDT] "GET /assets/async/countdown.self-1a8c3d3b24219f07fe1d619745a23543afbc1862ed427e52d884ba406a0173ac.js?body=1 HTTP/1.1" 404 564 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/Oct/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```