rails中以脚本的形式执行某段代码+定时运行+rescue

1. 新建一个 文件: script/test_hi.rb

# 运行方式:
# $ bundle exec ruby script/test_hi.rb
ENV['RAILS_ENV'] = ARGV.first || ENV['RAILS_ENV'] || 'production'
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
require 'rails'
require 'rubygems'

puts 'hihihi'
puts User.all

2. 运行: $ bundle exec ruby script/test_hi.rb

loop do
  7   
  8   User.all.each do |User|                                                   
  9     User.create_jobs #在/model/user.rb中存在更新user数据的方法 def create_jobs ...end
 10   end
 11   
 12   sleep 48 * 3600
 13                                                                                   
 14 end

在script文件创建新的脚本,执行定时, 3600单位默认是s, 48*3600就是48小时,

同时,要考虑数据的更新策略:
1. 全删,然后全加
2. 只更新变化的部分 (优先用这个)

loop do中的方法是创建新的数据,所以考虑一下根据id 或者name进行判断,如果有变化,就更新,没有就不变。

使用 else 语句

如果提供了 else 子句,它一般是放置在 rescue 子句之后,任意 ensure 之前。

else 子句的主体只有在代码主体没有抛出异常时执行。
语法
begin
   #.. 过程
   #.. 抛出异常
rescue
   #.. 处理错误
else
   #.. 如果没有异常则执行
ensure
   #.. 最后确保执行
   #.. 这总是会执行
end


实例
begin
 # 抛出 'A test exception.'
 puts "I'm not raising exception"
rescue Exception => e
  puts e.message
  puts e.backtrace.inspect
else
   puts "Congratulations-- no errors!"
ensure
  puts "Ensuring execution"
end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值