【发布时间】:2014-11-13 10:21:45
【问题描述】:
我的 rails 应用使用 Rails 3.2.15。当我尝试部署到 Heroku 时,出现错误:
Asset logical path has no extension: ]
在我看到的“资产逻辑路径”错误的其他示例中,冒号后面的元素是文件名。为什么它认为有一个名为“]”的文件?
这是完整的错误:
/tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/asset.rb:36:in `initialize'
/tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/base.rb:380:in `new'
/tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/base.rb:380:in `build_asset'
/tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/index.rb:94:in `block in build_asset'
/tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/caching.rb:58:in `cache_asset'
/tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/index.rb:93:in `build_asset'
/tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/base.rb:287:in `find_asset'
/tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/index.rb:61:in `find_asset'
/tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/manifest.rb:211:in `block in find_asset'
/tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/manifest.rb:257:in `benchmark'
/tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/manifest.rb:210:in `find_asset'
/tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/manifest.rb:119:in `block in compile'
/tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/manifest.rb:118:in `each'
/tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/manifest.rb:118:in `compile'
/tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-rails-2.0.0.backport1/lib/sprockets/rails/task.rb:60:in `block (3 levels) in define'
/tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/rake/sprocketstask.rb:146:in `with_logger'
/tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-rails-2.0.0.backport1/lib/sprockets/rails/task.rb:59:in `block (2 levels) in define'
Tasks: TOP => assets:precompile
(See full trace by running task with --trace)
!
! Precompiling assets failed.
!
! Push rejected, failed to compile Multipack app
我可以通过运行以下命令在本地重新创建此错误
bundle exec rake assets:precompile
一些背景:
我正在尝试将 bootstrap-sass 与我的 Rails 3.2 应用程序集成。我按照 gem 页面上概述的 3.2.x 安装说明进行操作:
https://github.com/twbs/bootstrap-sass
这在本地工作,但是当我尝试部署时,我得到了上述错误。
【问题讨论】:
-
确认你在开发中运行了“RAILS_ENV=production bundle exec rake assets:precompile --trace” [ushing to Heroku ?我还记得有一次必须运行“rake assets:clean”,然后在推送到 Heroku 之前进行预编译。
-
感谢您的帮助。当我尝试运行第一行时,我得到错误数据库 project_production 没有出现(它没有出现)。你分享的那条线是做什么用的?
-
我确定你读过这篇文章? stackoverflow.com/questions/20856247/…
-
我的理解——在开发过程中,java 和 coffescript 是在控制器执行的每个操作中预编译的。在生产环境 Heroku 中,在执行代码之前完成预编译(例如 java 和 coffeescript 压缩等)。每当您在开发中对 javascript/coffeescript 进行更改时,都需要预先编译,然后才能在 Heroku 中看到这些更改。确认您正在开发环境中进行预编译?
-
@txdavidtx 是的,我看过那篇文章。即使我使用的是 Rails 3.2,我也尝试添加该建议,但它没有解决问题。
标签: ruby-on-rails heroku assets sprockets precompile