Ruby on rails Heroku rails控制台输出
我正在我的模型上运行一个大的更新(生成一个随机的公共id),这将永远花费在heroku上 运行命令: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'
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万张唱片。