0

理由はわかりませんが、実行するたびにrake assets:precompileapplication.jsがコンパイルされません。本番モードで「application.jsがプリコンパイルされていません」というエラーが発生します。

それが何かを意味するなら、これが私のGemfileです:

source 'http://rubygems.org'

gem 'rails', '3.1.1'
gem 'eventmachine', '1.0.0.beta.4.1'
gem 'thin'
gem 'mysql'
gem 'win32-open3-19'
gem 'paperclip', '2.3.8'
#gem 'jammit'
gem 'jsmin'
gem 'will_paginate'

# Bundle edge Rails instead:
# gem 'rails',     :git => 'git://github.com/rails/rails.git'


# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 3.1.4'
  gem 'coffee-rails', '~> 3.1.1'
  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'

# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'

# Use unicorn as the web server
# gem 'unicorn'

# Deploy with Capistrano
# gem 'capistrano'

# To use debugger
# gem 'ruby-debug19', :require => 'ruby-debug'

group :test do
  # Pretty printed test output
  gem 'turn', :require => false
end

新しいRailsアプリを作成し、rakeアセットをテストしました:プリコンパイルして動作しています。関連ファイルに関する2つのアプリの唯一の違いは、インストールしたgemです。「application.js」は両方のアプリで同じです...environment.rbファイルも同様です。

また、assets / javascriptsディレクトリにランダムな.jsファイルを含めて「javascript_include_tag:application」を使用すると、開発モードで結果のURLの1つが次のようになります。/assets/../javascripts/anytimec.js?body=1明らかに404で失敗します。 .jsファイルが正しく参照されています。

アップデート:

Sprocketsが生成するものを調べると、「論理パス」がその場所で「../javascripts」を使用していることに気付きました。それぞれasset_paths.asset_for('application'、'js')とasset_paths.asset_for('anytimec'、'js')のダンプを調べて、これをテストしました。また、これらのダンプを新しいアプリケーションの同じファイルと比較しました。新しいアプリケーションでは、場所の前に「../javascripts」が追加されませんが、現在のアプリでは追加されます。これはCSSファイルなどには適用されません...javascriptだけです。これは間違いなくコアの問題をほのめかしていますが、ここからどこに行くべきかわかりません。

4

1 に答える 1

1

アセットフォルダ内の「java」という名前のフォルダを読み取るときにSprocketsが失敗することに関係していることを発見した後、名前を「applets」に変更して動作を開始しました。

答えについては、この投稿を参照してください。

于 2011-12-17T16:54:09.240 に答える