gpt4 book ai didi

ruby-on-rails - 如何在 Rails 中的任何 Assets 预编译之前运行自定义代码?

转载 作者:行者123 更新时间:2023-12-03 21:20:53 25 4
gpt4 key购买 nike

类似于(在初始化程序中):

Sprockets.before_precompile do
# some custom stuff that preps or autogenerates some asset files
# that should then be considered in the asset pipeline as if they were checked in
end

具体来说,我想运行一个 gulp 任务来将一些 Javascript 与一些特殊的预处理器捆绑在一起,而且我宁愿不重写我的 gulpfile 来让 Assets 管道处理所有事情......而且我也希望它能够在 Heroku 上工作如果可能的话,需要一个自定义的 buildpack。有什么想法吗?大概 Sprockets 有这些类型的钩子(Hook)。

最佳答案

正如我从源代码中看到的,Sprockets 没有这样的钩子(Hook),但你可以使用 rake 任务钩子(Hook)。例如,您将创建一个启动所有预处理器、gulp 等的 rake 任务,因此该任务可以放在预编译之前。

# lib/tasks/before_assets_precompile.rake

task :before_assets_precompile do
# run a command which starts your packaging
system('gulp production')
end

# every time you execute 'rake assets:precompile'
# run 'before_assets_precompile' first
Rake::Task['assets:precompile'].enhance ['before_assets_precompile']

然后你只需运行 rake assets:precompile ,因此任务 before_assets_precompile将在它之前执行。

还要确保使用 system而不是 exec , 因为 exec将在运行此预任务的阶段退出进程并且不会运行 assets:precompile正如预期的那样。

资料来源:
  • Rake before task hook
  • http://www.dan-manges.com/blog/modifying-rake-tasks
  • 关于ruby-on-rails - 如何在 Rails 中的任何 Assets 预编译之前运行自定义代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27761643/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com