0

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アプリを生成することを本当に避けたいので、これが機能する必要があります。考え?

4

1 に答える 1

0

これに対する解決策を見つけました。config.ru ファイルと組み合わせて Sinatra のアプリケーションをモジュール化します。http://titusd.co.uk/2010/04/07/a-beginners-sinatra-tutorial/

于 2013-09-24T23:08:49.677 に答える