application.js未预编译

时间:2011-12-12 04:41:15

标签: ruby-on-rails ruby-on-rails-3 asset-pipeline precompiled

我不确定原因,但每当我运行rake assets:precompile时,application.js都不会被编译。我在生产模式下得到“application.js is not precompiled”错误。

这是我的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资产:预编译并且它正在运行。两个应用程序在相关文件方面的唯一区别就是我安装的宝石。两个应用程序之间的“application.js”是相同的......就像environment.rb文件一样。

另外值得注意的是...当我在assets / javascripts目录中包含一个随机的.js文件并使用“javascript_include_tag:application”时,开发模式中的一个结果URL看起来像这样:/assets/../javascripts/anytimec.js?body=1他们显然是404失败了。但是正确引用了application.js文件。

更新:

查看Sprockets生成的内容我注意到“逻辑路径”在该位置使用“../javascripts”。我通过分别查看asset_paths.asset_for('application','js')和asset_paths.asset_for('anytimec','js')的转储来测试它。我还将这些转储与新应用程序中的相同文件进行了比较。新鲜的应用程序不会将“../javascripts”添加到该位置,而我当前的应用程序会执行。它不会对CSS文件或其他任何东西这样做...只是javascript。这绝对暗指核心问题,但我不知道从哪里开始。

1 个答案:

答案 0 :(得分:1)

在资源文件夹中读取一个专门称为“java”的文件夹后,发现它与Sprockets失败有关,我将其重命名为“applets”并开始工作。

请参阅this post了解答案。