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
 |