【发布时间】:2015-05-18 03:43:22
【问题描述】:
我的 Rails 4 应用程序允许其用户导入一些 Adobe Edge 动画文件(广告)。虽然它工作正常,但 Adobe Edge 正在加载一堆文件,这些文件可以使用 Grunt 或 Gulp 等工具进行缩小和优化(图像)。
我正在使用 CarrierWave 上传文件,然后如果它们在存档中,我会提取它们:
class FileUploader < CarrierWave::Uploader::Base
after :store, :uncompress_and_update_reference
def uncompress_and_update_reference(_file)
return unless archive_is_supported?(model.ext)
extractor = Uploader::Archive.const_get("Extractor#{model.ext.upcase}").new
Uploader::Archive::PubArchive.new(extractor, model, full_path).extract_and_save
end
end
我在想我可以在后台作业中使用 Grunt 或 Gulp(例如使用 Sidekiq)来根据需要处理那些提取的文件。问题是我该怎么做?
根据我的阅读,为了运行grunt 或gulp,它们都需要分别拥有Gruntfile.js 和Gulpfile.js,这使得事情变得很棘手,因为我需要在解压文件夹。
有人吗?
【问题讨论】:
-
您可以通过
process.argv轻松地将命令行参数传递给 Grunt 和 Gulp。 -
好的,谢谢,不知道。由于 Grunt / Gulp 需要一个配置文件才能运行,我如何运行命令
grunt或gulp并使用通用外部文件?他们的 API 似乎没有显示如何实现它,因为它假定配置文件始终在当前文件夹中。 -
可以像
htmlcompressor这样的宝石有帮助吗? github.com/paolochiodi/htmlcompressor -
@kobaltz。我已经检查了那个 gem,但不幸的是,我的案例需要很多自定义处理,只有 Grunt 或 Gulp 等工具才能实现。我开始构建一个节点 CLI 来实现这一点。这是迄今为止我发现的最简单的解决方案。一旦我有什么有用的东西就会在这里写一篇文章
标签: ruby-on-rails gruntjs gulp sidekiq