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 回答
是设置
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?