Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Heroku rails控制台输出_Ruby On Rails_Heroku - Fatal编程技术网

Ruby on rails Heroku rails控制台输出

Ruby on rails Heroku rails控制台输出,ruby-on-rails,heroku,Ruby On Rails,Heroku,我正在我的模型上运行一个大的更新(生成一个随机的公共id),这将永远花费在heroku上 运行命令: Episode.where(public_id: nil).find_each do |e| e.set_public_id e.save end 这是一个永远的黑匣子。在本地运行时,我可以通过数据库提交看到进度 有办法知道发生了什么吗?是否有其他方法可以运行此命令?创建一个rake任务并用于通知发生了什么 #lib/tasks/episode.rake require 'rake'

我正在我的模型上运行一个大的更新(生成一个随机的公共id),这将永远花费在heroku上

运行命令:

Episode.where(public_id: nil).find_each do |e|
  e.set_public_id
  e.save
end
这是一个永远的黑匣子。在本地运行时,我可以通过数据库提交看到进度

有办法知道发生了什么吗?是否有其他方法可以运行此命令?

创建一个rake任务并用于通知发生了什么

#lib/tasks/episode.rake
require 'rake'

namespace :episode do
  desc "your description"
  task :update => :environment do
    Episode.where(public_id: nil).find_each do |e|
      Rails.logger.info "updating #{e} ..."          
      e.set_public_id
      e.save
    end
  end
end
然后运行它

heroku run rake episode:update
您可以在另一个终端窗口中使用

heroku logs -t 
制作一个rake任务并用于通知正在发生的事情

#lib/tasks/episode.rake
require 'rake'

namespace :episode do
  desc "your description"
  task :update => :environment do
    Episode.where(public_id: nil).find_each do |e|
      Rails.logger.info "updating #{e} ..."          
      e.set_public_id
      e.save
    end
  end
end
然后运行它

heroku run rake episode:update
您可以在另一个终端窗口中使用

heroku logs -t 

你有多少集没有公开id?为什么不使用
e.save
替代?您可以在方法中添加
p
命令来打印某种进度,以便在控制台中查看。或者启动第二个控制台实例并检查有多少记录具有公共id;)我有230万张唱片,在当地花了几个小时。剧集。在哪里(public_id:nil)。指望heroku没有足够快地返回,所以我取消了命令。你有多少集public_id为nil?为什么不使用
e.save
替代?您可以在方法中添加
p
命令来打印某种进度,以便在控制台中查看。或者启动第二个控制台实例并检查有多少记录具有公共id;)我有230万张唱片,在当地花了几个小时。插曲.where(public_id:nil).count on heroku返回速度不够快,因此我取消了命令。您还应该能够使用
put
而不是
Rails.logger
,它应该只将内容打印到您打开的控制台上。通过这种方式,您可以避免使用
heroku logs-t
命令。是否有任何原因需要在heroku上花费更长的时间?到目前为止,我看到了一个更新,看起来像是一个批量(甚至需要3000万才能启动)。当地花了几个小时。这是230万条记录。您还应该能够使用
put
而不是
Rails.logger
,并且它应该只将内容打印到您打开的控制台上。通过这种方式,您可以避免使用
heroku logs-t
命令。是否有任何原因需要在heroku上花费更长的时间?到目前为止,我看到了一个更新,看起来像是一个批量(甚至需要3000万才能启动)。当地花了几个小时。这是230万张唱片。