- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 Ruby on Rails 3.0.9,我正在尝试设置 delay_job gem 。如果在重新启动 Apache2 服务器后,我在 Terminal\Console 中运行以下命令,则一切正常:
RAILS_ENV=development script/delayed_job stop
RAILS_ENV=development script/delayed_job -n 2 start
但是,由于我总是希望在应用程序启动时启动工作人员,因此在我的 config/initializers/delayed_job.rb
中添加以下代码(处理开发和生产模式):
if Rails.env.development?
system 'RAILS_ENV=development script/delayed_job stop'
system 'RAILS_ENV=development script/delayed_job -n 2 start'
elsif Rails.env.production?
system 'RAILS_ENV=production script/delayed_job stop'
system 'RAILS_ENV=production script/delayed_job -n 2 start'
end
但是,通过使用上面的代码并在重新启动 Apache2 服务器后,DJ gem 不再像预期的那样工作。也就是说,它不会像我在 Terminal\Console 中运行上述命令行时那样处理作业。
如何让 DJ 正常工作?有什么问题?
P.S.:我想这样做是为了使流程自动化。
config/initializers/delayed_job.rb
文件中的上述代码不会在 RAILS_ROOT/tmp/pids 中“创建”与 DJ 相关的“pids”文件
目录。这些只能通过手动运行上述命令行来创建。为什么会这样?
更新
我的 config/initializers/delayed_job.rb
包含:
# Options
Delayed::Worker.destroy_failed_jobs = false
Delayed::Worker.sleep_delay = 2
Delayed::Worker.max_attempts = 5
Delayed::Worker.max_run_time = 1.hour
Delayed::Worker.delay_jobs = !Rails.env.test?
if Rails.env.development?
system "RAILS_ENV=development #{Rails.root.join('script','delayed_job')} stop"
system "RAILS_ENV=development #{Rails.root.join('script','delayed_job')} -n 2 start"
elsif Rails.env.production?
system "RAILS_ENV=production #{Rails.root.join('script','delayed_job')} stop"
system "RAILS_ENV=production #{Rails.root.join('script','delayed_job')} -n 2 start"
end
最佳答案
我不认为你可以那样做,因为当你启动'/script/delayed_job'时,rails环境将被加载,导致'config/initializers/delayed_job.rb'文件再次被执行。您可以在无限循环中看到此结果。同样,每次您调用 rake,例如:'rake db:migrate',它都会初始化 delayed_jobs。
你可以用这个破解它:
if Rails.env.production?
if(!File.exists?(Rails.root.join('tmp','pids', 'delayed_job.pid')))
system "echo \"Starting delayed_jobs...\""
system "./script/delayed_job start &"
else
system "echo \"delayed_jobs is running\""
end
end
使用“&”,delayed_job 脚本在后台运行,与 rails 不同的进程。如果 rake 已经在运行,则对 rake 的后续调用将跳过启动 delayed_jobs。如果出于某种原因,该文件在 delayed_jobs 终止时未被删除,您仍然会遇到一些问题。
命令 /script/delayed_job 状态将检测是否是这种情况,但你不能在这个“config/initializers/delayed_job.rb”文件中运行它,因为它会导致无限循环:(
关于ruby-on-rails - 通过在应用程序启动时启动工作人员来初始化延迟作业 gem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6994479/
是否有用于手动测试的代码覆盖工具?比如我新写了30行代码,编译,然后运行,有什么办法可以快速验证这30行都运行了吗? 另外,后来,在我将代码 checkin 正式版本后,有什么方法可以验证测试部门在进
老实说,这是一个家庭作业问题,但我已经浪费了好几个小时,而且无法正确解决。它返回错误数量的结果或错误的数据: 我需要选择参与指导电影和/或在电影中表演的每个人以及他们所做的次数,如果至少 5 次。 有
我正在尝试测试 MacOS 的应用内购买。输入测试用户凭据后,App Store 提示:“当前收据无效或 ds 人员 ID 不匹配。”并且购买失败。 最佳答案 我尝试了很多方法来解决这个问题。 Get
我正在为 Jenkins 使用 ActiveDirectory 插件,因此用户必须使用他们的凭据登录到 Jenkins。然后用户在 Jenkins 中被称为 joe.doe,这很完美。 当同一个人 c
如何从 Infopath 人员/组选取器检索电子邮件地址?当我将人员/组选取器添加到 infopath 表单时,我只得到 3 个字段 DisplayName、AccountId、AccountType
在 Snow Leopard 中,可以在 iCal 事件中显示空闲/忙碌时间。我搜索了 CalStore.framework 的 header ,但找不到任何描述该字段的属性。如何检索日历事件的忙/闲
是否有人成功地从专门针对 SharePoint 2013 的新建或编辑表单中获取用户(个人或组)字段的值? 我已经尝试了通过搜索互联网找到的所有解决方案以及我自己能想到的所有解决方案,所有结果都为空白
所以我需要将一个 Twitter 帐户添加到 ABRecordRef 中。然而,最快的方法似乎是获取社交资料属性的多值引用,创建它的可变版本,查找它是否有 Twitter 条目,如果已经有,则创建
我正在尝试将使用 Tomcat(最初是 5.5,但可以与 7 一起使用)在 MyEclipse 中开发的应用程序部署到我们的演示服务器 (Sun Java Web Server 7)。不幸的是,所有设
我是一名优秀的程序员,十分优秀!