你为什么要在rails中使用config.assets.prefix?

时间:2016-04-28 14:16:55

标签: ruby-on-rails ruby-on-rails-3 rails-assets

我试图弄明白,我是否应该在我的开发环境中使用if (window.history && window.history.pushState) { // HTML5 history API is available. $locationProvider.html5Mode({ enabled: true, }); } else { // hashbang mode. window.location.hash = '/'; $locationProvider.html5Mode({ enabled: true, }); } $urlRouterProvider.otherwise("/"); $stateProvider .state('statistics', { url: "/statistics/:id", templateUrl: '../path/statistics.html', controller: 'ResultCtrl' } );

当我使用localhost进行开发时,这样做是否有任何(不利)优势?当本地服务器本身没有缓存并且在另一个域(生产域vs本地主机)上时,我看不到缺点?特别是对于CSS和Javascript中的某些路径进行硬编码,这些路径将始终返回404开发..

我一直在使用config.assets.prefix作为公关。推荐另一位不再与我们合作的开发人员。

这是一个问题,是否有其他人已经考虑并采取了立场?

1 个答案:

答案 0 :(得分:3)

使用config.assets.prefix的最大原因来自于使用本地资产预编译。本地预编译和存储在​​源代码管理中有多种原因。来自http://guides.rubyonrails.org/asset_pipeline.html#local-precompilation

  
      
  • 您可能没有对生产文件系统的写入权限。
  •   
  • 您可能正在部署到多台服务器,并希望避免重复工作。
  •   
  • 您可能正在进行不包含资产更改的频繁部署。
  •   
     

本地编译允许您将已编译的文件提交到源代码管理中,并正常部署。

但是如果你使用它,你将在开发模式中遇到麻烦,因为rails将为/public/assets中的预编译资产提供服务。因此,您经常设置config.assets.prefix = '/dev-assets',因此每次要查看/app/assets中的本地更改效果时,您都不需要预编译。