3

コードを openshift rails にデプロイしていましたが、アセットが適切に取得されませんでした。JavaScriptも画像もロードしていません。それを機能させる方法は?

4

1 に答える 1

6

最初に確認する必要があるのは、アセットがアプリケーションに存在するかどうかです。このスクリプトbuild.shは、スクリプト (次に説明)の前に実行されます。フォルダーのシンボリックリンクを作成しようとしpublic/assetsます(これの背後にある理由は次のとおりです)。そのディレクトリがあったとしても、rakeタスクは機能します。資産はプッシュごとに消去されます。

git リポジトリにプッシュするたびに、アセットがコンパイルされているはずです。これは、Ruby 1.9 カートリッジ内のこのスクリプトによって処理されます (これはサービスによって実行され、制御することはできません)。ご覧のとおりbundle exec rake assets:precompile、Gemfile がある限り実行されます (これはすべての Rails アプリに当てはまるはずです)。

以上のことを踏まえて、最初にすべきことは、ディレクトリ.openshift/action_hooksを上書きする可能性のあるものを実行していないことを確認することです。ここpublic/assetsにあるものと比較できます。

次に行うべきことは、実際に OpenShift ホストのディレクトリを確認することです。アプリに SSH 接続することでこれを行うことができます (手順はこちら)。次に、public/assetsディレクトリを確認します。注: 一部の出力は で短縮されてい....ます。

# First we make sure it is a symlink.
> file $OPENSHIFT_REPO_DIR/public/assets
..../app-root/runtime/repo/public/assets: symbolic link to `..../data//assets'

# Then we see if there is anything in it
> ls $OPENSHIFT_REPO_DIR/public/assets
.... (should have a bunch of.js, .css, etc files)

そのディレクトリが空の場合、アセットのコンパイルに問題がある可能性があります。出力に注意を払い、git push失敗していることを示す兆候があるかどうかを確認する必要があります ( teelike:を使用して出力をキャプチャすることをお勧めしますgit push 2>&1 | tee git_push.log)。ディレクトリにアセットがある場合は、次の手順に従ってログを確認してください。

それでも問題が解決しない場合は、IRC チャンネルにアクセスしてください。誰かが直接助けてくれるはずです。

于 2012-09-06T01:26:01.653 に答える