我有一个相当复杂的Rails Web应用程序,已有将近4年了:)。许多客户每天都在使用它,所以当我对它做出根本改变时,我必须少一点骑士。
我已经设法将它迁移到rails 3.2.2并仍然可用,但是有很多代码仍然使用Scriptaculous,Prototype的Ajax调用(例如用于分页)等等。
我想慢慢将所有这些迁移到使用jQuery UJS和Coffeescript,但我必须逐步进行这些更改,最好是一次跨越多个“版本”的一个控制器。
但我看到打开资产是一个布尔开关。
如何在不破坏大量代码的情况下将现有代码迁移到资产管道?我应该采取什么预防措施?
答案 0 :(得分:3)
如果还不晚,我们发现启用资产管道的技巧仍然存在,公共文件夹中仍有许多css和js:
为了保留静态文件的“旧”标记助手,我们在它们被资产管道覆盖之前对它们进行别名。我们将此代码段添加到application.rb中的require 'rails/all'
上方:
require 'rails'
ActiveSupport.on_load(:action_view) do
alias_method :without_asset_pipeline_js, :javascript_include_tag
alias_method :without_asset_pipeline_css, :stylesheet_link_tag
alias_method :without_asset_pipeline_img, :path_to_image
end
因此,在我们的观点中,我们仍然可以访问它们。但是我们必须更改所有标签......所以,我们添加一个初始化程序来恢复“旧”标签,并将“new”标签加上'asset_'(或其他)的前缀。现在,我们可以在公共/资产管道中管理静态资产文件和资产管道。
目前,我们没有遇到这种方法的问题(除了它不适用于图像!),但我们是开始......
答案 1 :(得分:2)
这些有轨电视节目给我带来了很多帮助。
摘要:
设置你的Gemfile
group :assets do
gem 'sass-rails'
gem 'coffee-rails'
gem 'yui-compressor' # i'm using yui for compressor
end
将您的资产(javascripts,fonts,css,images等)移动到app / assets,我这样:
app/
assets/
fonts/
images/
javascripts/
stylesheets/
在css上,将url helper更改为font-url,image-url或assets-url。您可以在此处找到更多信息,https://github.com/rails/sass-rails。也许您会想要使用登台服务器来检查资产管道工作是否正常,至少对于您的应用所服务的静态资产。还要确保加载了多次javascript文件。 (在我升级到资产管道之前,这让我很头疼。)
希望这有帮助。