2

私はユニコーンを使用してsinatraアプリケーションを提供しており、フロントエンドはbootstrap.jsjQuery(UI)を使用しています。

現在、ローカル マシンでアプリケーションを実行し、ローカル マシンからページにアクセスすると、すべて問題なく動作します。しかし、LAN 上の自分のマシンから同僚に接続してもらいましたが、その結果は異なります。何がロードされ、何がロードされないかは正確にはわかりませんが、1 つ確かなことは、すべての JavaScript がリモート マシンに送信されるわけではないということです。ホームページは jQueryUI タブを使用しますが、ページがサーバー以外のホストにロードされると、それらなしでレンダリングされます (代わりに、リンク付きの箇条書きリストがあります)。

ファイルは、Sinatra によって提供される ERB ファイル内の通常の HTML タグによって.js参照されます。<script>

unicorn からの出力は、js ファイルが要求され、正しく送信されていることを示しています (それぞれの HTTP 200 ステータスを取得しています)。

xxx.xxx.xxx.xxx - - [18/May/2012 09:41:12] "GET /js/jquery-1.7.2.min.js HTTP/1.1" 200 94840 0.0257
xxx.xxx.xxx.xxx - - [18/May/2012 09:41:12] "GET /js/jquery-ui-1.8.20.custom.min.js HTTP/1.1" 200 206731 0.0113
xxx.xxx.xxx.xxx - - [18/May/2012 09:41:12] "GET /js/bootstrap.js HTTP/1.1" 200 50089 0.0056

各ファイルのローカル権限は 755 で、[app_root]/public/js にあります。

私の問題シナトラやユニコーンに関係していない可能性はもちろんありますが、これが現時点での私の状況です。調査すべき点があるかどうか、または質問にさらに情報を追加する必要があるかどうかをお知らせください。

4

2 に答える 2

1

問題はDSLリンクにあると思います。コードに記述されていない場合、Sinatraはその/js/jquery-1.7.2.min.jsルートを理解できませんが、静的ファイルになるとすぐにこれを行うことができます:

set :public, File.dirname(__FILE__) + '/js'

/jsこれは、フォルダー内のすべてのファイルが静的であり、適切な方法で提供される必要があることを Sinatra に伝えます

于 2012-05-18T13:58:22.950 に答える
0

私は物事をうまく機能させることができましたが、そもそも何が問題の原因だったのかまだ興味があります.

私は自分のローカル マシンである MacBook Pro で Unicorn を実行していました。Ubuntu イメージを使用して AWS インスタンスをスピンアップし、そこにアプリをインストールすることにしました (これは、アプリケーションが完了した後の使用例です)。構成をまったく変更しなくても、アプリケーションは AWS ノードで完全に動作します。どうやら MBP は Web サーバーになる方法を知らないようです。

これがなぜなのかについて誰かが洞察を持っている場合は、ぜひ聞いてみたいと思いますが、問題は解決したので、この回答を受け入れます.

于 2012-05-18T18:28:01.963 に答える