我无法预编译我的应用程序

Posted

技术标签:

【中文标题】我无法预编译我的应用程序【英文标题】:I can not precompile my application 【发布时间】:2014-04-29 09:11:58 【问题描述】:

我不能用命令预编译 --> bundle exec rake assets:precompile ,它返回我这个错误 --> Don't know how to build task 'assets:precompile'.

在预编译之前我做了一个bundle install --deployment --without development test

Rails 3.0.11

Ruby 1.9.2p320(2012-04-20 修订版 35421)[x86_64-linux]

【问题讨论】:

Rails 3.0.x 中还没有资产管道。这是在 Rails 3.1 中引入的。 【参考方案1】:

您说您使用 bundle install 进行预编译,这不会预编译资产,而只是安装您的 gem,如果您想将更新的 gem 安装到 rails 服务器,只需再次运行 bundle installbundle update。 rails 3.0 没有资产管道。

如果您确实想使用资产管道,请参阅文档中的 this backport:

在您的 Gemfile 中:

gem "sprockets_rails3_backport"
...plus whatever supplementary gems you want for the asset pipeline:

gem 'coffee-script', '2.2.0'
gem 'therubyracer', '0.9.9'
gem 'uglifier', '>= 1.0.3'

在你的 routes.rb 中:

MyApp::Application.routes.draw do
  if (app = Rails.application).config.assets.compile
    mount app.assets => app.config.assets.prefix
  end

  # ...
end

以下是各种 config.assets 选项及其默认值:

config.assets.paths                    = []
config.assets.precompile               = [ Proc.new |path| !['.js', '.css'].include?(File.extname(path)) ,
                                           /(?:\/|\\|\A)application\.(css|js)$/ ]
config.assets.prefix                   = "/assets"
config.assets.version                  = ''
config.assets.debug                    = false
config.assets.compile                  = true
config.assets.digest                   = false
config.assets.manifest                 = nil
config.assets.cache_store              = [ :file_store, "#root/tmp/cache/assets/" ]
config.assets.js_compressor            = nil
config.assets.css_compressor           = nil
config.assets.initialize_on_precompile = true

【讨论】:

以上是关于我无法预编译我的应用程序的主要内容,如果未能解决你的问题,请参考以下文章

预编译 Rails AngularJS 资产

预编译标题问题

如何预编译 Web 应用程序项目?

rails 应用程序未启动,资产上的“ActiveSupport::Deprection”错误:预编译

在添加/删除 ENV 变量时,Elastic Beanstalk 导致我的 Rails 6 应用程序预编译资产中断

Rails:预编译资产缺少节点模块