使用延迟作业一段时间后显示 运行 的方法
Displaying method to run after sometime using delayed job
我是 ruby 的新手,我有一个消息传递应用程序,只要用户在某个时间后发送消息,它就会在 1 分钟后显示一条自动消息
我使用了延迟作业 gem 并在我的 app/job 文件夹中的 mailing_job.rb 中创建了一个执行方法
现在,当我的代码执行时,它可以正常工作,但它不会等待指定的延迟时间,而是在那个时间本身执行。我也在我的控制器中创建了相同的方法,延迟方法语法使用的是控制器方法,而不是我 mailin_job.rb 中的执行方法
这是我的消息控制器的片段
def reply
@message = MessageThread.new(message_params)
@user2 = get_user(params[:id])
save_message
Mailing_Job.set(wait: 1.minute).perform_later()
render 'material_admin/home.html.erb'
end
在我的 app/job/mailing_job.rb 文件中
class Mailing_Job < ActiveJob::Base
queue_as :default
def perform()
@auto_message = Setting.all[0]
@body = @auto_message.body
end
end
config/application.rb 文件
config.active_job.queue_adapter = :delayed_job
chat_user_message 查看
<% @messages.each do |message| %>
<div class='right-message'>
<div class='margin-bottom'>
<span class='yellow'><%= message.body %></span>
</div>
<small>
<%= message.created_at.strftime(" %I:%M %p") %>
</small>
<div>
<small>
<%= @body %>
</small> </div>
</div>
<div class='left-message'>
<div class='margin-bottom'>
<span class='grey'><%= message.body %></span>
</div>
<small>
<%= message.created_at.strftime(" %I:%M %p")%>
</small>
</div>
任何人都可以解释我做错了什么,在此先感谢
Delayed_job 在与主 Rails 应用不同的进程中运行,无法创建视图的任何部分。此外,一旦 "reply" 操作呈现,您的服务器就会断开与客户端的连接,并且在稍后执行作业时无法联系它,除非您实现类似 Web Sockets 的东西。
一个更简单的选项可能是添加一些 Javascript 到检查服务器上的另一种方法(例如每 15 秒)以查看作业是否已完成的视图。它可以在检测到作业已完成时通知用户。
我是 ruby 的新手,我有一个消息传递应用程序,只要用户在某个时间后发送消息,它就会在 1 分钟后显示一条自动消息 我使用了延迟作业 gem 并在我的 app/job 文件夹中的 mailing_job.rb 中创建了一个执行方法 现在,当我的代码执行时,它可以正常工作,但它不会等待指定的延迟时间,而是在那个时间本身执行。我也在我的控制器中创建了相同的方法,延迟方法语法使用的是控制器方法,而不是我 mailin_job.rb 中的执行方法 这是我的消息控制器的片段
def reply
@message = MessageThread.new(message_params)
@user2 = get_user(params[:id])
save_message
Mailing_Job.set(wait: 1.minute).perform_later()
render 'material_admin/home.html.erb'
end
在我的 app/job/mailing_job.rb 文件中
class Mailing_Job < ActiveJob::Base
queue_as :default
def perform()
@auto_message = Setting.all[0]
@body = @auto_message.body
end
end
config/application.rb 文件
config.active_job.queue_adapter = :delayed_job
chat_user_message 查看
<% @messages.each do |message| %>
<div class='right-message'>
<div class='margin-bottom'>
<span class='yellow'><%= message.body %></span>
</div>
<small>
<%= message.created_at.strftime(" %I:%M %p") %>
</small>
<div>
<small>
<%= @body %>
</small> </div>
</div>
<div class='left-message'>
<div class='margin-bottom'>
<span class='grey'><%= message.body %></span>
</div>
<small>
<%= message.created_at.strftime(" %I:%M %p")%>
</small>
</div>
任何人都可以解释我做错了什么,在此先感谢
Delayed_job 在与主 Rails 应用不同的进程中运行,无法创建视图的任何部分。此外,一旦 "reply" 操作呈现,您的服务器就会断开与客户端的连接,并且在稍后执行作业时无法联系它,除非您实现类似 Web Sockets 的东西。
一个更简单的选项可能是添加一些 Javascript 到检查服务器上的另一种方法(例如每 15 秒)以查看作业是否已完成的视图。它可以在检测到作业已完成时通知用户。