在部署期间捆绑的Rails资产管道中包含外部JS

时间:2013-04-15 18:34:31

标签: javascript ruby-on-rails deployment capistrano asset-pipeline

我已经回顾了这个问题 - Including external libraries using the Rails 3.1 asset pipeline - 基本上我正在寻找一个警告:我想在资产管道中包含外部网址,以便在我部署到生产时,外部URL与所需的其他本地文件捆绑在一个文件中。

更多详情:

我的用例是我在GitHub上找到了一个我喜欢的插件,并且是开源社区的好成员,我想帮助回馈。我正在考虑的最有效的技术是分叉repo,然后将我需要该文件的本地项目指向开发期间所需JS文件的原始源,但是当该文件与我的应用程序的其余部分捆绑在一起时我部署到临时/生产。这将允许我保持插件与父项目紧密相关,但保持我自己的轨道,以便我可以决定何时合并基础项目的更新,以及提交我已经回到父项的任何修复拉请求。

话虽如此,我还没有找到任何关于如何使用当前rails JS资产管道执行此操作的文档,或者根本不可能。本地的一些快速测试指出这在css文件中有效,但对js文件无效。任何人都可以确认这是否可行?谢谢!

1 个答案:

答案 0 :(得分:0)

我会使用this custom rake task之类的东西。基本上你所做的就是将rake任务写入部署脚本的开头,但是将其修改为将文件放在vendor / assets文件夹中(或者你想要的那个文件被拉入资产管道。)

这样你就可以在部署时提取所请求的文件,但是当资产管道捆绑所有内容时,它就会出现在你的代码中。

以下是链接腐烂的代码:

namespace :remote_file do
  desc "Get a file from a remote server"
  task :fetch do
  # based on http://snippets.dzone.com/posts/show/2469
  # http://farm1.static.flickr.com/92/218926700_ecedc5fef7_o.jpg
  Net::HTTP.start("farm1.static.flickr.com") do |http|
    resp = http.get("/92/218926700_ecedc5fef7_o.jpg")
    open("fun.jpg", "w") { |file| file.write(resp.body) } 
  end
end