0

開発環境で正しく動作する Heroku 上のアプリケーションがあります。ただし、Heroku では、JavaScript ファイルの 1 つが空で提供されます。これは、bootstrap_for_rails gem によって提供されるブートストラップ ファイルです。

/assets/twitter/bootstrap-a43574b1a9d30434438a56d88ff10a70.js?body=1
 ==> Returns empty file???

/assets/twitter/bootstrap-a43574b1a9d30434438a56d88ff10a70.js
 ==> Returns the js file correctly

Rails 3.2 とアセット パイプラインを使用し、Heroku で Cedar Stack を使用しています。

これが私の production.rb アセット設定です

プロダクション.rb

config.serve_static_assets = true

config.assets.debug = true

config.assets.compress = false

config.assets.compile = true

config.assets.digest = true

# Specifies the header that your server uses for sending files
# config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx

非常に単純な application.js ファイル:

アプリケーション.js

 //= require twitter/bootstrap

Gemfile

 group :assets do
   gem 'sass-rails',   '~> 3.2.3'
   gem 'coffee-rails', '~> 3.2.1'
   gem 'uglifier', '>= 1.0.3'
   gem 'twitter-bootstrap-rails', :git => 'https://github.com/seyhunak/twitter-bootstrap-rails.git'
 end

問題のある部分が何であるかを理解するのに苦労しています。ヘロク?レール?スプロケット? 設定?

action_dispatch.x_sendfile_header をコメントアウトするなど、product.rb 設定の多くを変更しようとしました。

ご協力いただきありがとうございます

4

3 に答える 3

2

これは設計によるものだと思います。実際のブートストラップ ファイル (私はここを見ています: https://github.com/seyhunak/twitter-bootstrap-rails/blob/master/vendor/assets/javascripts/twitter/bootstrap.js ) を見ると、何もありません。その中の実際のjs。「//= require」行を介して、どの.jsファイルを取り込んで一緒にコンパイルする必要があるかをスプロケットに通知するだけです。開発モードでは、これらのスプロケットのコメントはフロント エンドで非表示になります。これは、実際にはスプロケット/レールの実装の詳細に過ぎないためです。

要約すると、(app/lib/vendor)/assets/javascript ファイルを表示しようとすると、複数の "//= require" だけでいっぱいになっているファイルがフロントエンドで空に見えます。なぜなら rails/ sprockets は、フロントエンドでその実装の詳細を隠します。

于 2012-04-25T18:20:03.903 に答える
0

個々のファイルに直接アクセスするのはなぜですか? 本番環境では、パイプラインの考え方は、application.js マニフェスト ファイルで参照されているすべての個々のファイルを単一の application.js ファイルにマージすることです。

コードは .css 経由でのみ application.css ファイルを参照する必要がありますjavascript_include_tag。開発中は、ページのソースを個々の js ファイルとして表示すると、含まれているすべてのファイルが表示されますが、本番環境では、次のような単一の js ファイルが表示されます。

/assets/application-46187b46e120ec79eabd082567660eb1.js

于 2012-04-24T16:17:49.290 に答える
-1

Heroku のアセット グループで問題が発生しました。それを外側に移動してみて、それが機能するかどうかを確認してください。

于 2012-04-24T15:32:37.750 に答える