Sinatra から複数の個別の angularjs アプリを提供する必要がある状況にあります。はい、これらは HTTP サーバーから提供する必要がありますが、それはオプションではありません。
これが私のディレクトリ設定です(例のために削除されています)
/SinatraApp
|-- public
| |-- App1
| | |-- scripts
| | |-- styles
| | |-- index.html
| |-- App2
| | |-- scripts
| | |-- styles
| | |-- index.html
|-- app.rb
最初に試した
set :public_folder, 'public'
そして、各インデックスルートでそれぞれ
get '/App1' do
send_file File.join(settings.public_folder, 'App1', 'index.html')
end
get '/App2' do
send_file File.join(settings.public_folder, 'App2', 'index.html')
end
しかし、これはうまくいきません。index.html ファイルは問題なく提供されますが、アセットは localhost/App1/scripts ではなく localhost/scripts にリンクされます。次に、ルートごとに :public_folder 設定を設定してみます。運がない。
get '/App1' do
set :public_folder, File.join('public', 'App1')
send_file File.join(settings.public_folder, 'index.html')
end
そして、私はこのエラーを受け取ります:
NoMethodError at /App1
undefined method `set' for #<Sinatra::Application:0x2548ba8>
file: app.rb location: block in <main> line: 73
別のAngularアプリ用に別のSinatraアプリを生成することを本当に避けたいので、これが機能する必要があります。考え?