Rails 将脚本作为后台作业执行

2024-01-01

我有一个已作为独立功能实现的 ruby​​ 脚本。 现在我想在我的 Rails 环境中执行这个脚本,但将其作为后台作业执行会增加难度,因为它需要大量的时间处理。

添加delayed_job gem后,我尝试调用以下句子:

delay.system("ruby my_script.rb")

这是我得到的错误:

Completed 500 Internal Server Error in 95ms
TypeError (can't dump anonymous module: #<Module:0x007f8a9ce14dc0>):
   app/controllers/components_controller.rb:49:in `create'

呼叫self.delay来自控制器的方法行不通 https://github.com/collectiveidea/delayed_job/issues/371,因为 DJ 会尝试将您的控制器序列化到作业中。您最好创建一个类来处理您的任务,然后将其方法标记为异步:

class AsyncTask
  def run
    system('ruby my_script.rb')
  end
  handle_asynchronously :run
end

在你的控制器中:

def create
    ...
    AsyncTask.new.run
    ...
end

请参阅“排队作业”部分中的第二个示例readme https://github.com/collectiveidea/delayed_job.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 将脚本作为后台作业执行 的相关文章

随机推荐

  • laravel 队列守护程序邮件因 SSL 错误而停止运行

    我正在运行一个 laravel 队列守护进程 它根据所采取的操作发送邮件 这是通过主管运行以确保它始终运行 一开始工作正常 但一段时间后邮件停止发送 错误没有报告到链上 但日志显示 2014 07 30 20 00 21 productio
  • 通过 gem install tiny_tds 在 OSX 10.6 上安装 TinyTDS 时出错

    我一直在尝试在 OSX 10 6 的 Macbook 上安装 TinyTDS gem 我成功安装了免费 TDS 通过以下方式确认它可以正常工作 tsql H SERVER p 1433 U username 我得到的错误宝石安装tiny t
  • 我编写了一个脚本将文件复制到备份文件夹,但独立的 webapp 文件被复制到根目录

    有谁知道为什么会发生这种情况 将所有文件复制到目的地会方便得多 我有一个文件名和文件 ID 列表 其中 3 个是电子表格 一个是我部署为 Web 应用程序的独立脚本 这三个电子表格转到正确的位置 独立的 Web 应用程序会转到根目录 我不认
  • 对 GLSL 着色器进行基准测试以比较替代实现的速度

    我想绘制二维函数z f x y 使用 OpenGL 和 GLSL 着色器 我想使用颜色图将函数的值映射到颜色 但某些颜色图是使用 HSL 或 HSV 颜色空间表示的 例如色调图 您可以 在这里和其他地方 找到不同的替代实现hsv2rgb 在
  • 无法在 Vagrant 上安装 Kubernetes

    使用本指南在 Vagrant 集群上安装 Kubernetes https kubernetes io docs getting started guides kubeadm https kubernetes io docs getting
  • 它真的是一个activex控件吗?

    我有一个相当简单的代码块 Sub Run Name on error resume next Set objShell CreateObject WScript Shell if Err Number 429 then alert Inva
  • 使用 Gradle 进行 git 描述的 Android 构建的自动版本控制

    我进行了广泛的搜索 但可能是由于 Android Studio 和 Gradle 的新颖性 我还没有找到任何关于如何执行此操作的描述 我想做基本上完全按照中描述的这个帖子 https stackoverflow com questions
  • 如何更改非英语单词的字体大小?

    In a Word 2007 https en wikipedia org wiki History of Microsoft Word Word 2007 document I manually select a sentence con
  • Git:如何从索引中删除文件而不从任何存储库中删除文件

    当你使用 git rm cached myfile 它不会从本地文件系统中删除 这是目标 但是 如果您已经对文件进行版本控制并提交 将其推送到中央存储库 并在使用该命令之前将其拉入另一个存储库 则它将从该系统中删除该文件 有没有办法只从版本
  • 字符串格式日期 - C# 或 VB.NET

    来自数据库的日期 需要格式为 mm dd yy For Each dr as DataRow in ds Tables 0 Rows Response Write dr CreateDate Next string Format 0 MM
  • 从 .h 文件 Visual Studio 创建 .cpp 文件

    我正在使用 Visual Studio 2008 我想知道是否可以根据给定的头文件创建 cpp 文件 因此 如果我有一个包含类和函数的 h 文件 它可以创建包含空白正文中输入的所有函数的代码文件 捷径 alt shift f10 VS201
  • 哪个版本的 gcc 支持 -Ofast 优化级别?

    我在 gcc 的文档中找到了 Ofast level opthttp gcc gnu org onlinedocs gcc Optimize Options html Optimize Options http gcc gnu org on
  • 重置/删除 Swing 中的边框

    这是一个非常具体的编码问题 最近 我被要求在工作中维护一些旧的 Java Swing GUI 代码 并遇到了这个问题 我已将我自己的名为 MyFilenameVerifier 的 InputVerifier 子类附加到 JTextField
  • Flutter - MultiProvider 如何与相同类型的提供者一起工作?

    例如 我试图同时获取多个流发出的数据 但其中 2 个或更多流发出相同类型的数据 比如说字符串 我的问题是 是否可以使用MultiProvider并使用多个StreamProvider 或任何提供者 但我对这种情况感兴趣 相同类型 同时仍然能
  • 流、视图、迭代器

    scala 中的流 视图 SeqView 和迭代器之间有什么区别 这是我的理解 它们都是惰性列表 流缓存值 迭代器只能使用一次 就不能回到起点重新评估价值吗 View 的值不会被缓存 但你可以一次又一次地评估它们 因此 如果我想节省堆空间
  • 如何更改asp.net core中的程序集信息?

    我想对我的 ASP NET Core 应用程序进行版本控制 我点击了这个链接 http www matthiaseinig de 2013 05 20 auto generate fileversion for all projects i
  • 计算每个场点位于轮廓内的频率

    我正在处理二维地理数据 我有一长串轮廓路径 现在我想确定域中的每个点有多少个轮廓 即我想计算轮廓表示的特征的空间频率分布 为了说明我想要做什么 这是第一个非常幼稚的实现 import numpy as np from shapely geo
  • 实例新类型(Golang)

    谁能告诉我如何从字符串创建 Type 的新实例 反映 有一些示例 但它们适用于较旧的 Go 1 之前的版本 语言 所以 如果我正确理解你的问题 你是在问当你只有类型名称作为字符串时如何创建一个对象 例如 您可能有一个字符串 MyStruct
  • java.io.File:访问文件名编码无效的文件

    因为 java io File 的构造函数采用 java lang String 作为参数 所以似乎无法告诉它在访问文件系统层时需要哪种文件名编码 因此 当您通常使用 UTF 8 作为文件名编码并且有一些文件名包含编码为 ISO 8859
  • Rails 将脚本作为后台作业执行

    我有一个已作为独立功能实现的 ruby 脚本 现在我想在我的 Rails 环境中执行这个脚本 但将其作为后台作业执行会增加难度 因为它需要大量的时间处理 添加delayed job gem后 我尝试调用以下句子 delay system r