首页 文章

为什么预编译资产不再有效?

提问于
浏览
0

Rails 4.2.1,Ruby 2.2.6,sprockets 3.7.1,sprockets-rails 3.2.0

我正在尝试使用新的.js文件部署到我的登台服务器,并且预编译没有做任何事情 . 这是带有'--trace'的输出 .

** Invoke assets:precompile (first_time)
  ** Invoke assets:environment (first_time)
  ** Execute assets:environment
  ** Invoke environment (first_time)
  ** Execute environment
  ** Execute assets:precompile
  ** Invoke ckeditor:nondigest (first_time)
  ** Invoke environment 
  ** Execute ckeditor:nondigest

我已经尝试过运行rake资产:clean,assets:clobber和assets:预编译有和没有'RAILS_ENV = staging bundle exec'前置这些命令 - 什么都没有 . 我删除了assets文件夹并再次运行预编译 - 没有 . 我已经增加了assets.version - 没有 .

我尝试将我的资产预编译指令放在/config/initializers/assets.rb,/config/environments/staging.rb和/config/application.rb中

Rails.application.config.assets.version = '1.0.2'
 Rails.application.config.assets.precompile += %w(
  admin.css
  admin.js
  new_file.js
 )

有没有办法告诉资产:precompile正在查找什么文件?

*** UPDATE ***

设置assets.compile = true和部署会使资产预编译 . 我的印象是,该指令会使rails在运行中服务资产而不是使用预编译资产 . 这是正确的吗?

Rails.application.config.assets.compile = true

1 回答

  • 0

    是设置 config.assets.compile = true 会终止您的应用程序性能并导致 生产环境 中随机出现长页面加载 . 尝试运行"bundle exec rake assets:precompile RAILS_ENV=production",以便它使用您的 生产环境 环境配置 . 文件 . 关于它在哪里寻找预编译的另一个问题,rails配置中有一个前缀设置 . 您可以使用它来说明您希望预编译资产的去向 . 防爆 . config.assets.prefix = '/production' 但默认是您的公共资产文件夹 .

    更新:(我打算写一篇关于这个主题的长篇文章,但看起来它的创建者写了为什么要详细避免,并且可以在这个链接找到:

    config.assets.compile=true in Rails production, why not?

相关问题