Ruby on rails 运行影响数据库的每日脚本
我想写一个脚本,我可以在我的Rails应用程序下配置cron每24小时运行一次 script.rbRuby on rails 运行影响数据库的每日脚本,ruby-on-rails,ruby,Ruby On Rails,Ruby,我想写一个脚本,我可以在我的Rails应用程序下配置cron每24小时运行一次 script.rb User.all.each do |user| days = user[:days] if days >= 1 days = days - 1 end user.update_attribute(:days, days) end 但是,无论何时运行此操作,都会出现以下错误: 未初始化常量用户(名称错误) 怎么了 如果您在Rails应用程序
User.all.each do |user|
days = user[:days]
if days >= 1
days = days - 1
end
user.update_attribute(:days, days)
end
但是,无论何时运行此操作,都会出现以下错误:
未初始化常量用户(名称错误)
怎么了 如果您在Rails应用程序的主目录中,则只需执行以下操作:
rails runner -e production script.rb
对于cron(假设script.rb再次位于home dir中):
捆绑包的完整路径(哪个捆绑包
)
0****cd/project\u home&/bundle\u exec rails runner-e production script.rb可执行文件
另一种方法是
在脚本顶部要求_relative'config/environment.rb'
(根据您的用例调整路径);这会对性能造成轻微的影响,但如果您每天只运行一次,几秒钟的启动惩罚就无关紧要了
此外,您可能需要适当地设置RAILS\u ENV
,以访问适当的数据库表。我总是使用它来管理cron作业
在任何时候安装,然后将以下脚本添加到config/schedule.rb
:
every :day do
runner 'User.all.each {|user| user.decrement!(:days) if user.days > 0}'
end
然后从终端运行,只要-w
。未定义的局部变量或main:Object的“script”方法(NameError)是否从项目的主目录运行rails runner script.rb
?不,从一个子目录,我会四处移动。现在我得到了一个完全错误,fe_sendauth:没有提供密码(PG::ConnectionBad)看看您的config/database.yml
,生产环境的密码是否类似于
?