在生产环境中使用html5-rails gem时出现AssetNotPrecompiledError

时间:2011-09-14 18:19:15

标签: ruby-on-rails ruby-on-rails-3.1 asset-pipeline

我已经在rails 3.1上开发了html5-railscompass-html5但是当我在生产模式下运行我的应用并尝试访问我的主页时,我得到以下内容:

Sprockets::Helpers::RailsHelper::AssetPaths::AssetNotPrecompiledError in Home#index

polyfills.js isn't precompiled

问题是localhost:8080:/assets/polyfills.js确实显示。我怀疑我的方法存在问题:

重现的步骤:

1 使用家庭控制器创建新的rails应用,索引操作并设置根路由并删除 public / index.html views / layouts / application .html.erb

2 在Gemfile中添加以下内容

gem 'rails', '~> 3.1.0'
gem 'unicorn'
group :assets do
  gem 'compass', "~> 0.12.alpha.0"
  gem 'sass-rails', "~> 3.1.0"
  gem 'coffee-rails', "~> 3.1.0"
  gem 'uglifier'
  gem 'compass-html5', :git => 'https://github.com/sporkd/compass-html5.git'
  gem 'html5-rails', :git => "https://github.com/sporkd/html5-rails.git"
end

3 运行rails g html5:install以创建 /config/compass.rb 文件

4 创建包含以下代码的 /config/initializers/sass.rb

Rails.configuration.sass.tap do |config|
  config.load_paths << "#{Gem.loaded_specs['compass'].full_gem_path}/frameworks/compass/stylesheets"
end

5 运行RAILS_ENV=production bundle exec rake assets:precompile

6 运行unicorn -E production(或rails s -e production如果你在webrick上)并访问root url

7 观察错误

/ public / assets 中存在正确缩小的 respond-md5.min.js modernizr-md5.min.js 。当我访问 localhost:8080 / assets / modernizr.min.js 时,编译的js代码会出现。当我尝试访问我的主页时,抛出了服务器错误。

我怀疑我的方法有错误。我在github上问了同样的问题here

2 个答案:

答案 0 :(得分:6)

我设法通过将polyfills.js添加到application.rb

来解决这个问题
config.assets.precompile += %w( polyfills.js )

答案 1 :(得分:0)

我遇到了同样的错误,问题是我的文件丢失了......