Rails 任务不是 运行 除非 rails runner 自 linux 服务器计算机启动后已在命令提示符下执行
Rails task not running unless rails runner has been executed in the command prompt since the linux server machine's bootup
我正在尝试执行此任务以从控制器更新大量数据,以便当管理员用户访问此方法时它将 运行 执行上述任务。我已经确认任务本身没有任何问题,但我不太确定它的调用方式。
我 运行 遇到的问题是,当我重新启动虚拟机 运行 连接服务器(使用 vagrant)时,程序不会执行。但是经过一些测试,我发现在我 运行 rails 运行ner (执行的命令无关紧要)之后它会开始正在工作。
class Admin::AccessLogManageController < Admin::AdminController
def update_project_ids
command = "rbenv exec bundle exec rails runner --environment=#{Rails.env} Tasks::UpdateAccessLogProjectIds.execute"
pid =spawn(command, :chdir=>".")
Process.detach(pid)
end
end
我发现了问题。它与 spring 有关,本质上是将环境设置为尝试 运行 和 spring,但它不会自动启动进程。添加 DISABLE_SPRING=1 似乎可以解决问题。
class Admin::AccessLogManageController < Admin::AdminController
def update_project_ids
command = "DISABLE_SPRING=1 rbenv exec bundle exec rails runner --environment=#{Rails.env} Tasks::UpdateAccessLogProjectIds.execute"
pid =spawn(command, :chdir=>".")
Process.detach(pid)
end
end
这里有我解决问题所需的信息。
我正在尝试执行此任务以从控制器更新大量数据,以便当管理员用户访问此方法时它将 运行 执行上述任务。我已经确认任务本身没有任何问题,但我不太确定它的调用方式。
我 运行 遇到的问题是,当我重新启动虚拟机 运行 连接服务器(使用 vagrant)时,程序不会执行。但是经过一些测试,我发现在我 运行 rails 运行ner (执行的命令无关紧要)之后它会开始正在工作。
class Admin::AccessLogManageController < Admin::AdminController
def update_project_ids
command = "rbenv exec bundle exec rails runner --environment=#{Rails.env} Tasks::UpdateAccessLogProjectIds.execute"
pid =spawn(command, :chdir=>".")
Process.detach(pid)
end
end
我发现了问题。它与 spring 有关,本质上是将环境设置为尝试 运行 和 spring,但它不会自动启动进程。添加 DISABLE_SPRING=1 似乎可以解决问题。
class Admin::AccessLogManageController < Admin::AdminController
def update_project_ids
command = "DISABLE_SPRING=1 rbenv exec bundle exec rails runner --environment=#{Rails.env} Tasks::UpdateAccessLogProjectIds.execute"
pid =spawn(command, :chdir=>".")
Process.detach(pid)
end
end
这里有我解决问题所需的信息。