115 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| # encoding: utf-8 
 | |
| require 'erb'
 | |
| 
 | |
| namespace :site do
 | |
|   
 | |
|   task :build => :environment do
 | |
|     Site.destroy_all
 | |
|     Purchase.destroy_all
 | |
|     
 | |
|     Site.create( :school => 'RulingDigital University', :department => 'Computer Science', :valid_locales => [ 'en', 'zh_tw' ], :in_use_locales => [ 'zh_tw', 'en' ]) 
 | |
|     User.create!(:email=>'chris@rulingcom.com',:admin=>true,:user_id=>'chris',:password=>'password')
 | |
|     `mongo #{Mongoid.config.database.name} --eval "db.fs.chunks.ensureIndex({files_id: 1, n: 1})"`
 | |
| 
 | |
|     puts  "Congres you can now login within url"
 | |
|     puts 'Please upload design package (/admin/designs/upload_package ) and run rake site:necessary_data'
 | |
|     I18nVariable.create!( :document_class => 'language', :key => 'en', :en => 'English', :zh_tw => '英文' )
 | |
|     I18nVariable.create!( :document_class => 'language', :key => 'zh_tw', :en => 'Chinese', :zh_tw => '中文' )
 | |
|     Info.create!(key: "profile", built_in: true, disabled: false, title: {"zh_tw"=>"基本欄位", "en"=>"Basic Info"}, to_search: false)  
 | |
|   end
 | |
|   
 | |
|   task :create_logrotate => :environment do #Can remove after all products update
 | |
|     create_rulingcom_logrotate
 | |
|   end
 | |
| 
 | |
|   task :necessary_data => :environment do
 | |
|     auto_setting
 | |
|     site = Site.first
 | |
|     site.update_attribute(:title,'RulingOrbit Demo Site')
 | |
|     site.update_attribute(:resque_namespace,@resque_namespace)
 | |
| 
 | |
|     # home_trans = I18nVariable.create!( :document_class => 'Home', :key => 'home', :en => 'Homepage', :zh_tw => '首頁')
 | |
|     design = Design.first
 | |
|     site.design = design
 | |
|     site.save
 | |
|     theme = design.themes.first
 | |
|     home = Page.new(  :design_id => design.id, :name => 'home', :is_published => true, :theme_id => theme.id )
 | |
| 
 | |
|     home.title_translations = {"zh_tw"=>"首頁", "en"=>"Home"}
 | |
|     home.save 
 | |
| 
 | |
|     puts "Rember to restart server after you setup all sites for starting God"
 | |
|   end
 | |
| 
 | |
|   task :start_auto_setting => :environment do
 | |
|     auto_setting
 | |
|   end
 | |
| 
 | |
|   def auto_setting
 | |
|     puts "Enter your resque namespace[Orbit]:......"
 | |
|     @resque_namespace = STDIN.gets.gsub("\n",'')
 | |
|     @resque_namespace = APP_CONFIG['orbit'] if @resque_namespace.empty?
 | |
| 
 | |
| 
 | |
|     puts "Is this the only site [ Entry site? ] on this mechine?[Default No]:......"
 | |
|     site_is_alone = false
 | |
|     site_is_alone = STDIN.gets.gsub("\n",'')
 | |
|     site_is_alone = true if site_is_alone.downcase == 'yes'
 | |
| 
 | |
|     puts "Is this a primary site?[Default No]:......"
 | |
|     site_is_primary = false
 | |
|     site_is_primary = STDIN.gets.gsub("\n",'')
 | |
|     site_is_primary = true if site_is_primary.downcase == 'yes'
 | |
| 
 | |
|     puts "Traffic heavy?[Default No]:......"
 | |
|     traffic_heavy = false
 | |
|     traffic_heavy = STDIN.gets.gsub("\n",'')
 | |
|     traffic_heavy = true if traffic_heavy.downcase == 'yes'
 | |
| 
 | |
|     @traffic_rate = traffic_heavy ? 2 : 1
 | |
| 
 | |
|     if site_is_alone
 | |
|         @resque_workers = 5 * @traffic_rate  #Entry Site 
 | |
|     else
 | |
|         if site_is_primary
 | |
|             @resque_workers = 2  * @traffic_rate  #Primary Site 
 | |
|         else
 | |
|             @resque_workers = 1  * @traffic_rate  #Secondary Site 
 | |
|         end
 | |
|     end
 | |
|     
 | |
|     resque_setting = ERB.new(File.new("lib/template/setting/resque.god.erb").read)
 | |
|     File.open("config/resque.god", 'w') { |file| file.write(resque_setting.result) }
 | |
| 
 | |
|     resque_schedule_setting = ERB.new(File.new("lib/template/setting/resque_schedule.god.erb").read)
 | |
|     File.open("config/resque_schedule.god", 'w') { |file| file.write(resque_schedule_setting.result) }
 | |
| 
 | |
|     if site_is_primary
 | |
|         solr_setting = ERB.new(File.new("lib/template/setting/solr.god.erb").read)
 | |
|         File.open("config/solr.god", 'w') { |file| file.write(solr_setting.result) }        
 | |
|         create_rulingcom_logrotate
 | |
|     end  
 | |
|   end
 | |
| 
 | |
| 
 | |
| def create_rulingcom_logrotate
 | |
|     `sudo mkdir -p /var/log/rulingcom` unless File.directory? "/var/log/rulingcom"
 | |
|     @project_folder = ENV["PWD"]
 | |
|     puts "Is your Orbit folder: #{@project_folder} (If YES => Press enter,or enter your path)"
 | |
|     user_enter_project_folder = STDIN.gets.gsub("\n",'')
 | |
|     @project_folder = user_enter_project_folder unless user_enter_project_folder.empty?
 | |
| 
 | |
|     @user_home_folder = ENV["HOME"]
 | |
|     puts "Is your Home folder: #{@user_home_folder} (If YES => Press enter,or enter your path)"
 | |
|     user_enter_home_folder = STDIN.gets.gsub("\n",'')
 | |
|     @user_home_folder = user_enter_home_folder unless user_enter_home_folder.empty?
 | |
| 
 | |
|     logrotate_setting = ERB.new(File.new("lib/template/setting/rulingcom_log.erb").read)
 | |
|     File.open("#{@project_loc}/tmp/logrotate_setting", 'w') { |file| file.write(logrotate_setting.result) } 
 | |
| 
 | |
|     `sudo cp #{@project_loc}/tmp/logrotate_setting /etc/logrotate.d/rulingcom` 
 | |
|     `logrotate -v -f /etc/logrotate.conf`
 | |
| end
 | |
| 
 | |
| end
 |