starting Resque

This commit is contained in:
Matthew K. Fu JuYuan 2012-04-13 12:10:47 +08:00 committed by Christophe Vilayphiou
parent ba4385e3fd
commit 7339d1ee4a
11 changed files with 114 additions and 11 deletions

View File

@ -19,6 +19,8 @@ gem "mongo_session_store-rails3"
gem 'nokogiri' gem 'nokogiri'
gem 'radius' gem 'radius'
gem 'rake' gem 'rake'
gem 'resque-scheduler', :require => 'resque_scheduler'
gem 'resque', :require => "resque/server"
gem 'ruby-debug19' gem 'ruby-debug19'
gem 'rubyzip' gem 'rubyzip'
gem 'sinatra' gem 'sinatra'

View File

@ -153,6 +153,18 @@ GEM
rake (0.9.2.2) rake (0.9.2.2)
rdoc (3.12) rdoc (3.12)
json (~> 1.4) json (~> 1.4)
redis (2.2.2)
redis-namespace (1.0.3)
redis (< 3.0.0)
resque (1.20.0)
multi_json (~> 1.0)
redis-namespace (~> 1.0.2)
sinatra (>= 0.9.2)
vegas (~> 0.1.2)
resque-scheduler (1.9.9)
redis (>= 2.0.1)
resque (>= 1.8.0)
rufus-scheduler
rspec (2.8.0) rspec (2.8.0)
rspec-core (~> 2.8.0) rspec-core (~> 2.8.0)
rspec-expectations (~> 2.8.0) rspec-expectations (~> 2.8.0)
@ -182,6 +194,8 @@ GEM
ruby_parser (2.3.1) ruby_parser (2.3.1)
sexp_processor (~> 3.0) sexp_processor (~> 3.0)
rubyzip (0.9.6.1) rubyzip (0.9.6.1)
rufus-scheduler (2.0.16)
tzinfo (>= 0.3.23)
ruport (1.6.3) ruport (1.6.3)
fastercsv fastercsv
pdf-writer (= 1.1.8) pdf-writer (= 1.1.8)
@ -222,6 +236,8 @@ GEM
uglifier (1.2.3) uglifier (1.2.3)
execjs (>= 0.3.0) execjs (>= 0.3.0)
multi_json (>= 1.0.2) multi_json (>= 1.0.2)
vegas (0.1.11)
rack (>= 1.0.0)
warden (1.1.1) warden (1.1.1)
rack (>= 1.0) rack (>= 1.0)
watchr (0.7) watchr (0.7)
@ -259,6 +275,8 @@ DEPENDENCIES
radius radius
rails (>= 3.1.0, < 3.2.0) rails (>= 3.1.0, < 3.2.0)
rake rake
resque
resque-scheduler
rspec (~> 2.0) rspec (~> 2.0)
rspec-rails (~> 2.0) rspec-rails (~> 2.0)
ruby-debug19 ruby-debug19

11
app/jobs/fetch_time.rb Normal file
View File

@ -0,0 +1,11 @@
require 'open-uri'
require 'nokogiri'
module FetchTime
@queue = :fetch_time
def self.perform()
sleep 10
doc = Nokogiri::HTML(open('http://www.timeanddate.com/worldclock/city.html?n=241'))
CronMail.time_check(doc.at('#ct').children.first.text).deliver
end
end

8
app/mailer/cron_mail.rb Normal file
View File

@ -0,0 +1,8 @@
class CronMail < ActionMailer::Base
default :from => "orbit_test@rulingcom.com"
def time_check(msg)
#attachments["rails.png"] = File.read("#{Rails.root}/public/images/rails.png")
mail(:to => "Matt <matt@rulingcom.com>", :subject => msg)
end
end

View File

@ -29,16 +29,16 @@ Orbit::Application.configure do
# :sender_address => %{"notifier" <redmine@rulingcom.com>}, # :sender_address => %{"notifier" <redmine@rulingcom.com>},
# :exception_recipients => %w{chris@rulingcom.com} # :exception_recipients => %w{chris@rulingcom.com}
# config.action_mailer.delivery_method = :smtp config.action_mailer.delivery_method = :smtp
# config.action_mailer.smtp_settings = { config.action_mailer.smtp_settings = {
# :tls => true, :tls => true,
# :enable_starttls_auto => true, :enable_starttls_auto => true,
# :address => "smtp.gmail.com", :address => "smtp.gmail.com",
# :port => '587', :port => '587',
# :domain => "smtp.gmail.com", :domain => "smtp.gmail.com",
# :authentication => "plain", :authentication => "plain",
# :user_name => "redmine@rulingcom.com", :user_name => "redmine@rulingcom.com",
# :password => "rulingredmine" } :password => "rulingredmine" }
end end

View File

@ -0,0 +1,15 @@
require 'resque_scheduler'
require 'resque_scheduler/server'
require 'yaml'
rails_root = ENV['RAILS_ROOT'] || File.dirname(__FILE__) + '/../..'
rails_env = ENV['RAILS_ENV'] || 'development'
resque_config = YAML.load_file(rails_root + '/config/resque.yml')
Resque.redis = resque_config[rails_env]
Resque.schedule = YAML.load_file("#{Rails.root}/config/resque_schedule.yml")
Dir["#{Rails.root}/app/jobs/*.rb"].each { |file| require file }
# current_path = Rails.root.to_s.gsub(/\s/,'\ ')
# queues = [:test]

2
config/resque.yml Normal file
View File

@ -0,0 +1,2 @@
development: localhost:6379
production: localhost:6379

View File

@ -0,0 +1,6 @@
time_to_talk_a_rest:
cron: "*/5 * * * *"
class: FetchTime
queue: daemons
rails_env: development
description: Send Email for Remind Time

View File

@ -12,6 +12,7 @@ Orbit::Application.routes.draw do
# routes for admin # routes for admin
namespace :admin do namespace :admin do
mount Resque::Server.new, :at => "/resque"
resources :assets resources :assets
resources :app_auths resources :app_auths
resources :object_auths do resources :object_auths do

View File

@ -1,3 +1,4 @@
require 'resque_scheduler/tasks'
# encoding: utf-8 # encoding: utf-8
namespace :anc do namespace :anc do

39
lib/tasks/resque.rake Normal file
View File

@ -0,0 +1,39 @@
# require "resque/tasks"
# require 'resque/scheduler'
# require 'resque/scheduler'
#
# task "resque:setup" => :environment
# Resque tasks
require 'resque/tasks'
require 'resque_scheduler/tasks'
namespace :resque do
task :setup => :environment do
require 'resque'
require 'resque_scheduler'
require 'resque/scheduler'
# you probably already have this somewhere
Resque.redis = 'localhost:6379'
# If you want to be able to dynamically change the schedule,
# uncomment this line. A dynamic schedule can be updated via the
# Resque::Scheduler.set_schedule (and remove_schedule) methods.
# When dynamic is set to true, the scheduler process looks for
# schedule changes and applies them on the fly.
# Note: This feature is only available in >=2.0.0.
#Resque::Scheduler.dynamic = true
# The schedule doesn't need to be stored in a YAML, it just needs to
# be a hash. YAML is usually the easiest.
Resque.schedule = YAML.load_file('config/resque_schedule.yml')
# If your schedule already has +queue+ set for each job, you don't
# need to require your jobs. This can be an advantage since it's
# less code that resque-scheduler needs to know about. But in a small
# project, it's usually easier to just include you job classes here.
# So, someting like this:
#require 'jobs'
end
end