之前先在initializers 文件夹下建立了一个task.rb ,rails服务启动的时候执行,本地没问题,可是服务器上启动了3个进程,会执行3遍,解决方法是 把task.rb 放到 script/文件夹下,然后在项目根目录执行 ruby script/task.rb production &。以为ok了。but又出问题了,
我的日志输出路径是
Logger.new("#{Rails.root_to_s}/log/test.log"),运行脚本的时候报错 uninitialized constant RAILS ,解决方法是在task.rb文件头 加上下面两行:
ENV['RAILS_ENV'] = ARGV.first || ENV['RAILS_ENV'] || 'development'
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
最下面还要加上
scheduler.join
但是我用下面的方法就可以了:
在script下新建task.rb文件,内容如下
require 'rubygems'
require 'rufus/scheduler'
scheduler = Rufus::Scheduler.new scheduler.every("2s") do
puts Time.now
end
scheduler.join
这样后在工程根目录执行ruby script/task.rb &就可以执行了,可以看到输出。 用ctrl + d可以结束进程
但是我在config/initializers文件夹下新建task,总是提示require找不到文件。。。哎。。。。失败啊。。。。