Tag: 延迟工作

delayed_job奇怪的例外

尝试使用delayed_job对作业进行排队,如下所示: Delayed::Job.enqueue(BackgroundProcess.new(current_user, object)) 打印出来时,current_user和object不是nil。 奇怪的是,有时刷新页面或再次运行命令有效! 这是exception跟踪: Delayed::Backend::ActiveRecord::Job Columns (44.8ms) SHOW FIELDS FROM `delayed_jobs` TypeError (wrong argument type nil (expected Data)): /Users/.rvm/rubies/ruby-1.9.1-p378/lib/ruby/1.9.1/yaml.rb:391:in `emit’ /Users/.rvm/rubies/ruby-1.9.1-p378/lib/ruby/1.9.1/yaml.rb:391:in `quick_emit’ /Users/.rvm/rubies/ruby-1.9.1-p378/lib/ruby/1.9.1/yaml/rubytypes.rb:86:in `to_yaml’ vendor/plugins/delayed_job/lib/delayed/backend/base.rb:65:in `payload_object=’ activerecord (2.3.9) lib/active_record/base.rb:2918:in `block in assign_attributes’ activerecord (2.3.9) lib/active_record/base.rb:2914:in `each’ activerecord (2.3.9) lib/active_record/base.rb:2914:in `assign_attributes’ activerecord (2.3.9) lib/active_record/base.rb:2787:in `attributes=’ activerecord (2.3.9) lib/active_record/base.rb:2477:in `initialize’ activerecord (2.3.9) lib/active_record/base.rb:725:in `new’ activerecord […]

如何在Elastic Beanstalk上设置delayed_job时修复’require’错误

我无法在Elastic Beanstalk上运行delayed_jobs。 我正在使用运行Ruby 2.1(乘客独立)容器的64位Amazon Linux 2014.03 v1.0.0 。 这是我的配置脚本(delayed_job.config)…… files: “/opt/elasticbeanstalk/hooks/appdeploy/post/99_restart_delayed_job.sh”: mode: “000755” owner: root group: root encoding: plain content: | #!/usr/bin/env bash . /opt/elasticbeanstalk/support/envvars cd $EB_CONFIG_APP_CURRENT su -c “RAILS_ENV=production bin/delayed_job –pid-dir=$EB_CONFIG_APP_SUPPORT/pids restart” $EB_CONFIG_APP_USER 99_restart_delayed_job.sh脚本存在并运行……但后来我99_restart_delayed_job.sh了这个错误。 2014-10-02 15:28:32,332 [INFO] (17387 MainThread) [directoryHooksExecutor.py-29] [root directoryHooksExecutor info] Script succeeded. 2014-10-02 15:28:32,402 [INFO] (17448 MainThread) [directoryHooksExecutor.py-29] [root directoryHooksExecutor info] […]

如何异步发送来自Rails应用程序的所有电子邮件

我有一个使用delayed_job的rails应用程序。 虽然DJ给了我一个非常简单的方法来设置电子邮件的延迟,有没有办法全局配置我的应用程序异步发送所有电子邮件,无论如何? 这样做的原因是我有一些发送电子邮件的gem,并且不想修改它们以接受DJ。

使用Capistrano和Rails配置延迟作业4

我试图让Capistrano使用Rails 4应用程序启动/停止延迟作业。 我按照这里的说明进行操作 ,但它说Rails 3.这就是它现在配置的方式: deploy.rb: require ‘delayed/recipes’ after “deploy:start”, “delayed_job:start” after “deploy:stop”, “delayed_job:stop” after “deploy:restart”, “delayed_job:stop”,”delayed_job:start” 当我尝试部署时,我尝试执行RAILS_ENV =生产脚本/ delayed_job停止后收到以下错误 sh: script/delayed_job: not found

Delayed_job不会运行用户定义的方法

我一直试图让DelayedJob在后台运行一些用户定义的方法。 对于此测试用例,我在帮助程序中定义了以下方法: def test_case u = User.new u.first_name = “JimBob” u.last_name = “joe” u.email = “itworked@eureka.com” u.password = “sailsJ123” u.password_confirmation = “sailsJ123” u.save end 然后,在控制器动作中,我定义: def action_name #whatever it does outside of this test_case end 这会导致test_case在运行此处的操作时创建新用户。 如果我试图延迟工作,我将其更改为: def action_name #whatever it does outside of this self.delay.test_case end 这会导致创建delayed_job,但有一些迹象表明我做错了:具体来说,delayed_job表中的处理程序包含在action_name中其他地方加载的所有信息(在这种情况下是一个大约50000个字符的非常大的文件),不只是一个简单的处理程序,指定运行test_case或其他东西。 如果我改变它以继续测试,我试图做: def action_name #whatever it does outside […]

Rails:delayed_job邮件没有发送

我正在尝试在Rails 3.2中使用delayed_job gem https://github.com/collectiveidea/delayed_job在后台发送邮件。 我安装了gem gem ‘delayed_job_active_record’ 我按照指示生成了表并运行了迁移 $ rails generate delayed_job:active_record $ rake db:migrate 注意到Rails 3中有针对邮件程序的特殊说明 # without delayed_job Notifier.signup(@user).deliver # with delayed_job Notifier.delay.signup(@user) 我做到了 def send_welcome_email #UserMailer.welcome_email(self).deliver <– original code that worked UserMailer.delay.welcome_email(self) end 但是邮件没有发送。 在我尝试使用delayed_job之前它正在工作…… 有人可以为新手澄清……?

在达到最小订单后处理订单 – Rails 3

我的应用程序有交易,一旦达到最低订单金额就会下订单。 目前我已设置订单,订单在提交订单后立即放置,这些订单全部正常。 现在我需要更改流程,以便在达到交易的最小订单编号后处理订单。 我应该使用delayed_job还是cron进程? 这是我想要遵循的过程。 延迟订单直到达到最低订单 查找仍处于活动状态的交易 然后查找满足最低订单数量的交易 对于每个交易订单,循环并处理每个订单的捕获。 发送订单确认。 我的订单型号购买方式 def purchase response = OrderTransaction.gateway.purchase(order_amount, credit_card, options) transactions.create!(:action => “purchase”, :amount => order_amount, :response => response) response.success? end 我的订单控制器中的创建方法。 def create @member = current_member @order_deal = Deal.find(params[:deal_id]) @order = @order_deal.orders.build(params[:order]) @order.member_id = current_member.id @order.ip_address = request.remote_ip @deal = @order_deal if @order.save if @order.purchase MessageMailer.order_receipt(@order, […]

终端说delayed_job开始,但没有做任何事情

我有一个应用程序在我的本地机器上完美运行,现在正在部署它。 我有VPS全部设置,它也很有效。 我的问题来自无法启动delayed_job。 我做了“ruby脚本/ delayed_job启动RAILS_ENV =生产”,同时SSHd到应用程序,它返回“delayed_job:进程与pid 11547启动。” 当我在htop中查找过程时,我找不到它。 所以我挖了一遍,读到Monit可以保持delayed_job继续。 我把它设置了,希望我能以这种方式启动delayed_job。 但是没有delayed_job.pid,所以我没有走远。 我最终在其中设置了nginx和mysql,并且想完成设置delayed_job。 缺少delayed_job.pid会妨碍。 当我通过SSH连接到应用程序并运行“rake jobs:work RAILS_ENV = production”时,一切正常。 所以我很确定应用程序本身很好。 我正在使用collectiveidea的delayed_job。 谢谢你的帮助。

Delayed_job锁定但不处理

我正在尝试解决delayed_job的问题。 出于某种原因,我看到很多作业locked_by和locked_at,但没有任何处理被排除在队列之外。 为什么会发生这种情况或如何让它继续前进的任何提示? 我正在使用Rails 2.3.11和Ruby 1.9.2p0 谢谢!

delayed_jobs保存已完成的工作

我可以传递给delayed_job的参数是否会阻止它从delayed_jobs表中删除已完成的作业? 有点像destroy_failed_jobs但是对于已完成的工作 有任何想法吗?