Merge branch 'jobs_and_mail' into ldap
Conflicts: config/environments/development.rb config/routes.rb
This commit is contained in:
		
						commit
						65a0998080
					
				
							
								
								
									
										3
									
								
								Gemfile
								
								
								
								
							
							
						
						
									
										3
									
								
								Gemfile
								
								
								
								
							| 
						 | 
					@ -21,6 +21,9 @@ gem 'mysql2'
 | 
				
			||||||
gem 'nokogiri'
 | 
					gem 'nokogiri'
 | 
				
			||||||
gem 'radius'
 | 
					gem 'radius'
 | 
				
			||||||
gem 'rake'
 | 
					gem 'rake'
 | 
				
			||||||
 | 
					gem 'resque' # background jobs
 | 
				
			||||||
 | 
					gem 'resque-scheduler' # job scheduling
 | 
				
			||||||
 | 
					gem 'resque-restriction'
 | 
				
			||||||
gem 'ruby-debug19'
 | 
					gem 'ruby-debug19'
 | 
				
			||||||
gem 'rubyzip'
 | 
					gem 'rubyzip'
 | 
				
			||||||
gem 'therubyracer'
 | 
					gem 'therubyracer'
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										21
									
								
								Gemfile.lock
								
								
								
								
							
							
						
						
									
										21
									
								
								Gemfile.lock
								
								
								
								
							| 
						 | 
					@ -154,6 +154,20 @@ 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-restriction (0.3.0)
 | 
				
			||||||
 | 
					      resque (>= 1.7.0)
 | 
				
			||||||
 | 
					    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)
 | 
				
			||||||
| 
						 | 
					@ -183,6 +197,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)
 | 
				
			||||||
| 
						 | 
					@ -223,6 +239,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)
 | 
				
			||||||
| 
						 | 
					@ -262,6 +280,9 @@ DEPENDENCIES
 | 
				
			||||||
  radius
 | 
					  radius
 | 
				
			||||||
  rails (>= 3.1.0, < 3.2.0)
 | 
					  rails (>= 3.1.0, < 3.2.0)
 | 
				
			||||||
  rake
 | 
					  rake
 | 
				
			||||||
 | 
					  resque
 | 
				
			||||||
 | 
					  resque-restriction
 | 
				
			||||||
 | 
					  resque-scheduler
 | 
				
			||||||
  rspec (~> 2.0)
 | 
					  rspec (~> 2.0)
 | 
				
			||||||
  rspec-rails (~> 2.0)
 | 
					  rspec-rails (~> 2.0)
 | 
				
			||||||
  ruby-debug19
 | 
					  ruby-debug19
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										2
									
								
								Rakefile
								
								
								
								
							
							
						
						
									
										2
									
								
								Rakefile
								
								
								
								
							| 
						 | 
					@ -1,7 +1,9 @@
 | 
				
			||||||
 | 
					# /usr/bin/ruby -Ku
 | 
				
			||||||
# Add your own tasks in files placed in lib/tasks ending in .rake,
 | 
					# Add your own tasks in files placed in lib/tasks ending in .rake,
 | 
				
			||||||
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
 | 
					# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require File.expand_path('../config/application', __FILE__)
 | 
					require File.expand_path('../config/application', __FILE__)
 | 
				
			||||||
 | 
					require 'resque/tasks'
 | 
				
			||||||
require 'rake/dsl_definition'
 | 
					require 'rake/dsl_definition'
 | 
				
			||||||
require 'rake'
 | 
					require 'rake'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,15 @@
 | 
				
			||||||
 | 
					# require 'open-uri'
 | 
				
			||||||
 | 
					# require 'nokogiri'
 | 
				
			||||||
 | 
					class FetchTime < Resque::Plugins::RestrictionJob
 | 
				
			||||||
 | 
					  restrict :per_300 => 10
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  @queue = :low
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  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
 | 
				
			||||||
 | 
					    puts "Mail Sent"
 | 
				
			||||||
 | 
					    true
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,8 @@
 | 
				
			||||||
 | 
					class NccuCalendar 
 | 
				
			||||||
 | 
					  @queue = :high
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def self.perform()
 | 
				
			||||||
 | 
					#    sleep 10
 | 
				
			||||||
 | 
					    puts "NccuCalendar Sync"
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,9 @@
 | 
				
			||||||
 | 
					class SyncDb 
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  @queue = :high
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def self.perform()
 | 
				
			||||||
 | 
					#    sleep 10
 | 
				
			||||||
 | 
					    puts "DB Sync"
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
| 
						 | 
					@ -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
 | 
				
			||||||
| 
						 | 
					@ -61,6 +61,8 @@ module Orbit
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Enable the asset pipeline
 | 
					    # Enable the asset pipeline
 | 
				
			||||||
     config.assets.enabled = true
 | 
					     config.assets.enabled = true
 | 
				
			||||||
 | 
					     #config.time_zone = 'Taipei'  
 | 
				
			||||||
 | 
					     ENV['TZ'] = 'Asia/Taipei'  
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
Orbit_Apps = []
 | 
					Orbit_Apps = []
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,17 +28,16 @@ Orbit::Application.configure do
 | 
				
			||||||
  #   :email_prefix => "[R4_error]",
 | 
					  #   :email_prefix => "[R4_error]",
 | 
				
			||||||
  #   :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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,20 @@
 | 
				
			||||||
 | 
					require 'resque_scheduler'
 | 
				
			||||||
 | 
					# require 'resque_scheduler/server'
 | 
				
			||||||
 | 
					# require 'yaml'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Resque.redis = 'localhost:6379'
 | 
				
			||||||
 | 
					#Resque.redis.namespace = "resque:SchedulerExample"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Dir["#{Rails.root}/app/jobs/*.rb"].each { |file| require file }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 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(Rails.root.join('config', 'resque_schedule.yml'))
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,55 @@
 | 
				
			||||||
 | 
					rails_env   =  'development' #ENV['RAILS_ENV']  || "production"
 | 
				
			||||||
 | 
					rails_root  = ENV['RAILS_ROOT'] || "/Users/kaito/Documents/MyWorkspeace/orbit/orbit"
 | 
				
			||||||
 | 
					num_workers = rails_env == 'production' ? 5 : 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					num_workers.times do |num|
 | 
				
			||||||
 | 
					  God.watch do |w|
 | 
				
			||||||
 | 
					    w.dir      = "#{rails_root}"
 | 
				
			||||||
 | 
					    w.name     = "resque-#{num}"
 | 
				
			||||||
 | 
					    w.group    = 'resque'
 | 
				
			||||||
 | 
					    w.interval = 30.seconds
 | 
				
			||||||
 | 
					    p "/usr/bin/rake -f #{rails_root}/Rakefile resque:work  QUEUE=* RAILS_ENV=#{rails_env}"
 | 
				
			||||||
 | 
					#    w.env      = {"QUEUE"=>"critical,high,low", "RAILS_ENV"=>rails_env}
 | 
				
			||||||
 | 
					    w.start    = "rake -f #{rails_root}/Rakefile resque:work  QUEUE=* RAILS_ENV=#{rails_env}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    w.uid = 'kaito'
 | 
				
			||||||
 | 
					    w.gid = 'staff'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # restart if memory gets too high
 | 
				
			||||||
 | 
					    w.transition(:up, :restart) do |on|
 | 
				
			||||||
 | 
					      on.condition(:memory_usage) do |c|
 | 
				
			||||||
 | 
					        c.above = 350.megabytes
 | 
				
			||||||
 | 
					        c.times = 2
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # determine the state on startup
 | 
				
			||||||
 | 
					    w.transition(:init, { true => :up, false => :start }) do |on|
 | 
				
			||||||
 | 
					      on.condition(:process_running) do |c|
 | 
				
			||||||
 | 
					        c.running = true
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # determine when process has finished starting
 | 
				
			||||||
 | 
					    w.transition([:start, :restart], :up) do |on|
 | 
				
			||||||
 | 
					      on.condition(:process_running) do |c|
 | 
				
			||||||
 | 
					        c.running = true
 | 
				
			||||||
 | 
					        c.interval = 5.seconds
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # failsafe
 | 
				
			||||||
 | 
					      on.condition(:tries) do |c|
 | 
				
			||||||
 | 
					        c.times = 5
 | 
				
			||||||
 | 
					        c.transition = :start
 | 
				
			||||||
 | 
					        c.interval = 5.seconds
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # start if process is not running
 | 
				
			||||||
 | 
					    w.transition(:up, :start) do |on|
 | 
				
			||||||
 | 
					      on.condition(:process_running) do |c|
 | 
				
			||||||
 | 
					        c.running = false
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,17 @@
 | 
				
			||||||
 | 
					do_mail_matt:
 | 
				
			||||||
 | 
					  every: 10s
 | 
				
			||||||
 | 
					  class: FetchTime
 | 
				
			||||||
 | 
					  args: 
 | 
				
			||||||
 | 
					  description: Runs the perform method in FetchTime
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					nccu_daily_ldap_sync:
 | 
				
			||||||
 | 
					  cron: 30 * * * * *
 | 
				
			||||||
 | 
					  class: SyncDb
 | 
				
			||||||
 | 
					  args:
 | 
				
			||||||
 | 
					  description: Runs the perform method in SnycDB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					nccu_claender_sync:
 | 
				
			||||||
 | 
					  every: 1m
 | 
				
			||||||
 | 
					  class: NccuCalendar
 | 
				
			||||||
 | 
					  args:
 | 
				
			||||||
 | 
					  description: Runs the perform method in NccuCalendar
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,7 @@
 | 
				
			||||||
Orbit::Application.routes.draw do
 | 
					Orbit::Application.routes.draw do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  devise_for :users,:controllers => {:sessions => 'sessions'}
 | 
					  devise_for :users,:controllers => {:sessions => 'sessions'}
 | 
				
			||||||
 | 
					  mount Resque::Server, :at => "/admin/resque"
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  # routes for sinatra app
 | 
					  # routes for sinatra app
 | 
				
			||||||
  match '/site/set_registered', :to => CentralServerExchangeApp  
 | 
					  match '/site/set_registered', :to => CentralServerExchangeApp  
 | 
				
			||||||
| 
						 | 
					@ -12,6 +13,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
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,4 @@
 | 
				
			||||||
 | 
					require 'resque_scheduler/tasks'
 | 
				
			||||||
# encoding: utf-8 
 | 
					# encoding: utf-8 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace :anc do
 | 
					namespace :anc do
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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
 | 
				
			||||||
		Loading…
	
		Reference in New Issue