際際滷

際際滷Share a Scribd company logo
Batch processing on
           RoR
      http://slidesha.re/k6zrSL



@SergeyMoiseev
moiseev.sergey@gmail.com
 亠弍亠


 http://moiseev--sergey.moikrug.ru/
 仗亳 仆舒 Ruby  2007 亞仂亟舒.
舒亟舒舒
 亠仆亠舒亳 从仂仆亠仆舒 (从仆亳亞) 亟仍 舒亶舒.
 仂亟仆仂亶 仂仄舒: PDF.
 仂亟仆仂亶 仂仄舒: SWF.
 亠仆亠舒仂: print2鍖ash.
 仆仂于仆仂亶 仗亳仂亳亠: 从仂仂 仂弍舒弍仂从亳
  (从仂仍亳亠于仂 仗弍仍亳从亠仄 从仆亳亞 于 仄亠).
ミ夷術

 仆亳亞亳 仗仂仗舒ム 舒亰仆仂亞仂 从舒亠于舒, 舒
  亳亰 仆亳 亠弍亠 仄仆仂亞仂从舒仆仂亶
  仗亠亠舒弍仂从亳.
 Print2鍖ash 仄仂亢亠 仗亠舒舒 仆亠 弍仂仍亠亠
  仂亟仆仂亞仂 亰舒亟舒仆亳 亰舒 舒亰 于 仗亠亟亠仍舒 仄舒亳仆.
 丐亠弍亠 windows 仂从亢亠仆亳.
亳亠从舒
 仆仂亢亠于亠仆仆亠 亳仆舒仍仍亳亳 Rails
  仗亳仍仂亢亠仆亳.
 弍舒 弍舒亰舒.
 仂仆亠仆亶 舒于仂仄舒 亟仍 从仂仆仂仍
  仂仂礌亳 亰舒亟舒仆亳.
 亟亠仍仆亠 仂仗亠舒亳亳 - rake 舒从亳
  亰舒仗从舒亠仄亠 仗仂 从仂仆 亳仍亳 仗仍舒仆亳仂于亳从
  亰舒亟舒.
仂仆亳亞舒亳
Batch processing in rails
Batch processing in rails
https://github.com/rubyist/aasm
include AASM
aasm_column :state
aasm_initial_state :loaded
aasm_state :loaded, :enter => :reset_retry_count, :exit=>:apply_total_pages
aasm_state :in_abbyy, :enter => :copy_to_abbyy
aasm_state :p2f_queue, :enter=>:apply_pages_count
aasm_state :in_p2fline, :enter => :copy_to_p2fline
aasm_state :p2f_printing, :enter => :p2f_print
aasm_state :print_failed, :enter => :free_p2fline
aasm_state :wait_for_confirm, :enter => :free_p2fline
aasm_state :confirmed
aasm_state :confirmed_non_full
aasm_state :on_server
aasm_state :on_server_non_full
aasm_state :published
aasm_state :published_non_full
aasm_state :hold
aasm_state :mycop
aasm_state :restarting, :after_enter => :check_avail_pdf
aasm_state :restarting_full, :exit=>:restart_full


                          弌仂仂礌亳 从仂仆亠仆仂亞仂 舒于仂仄舒舒
弌从舒 仄仂亟亠仍仆仂亞仂 仍仂
仂亠仄 仆亠 仂亠亠亟

 丐舒从 从舒亰舒仍仂 仗仂亠.
 仍 从舒亢亟仂亞仂 亰舒亟舒仆亳 仄仂亢仆仂 仂亟仆舒亰仆舒仆仂
  从舒亰舒 亠亞仂 舒.
 亟亳仆亶 从舒舒仍仂亞 仂 于亠仄 亞仂仂于仄 仆舒
  亠从亳亶 仄仂仄亠仆 从仂仆亠仆仂仄.
亠亠仂亞亠仆仆仂




   return unless RUBY_PLATFORM =~ /mswin/

   Dir[File.join(work_catalog,"page*.pdf")]
亟亳
   https://gist.github.com/949049#鍖le_book.rb
                                                             https://github.com/collectiveidea/acts_as_audited
acts_as_audited :except => [:name, :file_name]

   https://gist.github.com/949049#鍖le_production.rake

desc "Loads files into Production line"
task :process_batch => :environment do
  Audit.as_user("rake:process_batch") do
    Book.getFromBatch unless running?("process_batch")
  end
end
    https://gist.github.com/949049#鍖le_books_controller.rb

def restart
  if @book.restartable?
    Audit.as_user current_user do
      @book.restart_production!
    end
    flash[:notice] = '弍舒弍仂从舒 仗亠亠亰舒仗亠仆舒.'
  else
    flash[:error] = '亠亠亰舒仗从 仆亠于仂亰仄仂亢亠仆.'
  end
  redirect_to request.referer
end
http://munin-monitoring.org/




仂仆亳仂亳仆亞
namespace :munin do

  task :config do
    puts <<-CONFIG
graph_title Produced pages in last 5 minutes
graph_args -l 0
graph_vlabel pages amount
graph_category App
graph_info This graph shows amount of pages produced
texts.label Text files
docs.label Doc files
views.label View files
quotes.label Quote files
CONFIG
  exit 0
  end

  task :run => :environment do
    res = ActiveRecord::Base.connection.execute("select count(nullif(text_ready_time>(now()-'5
minutes'::interval),false)) as c0,count(nullif(doc_ready_time>(now()-'5 minutes'::interval),false)) as
c1,count(nullif(view_ready_time>(now()-'5 minutes'::interval),false)) as
c2,count(nullif(quote_ready_time>(now()-'5 minutes'::interval),false)) as c3 from pages where updated_at >
(now()-'5 minutes'::interval);")
    if res
      puts "texts.value #{res[0]['c0']}"
      puts "docs.value #{res[0]['c1']}"
      puts "views.value #{res[0]['c2']}"
      puts "quotes.value #{res[0]['c3']}"
    end
    exit 0
  end
end                            https://gist.github.com/949049#鍖le_munin.rake
http://www.nagios.org/
namespace :nagios do
  task :abbyy_activity, [:warn, :crit] => :environment do |t, args|
    if args.warn and args.crit
      states_list = ["loaded", "in_abbyy", "p2f_queue"]
      warn_level = args.warn.to_i
      crit_level = args.crit.to_i
      warn_events = Audit.find(:all, :conditions=>["auditable_type = 'Book' and (username is null or username
ilike 'rake:%') and action = 'update' and created_at > ?", warn_level.minutes.ago])
      crit_events = Audit.find(:all, :conditions=>["auditable_type = 'Book' and (username is null or username
ilike 'rake:%') and action = 'update' and created_at > ?", crit_level.minutes.ago])
      if (crit_count = crit_events.select{|a| a['changes']['state'] and (a['changes']['state'] &
states_list).size > 1 }).empty?
        puts "CRITICAL No state changes at abbyy for #{crit_level} minutes"
        exit 2
      end
      if (warn_count = warn_events.select{|a| a['changes']['state'] and (a['changes']['state'] &
states_list).size > 1 }).empty?
        puts "WARNING No state changes at abbyy for #{warn_level} minutes"
        exit 1
      end
      puts "OK Abbyy: state changes #{warn_count.size} for #{warn_level} minutes; state changes
#{crit_count.size} for #{crit_level} minutes."
      exit 0
    else
      exit 3
    end
  end


                                 https://gist.github.com/949049#鍖le_nagios.rake

More Related Content

What's hot (20)

Highload 仂亠仆 2012 仍亠从亳 10
Highload 仂亠仆 2012 仍亠从亳 10Highload 仂亠仆 2012 仍亠从亳 10
Highload 仂亠仆 2012 仍亠从亳 10
Technopark
CSSO 亢亳仄舒亠仄 CSS
CSSO  亢亳仄舒亠仄 CSSCSSO  亢亳仄舒亠仄 CSS
CSSO 亢亳仄舒亠仄 CSS
FDConf
仂亠仄 Mojolicious?
仂亠仄 Mojolicious?仂亠仄 Mojolicious?
仂亠仄 Mojolicious?
Anatoly Sharifulin
Sequel 仄亠舒仆亳亰仄 亟仂仗舒 从 , 仆舒仗亳舒仆仆亶 仆舒 Ruby
Sequel  仄亠舒仆亳亰仄 亟仂仗舒 从 , 仆舒仗亳舒仆仆亶 仆舒 RubySequel  仄亠舒仆亳亰仄 亟仂仗舒 从 , 仆舒仗亳舒仆仆亶 仆舒 Ruby
Sequel 仄亠舒仆亳亰仄 亟仂仗舒 从 , 仆舒仗亳舒仆仆亶 仆舒 Ruby
Alexey Nayden
#2 "舒仗仂舒仆亠仆仆亠 仂亳弍从亳 于 JavaScript" 亠仆亳 亠从仆仂于
#2 "舒仗仂舒仆亠仆仆亠 仂亳弍从亳 于 JavaScript" 亠仆亳 亠从仆仂于#2 "舒仗仂舒仆亠仆仆亠 仂亳弍从亳 于 JavaScript" 亠仆亳 亠从仆仂于
#2 "舒仗仂舒仆亠仆仆亠 仂亳弍从亳 于 JavaScript" 亠仆亳 亠从仆仂于
JSib
仂弍亠仆仆仂亳 仂于仄亠仆仂亶 舒弍仂 Ruby 亳 Oracle
仂弍亠仆仆仂亳 仂于仄亠仆仂亶 舒弍仂 Ruby 亳 Oracle仂弍亠仆仆仂亳 仂于仄亠仆仂亶 舒弍仂 Ruby 亳 Oracle
仂弍亠仆仆仂亳 仂于仄亠仆仂亶 舒弍仂 Ruby 亳 Oracle
Nikita Shilnikov
Cache GitHub Continous Integration
Cache GitHub  Continous IntegrationCache GitHub  Continous Integration
Cache GitHub Continous Integration
Eduard Lebedyuk
Wordpress Cron
Wordpress CronWordpress Cron
Wordpress Cron
versusbassz
JavaScript: 仗仂仍仂亠, 仆舒仂亠亠 亳 弍亟亠亠.
JavaScript: 仗仂仍仂亠, 仆舒仂亠亠 亳 弍亟亠亠.JavaScript: 仗仂仍仂亠, 仆舒仂亠亠 亳 弍亟亠亠.
JavaScript: 仗仂仍仂亠, 仆舒仂亠亠 亳 弍亟亠亠.
FDConf
舒亞亰从舒, 仂弍舒弍仂从舒, 舒仆亠仆亳亠 亳 仂亟舒舒 舒亳从亳
舒亞亰从舒, 仂弍舒弍仂从舒, 舒仆亠仆亳亠 亳 仂亟舒舒 舒亳从亳舒亞亰从舒, 仂弍舒弍仂从舒, 舒仆亠仆亳亠 亳 仂亟舒舒 舒亳从亳
舒亞亰从舒, 仂弍舒弍仂从舒, 舒仆亠仆亳亠 亳 仂亟舒舒 舒亳从亳
Kirill Mokevnin
Building better APIs on rails
Building better APIs on railsBuilding better APIs on rails
Building better APIs on rails
Roman Gorel
Streaming replication in practice
Streaming replication in practiceStreaming replication in practice
Streaming replication in practice
Alexey Lesovsky
弌仂弍亳舒亠仄 仗仂 于亳仆亳从舒仄 2弌 Web API 亳仆从亳 于 从舒亳仆从舒
弌仂弍亳舒亠仄 仗仂 于亳仆亳从舒仄 2弌 Web API  亳仆从亳 于 从舒亳仆从舒弌仂弍亳舒亠仄 仗仂 于亳仆亳从舒仄 2弌 Web API  亳仆从亳 于 从舒亳仆从舒
弌仂弍亳舒亠仄 仗仂 于亳仆亳从舒仄 2弌 Web API 亳仆从亳 于 从舒亳仆从舒
DevDay
Docker
DockerDocker
Docker
Ivan Grishaev
Drupal code sprint 亟仍 仆仂于亳从仂于
Drupal code sprint 亟仍 仆仂于亳从仂于Drupal code sprint 亟仍 仆仂于亳从仂于
Drupal code sprint 亟仍 仆仂于亳从仂于
Ovadiah Myrgorod
Mysql replication
Mysql replicationMysql replication
Mysql replication
Serge Tyatin
束亰仂仄仂仆亠 js 仗亳仍仂亢亠仆亳 亳仗仂仍亰仂于舒仆亳亠仄 catberry.js損, 亠仆亳 亠从仆仂于
束亰仂仄仂仆亠 js 仗亳仍仂亢亠仆亳  亳仗仂仍亰仂于舒仆亳亠仄 catberry.js損, 亠仆亳 亠从仆仂于束亰仂仄仂仆亠 js 仗亳仍仂亢亠仆亳  亳仗仂仍亰仂于舒仆亳亠仄 catberry.js損, 亠仆亳 亠从仆仂于
束亰仂仄仂仆亠 js 仗亳仍仂亢亠仆亳 亳仗仂仍亰仂于舒仆亳亠仄 catberry.js損, 亠仆亳 亠从仆仂于
DevDay
2014.10.15 舒 舒弍亳仍仂于, Avito.ru #PostgreSQLRussia
2014.10.15 舒 舒弍亳仍仂于, Avito.ru #PostgreSQLRussia2014.10.15 舒 舒弍亳仍仂于, Avito.ru #PostgreSQLRussia
2014.10.15 舒 舒弍亳仍仂于, Avito.ru #PostgreSQLRussia
Nikolay Samokhvalov
Roman Gorel: Building better APIs on Rails.
Roman Gorel: Building better APIs on Rails.Roman Gorel: Building better APIs on Rails.
Roman Gorel: Building better APIs on Rails.
Sphere Consulting Inc
Highload 仂亠仆 2012 仍亠从亳 10
Highload 仂亠仆 2012 仍亠从亳 10Highload 仂亠仆 2012 仍亠从亳 10
Highload 仂亠仆 2012 仍亠从亳 10
Technopark
CSSO 亢亳仄舒亠仄 CSS
CSSO  亢亳仄舒亠仄 CSSCSSO  亢亳仄舒亠仄 CSS
CSSO 亢亳仄舒亠仄 CSS
FDConf
Sequel 仄亠舒仆亳亰仄 亟仂仗舒 从 , 仆舒仗亳舒仆仆亶 仆舒 Ruby
Sequel  仄亠舒仆亳亰仄 亟仂仗舒 从 , 仆舒仗亳舒仆仆亶 仆舒 RubySequel  仄亠舒仆亳亰仄 亟仂仗舒 从 , 仆舒仗亳舒仆仆亶 仆舒 Ruby
Sequel 仄亠舒仆亳亰仄 亟仂仗舒 从 , 仆舒仗亳舒仆仆亶 仆舒 Ruby
Alexey Nayden
#2 "舒仗仂舒仆亠仆仆亠 仂亳弍从亳 于 JavaScript" 亠仆亳 亠从仆仂于
#2 "舒仗仂舒仆亠仆仆亠 仂亳弍从亳 于 JavaScript" 亠仆亳 亠从仆仂于#2 "舒仗仂舒仆亠仆仆亠 仂亳弍从亳 于 JavaScript" 亠仆亳 亠从仆仂于
#2 "舒仗仂舒仆亠仆仆亠 仂亳弍从亳 于 JavaScript" 亠仆亳 亠从仆仂于
JSib
仂弍亠仆仆仂亳 仂于仄亠仆仂亶 舒弍仂 Ruby 亳 Oracle
仂弍亠仆仆仂亳 仂于仄亠仆仂亶 舒弍仂 Ruby 亳 Oracle仂弍亠仆仆仂亳 仂于仄亠仆仂亶 舒弍仂 Ruby 亳 Oracle
仂弍亠仆仆仂亳 仂于仄亠仆仂亶 舒弍仂 Ruby 亳 Oracle
Nikita Shilnikov
Cache GitHub Continous Integration
Cache GitHub  Continous IntegrationCache GitHub  Continous Integration
Cache GitHub Continous Integration
Eduard Lebedyuk
Wordpress Cron
Wordpress CronWordpress Cron
Wordpress Cron
versusbassz
JavaScript: 仗仂仍仂亠, 仆舒仂亠亠 亳 弍亟亠亠.
JavaScript: 仗仂仍仂亠, 仆舒仂亠亠 亳 弍亟亠亠.JavaScript: 仗仂仍仂亠, 仆舒仂亠亠 亳 弍亟亠亠.
JavaScript: 仗仂仍仂亠, 仆舒仂亠亠 亳 弍亟亠亠.
FDConf
舒亞亰从舒, 仂弍舒弍仂从舒, 舒仆亠仆亳亠 亳 仂亟舒舒 舒亳从亳
舒亞亰从舒, 仂弍舒弍仂从舒, 舒仆亠仆亳亠 亳 仂亟舒舒 舒亳从亳舒亞亰从舒, 仂弍舒弍仂从舒, 舒仆亠仆亳亠 亳 仂亟舒舒 舒亳从亳
舒亞亰从舒, 仂弍舒弍仂从舒, 舒仆亠仆亳亠 亳 仂亟舒舒 舒亳从亳
Kirill Mokevnin
Building better APIs on rails
Building better APIs on railsBuilding better APIs on rails
Building better APIs on rails
Roman Gorel
Streaming replication in practice
Streaming replication in practiceStreaming replication in practice
Streaming replication in practice
Alexey Lesovsky
弌仂弍亳舒亠仄 仗仂 于亳仆亳从舒仄 2弌 Web API 亳仆从亳 于 从舒亳仆从舒
弌仂弍亳舒亠仄 仗仂 于亳仆亳从舒仄 2弌 Web API  亳仆从亳 于 从舒亳仆从舒弌仂弍亳舒亠仄 仗仂 于亳仆亳从舒仄 2弌 Web API  亳仆从亳 于 从舒亳仆从舒
弌仂弍亳舒亠仄 仗仂 于亳仆亳从舒仄 2弌 Web API 亳仆从亳 于 从舒亳仆从舒
DevDay
Drupal code sprint 亟仍 仆仂于亳从仂于
Drupal code sprint 亟仍 仆仂于亳从仂于Drupal code sprint 亟仍 仆仂于亳从仂于
Drupal code sprint 亟仍 仆仂于亳从仂于
Ovadiah Myrgorod
Mysql replication
Mysql replicationMysql replication
Mysql replication
Serge Tyatin
束亰仂仄仂仆亠 js 仗亳仍仂亢亠仆亳 亳仗仂仍亰仂于舒仆亳亠仄 catberry.js損, 亠仆亳 亠从仆仂于
束亰仂仄仂仆亠 js 仗亳仍仂亢亠仆亳  亳仗仂仍亰仂于舒仆亳亠仄 catberry.js損, 亠仆亳 亠从仆仂于束亰仂仄仂仆亠 js 仗亳仍仂亢亠仆亳  亳仗仂仍亰仂于舒仆亳亠仄 catberry.js損, 亠仆亳 亠从仆仂于
束亰仂仄仂仆亠 js 仗亳仍仂亢亠仆亳 亳仗仂仍亰仂于舒仆亳亠仄 catberry.js損, 亠仆亳 亠从仆仂于
DevDay
2014.10.15 舒 舒弍亳仍仂于, Avito.ru #PostgreSQLRussia
2014.10.15 舒 舒弍亳仍仂于, Avito.ru #PostgreSQLRussia2014.10.15 舒 舒弍亳仍仂于, Avito.ru #PostgreSQLRussia
2014.10.15 舒 舒弍亳仍仂于, Avito.ru #PostgreSQLRussia
Nikolay Samokhvalov
Roman Gorel: Building better APIs on Rails.
Roman Gorel: Building better APIs on Rails.Roman Gorel: Building better APIs on Rails.
Roman Gorel: Building better APIs on Rails.
Sphere Consulting Inc

Viewers also liked (14)

A HUGE Community Health Game
A HUGE Community Health GameA HUGE Community Health Game
A HUGE Community Health Game
Judy Shasek
Worried code
Worried codeWorried code
Worried code
sergeymoiseev
Aztec 2010 images short version
Aztec 2010 images short versionAztec 2010 images short version
Aztec 2010 images short version
Pip Simonian
Aztec 2010 images short version
Aztec 2010 images short versionAztec 2010 images short version
Aztec 2010 images short version
Pip Simonian
Proof mi 叩lbumProof mi 叩lbum
Proof mi 叩lbum
Impactodigital Elsalvador
Negative contribution of automatic postural control
Negative contribution of automatic postural controlNegative contribution of automatic postural control
Negative contribution of automatic postural control
Rajul Vasa
Documentation de Doctrine ORM
Documentation de Doctrine ORMDocumentation de Doctrine ORM
Documentation de Doctrine ORM
gueste89c23
VASA CONCEPT - To Expand The Boundaries of Centre of Mass [COM]
VASA CONCEPT  - To Expand The Boundaries of Centre of Mass [COM] VASA CONCEPT  - To Expand The Boundaries of Centre of Mass [COM]
VASA CONCEPT - To Expand The Boundaries of Centre of Mass [COM]
Rajul Vasa
Fire your front end
Fire your front endFire your front end
Fire your front end
sergeymoiseev
WIU Math Conference
WIU Math ConferenceWIU Math Conference
WIU Math Conference
Jill M. Schauland
How to restore balance following stroke?
How to restore balance following stroke?How to restore balance following stroke?
How to restore balance following stroke?
Rajul Vasa
仗舒于仂于舒 仂仆仂于舒 亳 仂亞舒仆亳亰舒亳 亠亳亳
仗舒于仂于舒 仂仆仂于舒 亳 仂亞舒仆亳亰舒亳 亠亳亳仗舒于仂于舒 仂仆仂于舒 亳 仂亞舒仆亳亰舒亳 亠亳亳
仗舒于仂于舒 仂仆仂于舒 亳 仂亞舒仆亳亰舒亳 亠亳亳
Roman Leontjevski
A HUGE Community Health Game
A HUGE Community Health GameA HUGE Community Health Game
A HUGE Community Health Game
Judy Shasek
Aztec 2010 images short version
Aztec 2010 images short versionAztec 2010 images short version
Aztec 2010 images short version
Pip Simonian
Aztec 2010 images short version
Aztec 2010 images short versionAztec 2010 images short version
Aztec 2010 images short version
Pip Simonian
Proof mi 叩lbumProof mi 叩lbum
Proof mi 叩lbum
Impactodigital Elsalvador
Negative contribution of automatic postural control
Negative contribution of automatic postural controlNegative contribution of automatic postural control
Negative contribution of automatic postural control
Rajul Vasa
Documentation de Doctrine ORM
Documentation de Doctrine ORMDocumentation de Doctrine ORM
Documentation de Doctrine ORM
gueste89c23
VASA CONCEPT - To Expand The Boundaries of Centre of Mass [COM]
VASA CONCEPT  - To Expand The Boundaries of Centre of Mass [COM] VASA CONCEPT  - To Expand The Boundaries of Centre of Mass [COM]
VASA CONCEPT - To Expand The Boundaries of Centre of Mass [COM]
Rajul Vasa
Fire your front end
Fire your front endFire your front end
Fire your front end
sergeymoiseev
How to restore balance following stroke?
How to restore balance following stroke?How to restore balance following stroke?
How to restore balance following stroke?
Rajul Vasa
仗舒于仂于舒 仂仆仂于舒 亳 仂亞舒仆亳亰舒亳 亠亳亳
仗舒于仂于舒 仂仆仂于舒 亳 仂亞舒仆亳亰舒亳 亠亳亳仗舒于仂于舒 仂仆仂于舒 亳 仂亞舒仆亳亰舒亳 亠亳亳
仗舒于仂于舒 仂仆仂于舒 亳 仂亞舒仆亳亰舒亳 亠亳亳
Roman Leontjevski

Similar to Batch processing in rails (20)

亳仆仆亶 DevOps. 弌亠从亠 42.
亳仆仆亶 DevOps. 弌亠从亠 42.亳仆仆亶 DevOps. 弌亠从亠 42.
亳仆仆亶 DevOps. 弌亠从亠 42.
Nikita Borzykh
CodeFest 2012. 仂亟亳仂仆仂于 . 丐亠亳仂于舒仆亳亠 Ruby (on Rails) 仗亳仍仂亢亠仆亳亶: 亠从, 仗...
CodeFest 2012. 仂亟亳仂仆仂于 .  丐亠亳仂于舒仆亳亠 Ruby (on Rails) 仗亳仍仂亢亠仆亳亶: 亠从, 仗...CodeFest 2012. 仂亟亳仂仆仂于 .  丐亠亳仂于舒仆亳亠 Ruby (on Rails) 仗亳仍仂亢亠仆亳亶: 亠从, 仗...
CodeFest 2012. 仂亟亳仂仆仂于 . 丐亠亳仂于舒仆亳亠 Ruby (on Rails) 仗亳仍仂亢亠仆亳亶: 亠从, 仗...
CodeFest
于亳亢亠仆亳亠 仗仂 仗从仂仄 亟仆 / 弌亠亞亠亶 舒舒从亠于亳 (servers.ru)
于亳亢亠仆亳亠 仗仂 仗从仂仄 亟仆 / 弌亠亞亠亶 舒舒从亠于亳 (servers.ru)于亳亢亠仆亳亠 仗仂 仗从仂仄 亟仆 / 弌亠亞亠亶 舒舒从亠于亳 (servers.ru)
于亳亢亠仆亳亠 仗仂 仗从仂仄 亟仆 / 弌亠亞亠亶 舒舒从亠于亳 (servers.ru)
Ontico
PowerShell
PowerShellPowerShell
PowerShell
GetDev.NET
Easy authcache 2 从亠亳仂于舒仆亳亠 亟仍 pro 仂亟亳仂仆仂于 亳亞仂
Easy authcache 2   从亠亳仂于舒仆亳亠 亟仍 pro 仂亟亳仂仆仂于 亳亞仂Easy authcache 2   从亠亳仂于舒仆亳亠 亟仍 pro 仂亟亳仂仆仂于 亳亞仂
Easy authcache 2 从亠亳仂于舒仆亳亠 亟仍 pro 仂亟亳仂仆仂于 亳亞仂
drupalconf
Easy authcache 2 从亳仂于舒仆亳亠 亟仍 pro. 仂亟亳仂仆仂于 亞仂
Easy authcache 2   从亳仂于舒仆亳亠 亟仍 pro. 仂亟亳仂仆仂于 亞仂Easy authcache 2   从亳仂于舒仆亳亠 亟仍 pro. 仂亟亳仂仆仂于 亞仂
Easy authcache 2 从亳仂于舒仆亳亠 亟仍 pro. 仂亟亳仂仆仂于 亞仂
PVasili
Behat 于 PHP 亳仗仂仍亰仂于舒仆亳亠仄 Behat 亳 Mink
Behat 于 PHP  亳仗仂仍亰仂于舒仆亳亠仄 Behat 亳 MinkBehat 于 PHP  亳仗仂仍亰仂于舒仆亳亠仄 Behat 亳 Mink
Behat 于 PHP 亳仗仂仍亰仂于舒仆亳亠仄 Behat 亳 Mink
tyomo4ka
ZFConf 2011: 舒亰亟亠仍亠仆亳亠 亟舒: 亞舒仆亳亰舒亳 仄仆仂亞仂亰舒亟舒仆仂亶, 舒仗亠亟亠仍亠仆仆仂亶 亳...
ZFConf 2011: 舒亰亟亠仍亠仆亳亠 亟舒: 亞舒仆亳亰舒亳 仄仆仂亞仂亰舒亟舒仆仂亶, 舒仗亠亟亠仍亠仆仆仂亶 亳...ZFConf 2011: 舒亰亟亠仍亠仆亳亠 亟舒: 亞舒仆亳亰舒亳 仄仆仂亞仂亰舒亟舒仆仂亶, 舒仗亠亟亠仍亠仆仆仂亶 亳...
ZFConf 2011: 舒亰亟亠仍亠仆亳亠 亟舒: 亞舒仆亳亰舒亳 仄仆仂亞仂亰舒亟舒仆仂亶, 舒仗亠亟亠仍亠仆仆仂亶 亳...
ZFConf Conference
Make 从 Ansible
 Make 从 Ansible Make 从 Ansible
Make 从 Ansible
Ivan Grishaev
仆仂仆 仂于亞仂弍仂亟: Highload 亳 仂亠亠亟亳 亰舒亟舒 仆舒 仗亳仄亠亠 PHP + Gearman + Yii2
仆仂仆 仂于亞仂弍仂亟: Highload 亳 仂亠亠亟亳 亰舒亟舒 仆舒 仗亳仄亠亠 PHP + Gearman + Yii2仆仂仆 仂于亞仂弍仂亟: Highload 亳 仂亠亠亟亳 亰舒亟舒 仆舒 仗亳仄亠亠 PHP + Gearman + Yii2
仆仂仆 仂于亞仂弍仂亟: Highload 亳 仂亠亠亟亳 亰舒亟舒 仆舒 仗亳仄亠亠 PHP + Gearman + Yii2
Oleg Poludnenko
Node.js 于于亠亟亠仆亳亠 于 亠仆仂仍仂亞亳, #ITmeetingKPI
Node.js 于于亠亟亠仆亳亠 于 亠仆仂仍仂亞亳,   #ITmeetingKPINode.js 于于亠亟亠仆亳亠 于 亠仆仂仍仂亞亳,   #ITmeetingKPI
Node.js 于于亠亟亠仆亳亠 于 亠仆仂仍仂亞亳, #ITmeetingKPI
Timur Shemsedinov
Why Ruby?
Why Ruby?Why Ruby?
Why Ruby?
Acceptic
2014-10-04 02 仍舒亟亳仍舒于 亠亰于亠亳亳. Mocha - 仗仂从仂亳 frontend 仗仂 仗仂仍仆仂亳
2014-10-04 02 仍舒亟亳仍舒于 亠亰于亠亳亳. Mocha - 仗仂从仂亳 frontend 仗仂 仗仂仍仆仂亳2014-10-04 02 仍舒亟亳仍舒于 亠亰于亠亳亳. Mocha - 仗仂从仂亳 frontend 仗仂 仗仂仍仆仂亳
2014-10-04 02 仍舒亟亳仍舒于 亠亰于亠亳亳. Mocha - 仗仂从仂亳 frontend 仗仂 仗仂仍仆仂亳
仄从亳亠 丐-弍弍仂仆亳从亳
Romanova techforum bash
Romanova techforum bashRomanova techforum bash
Romanova techforum bash
kuchinskaya
GitLab, Prometheus 亳 Grafana Kubernetes
GitLab, Prometheus 亳 Grafana  KubernetesGitLab, Prometheus 亳 Grafana  Kubernetes
GitLab, Prometheus 亳 Grafana Kubernetes
Victor Login
View 从舒从 亳舒 仆从亳 仂 仂仂礌亳 弍舒亰 亟舒仆仆 - 仍 亠亟舒, bro.agency
View 从舒从 亳舒 仆从亳 仂 仂仂礌亳 弍舒亰 亟舒仆仆  - 仍 亠亟舒, bro.agencyView 从舒从 亳舒 仆从亳 仂 仂仂礌亳 弍舒亰 亟舒仆仆  - 仍 亠亟舒, bro.agency
View 从舒从 亳舒 仆从亳 仂 仂仂礌亳 弍舒亰 亟舒仆仆 - 仍 亠亟舒, bro.agency
it-people
Not the Rails Way
Not the Rails WayNot the Rails Way
Not the Rails Way
Igor Alexandrov
弌仗亠亳仍 Chrome developer tools
弌仗亠亳仍 Chrome developer tools弌仗亠亳仍 Chrome developer tools
弌仗亠亳仍 Chrome developer tools
2弌 丐亠仆仂仍仂亞亳亳
Alexander Dymo - Barcamp 2009 - Faster Higher Sql
Alexander Dymo - Barcamp 2009 - Faster Higher SqlAlexander Dymo - Barcamp 2009 - Faster Higher Sql
Alexander Dymo - Barcamp 2009 - Faster Higher Sql
Alexander Dymo
亳仆仆亶 DevOps. 弌亠从亠 42.
亳仆仆亶 DevOps. 弌亠从亠 42.亳仆仆亶 DevOps. 弌亠从亠 42.
亳仆仆亶 DevOps. 弌亠从亠 42.
Nikita Borzykh
CodeFest 2012. 仂亟亳仂仆仂于 . 丐亠亳仂于舒仆亳亠 Ruby (on Rails) 仗亳仍仂亢亠仆亳亶: 亠从, 仗...
CodeFest 2012. 仂亟亳仂仆仂于 .  丐亠亳仂于舒仆亳亠 Ruby (on Rails) 仗亳仍仂亢亠仆亳亶: 亠从, 仗...CodeFest 2012. 仂亟亳仂仆仂于 .  丐亠亳仂于舒仆亳亠 Ruby (on Rails) 仗亳仍仂亢亠仆亳亶: 亠从, 仗...
CodeFest 2012. 仂亟亳仂仆仂于 . 丐亠亳仂于舒仆亳亠 Ruby (on Rails) 仗亳仍仂亢亠仆亳亶: 亠从, 仗...
CodeFest
于亳亢亠仆亳亠 仗仂 仗从仂仄 亟仆 / 弌亠亞亠亶 舒舒从亠于亳 (servers.ru)
于亳亢亠仆亳亠 仗仂 仗从仂仄 亟仆 / 弌亠亞亠亶 舒舒从亠于亳 (servers.ru)于亳亢亠仆亳亠 仗仂 仗从仂仄 亟仆 / 弌亠亞亠亶 舒舒从亠于亳 (servers.ru)
于亳亢亠仆亳亠 仗仂 仗从仂仄 亟仆 / 弌亠亞亠亶 舒舒从亠于亳 (servers.ru)
Ontico
Easy authcache 2 从亠亳仂于舒仆亳亠 亟仍 pro 仂亟亳仂仆仂于 亳亞仂
Easy authcache 2   从亠亳仂于舒仆亳亠 亟仍 pro 仂亟亳仂仆仂于 亳亞仂Easy authcache 2   从亠亳仂于舒仆亳亠 亟仍 pro 仂亟亳仂仆仂于 亳亞仂
Easy authcache 2 从亠亳仂于舒仆亳亠 亟仍 pro 仂亟亳仂仆仂于 亳亞仂
drupalconf
Easy authcache 2 从亳仂于舒仆亳亠 亟仍 pro. 仂亟亳仂仆仂于 亞仂
Easy authcache 2   从亳仂于舒仆亳亠 亟仍 pro. 仂亟亳仂仆仂于 亞仂Easy authcache 2   从亳仂于舒仆亳亠 亟仍 pro. 仂亟亳仂仆仂于 亞仂
Easy authcache 2 从亳仂于舒仆亳亠 亟仍 pro. 仂亟亳仂仆仂于 亞仂
PVasili
Behat 于 PHP 亳仗仂仍亰仂于舒仆亳亠仄 Behat 亳 Mink
Behat 于 PHP  亳仗仂仍亰仂于舒仆亳亠仄 Behat 亳 MinkBehat 于 PHP  亳仗仂仍亰仂于舒仆亳亠仄 Behat 亳 Mink
Behat 于 PHP 亳仗仂仍亰仂于舒仆亳亠仄 Behat 亳 Mink
tyomo4ka
ZFConf 2011: 舒亰亟亠仍亠仆亳亠 亟舒: 亞舒仆亳亰舒亳 仄仆仂亞仂亰舒亟舒仆仂亶, 舒仗亠亟亠仍亠仆仆仂亶 亳...
ZFConf 2011: 舒亰亟亠仍亠仆亳亠 亟舒: 亞舒仆亳亰舒亳 仄仆仂亞仂亰舒亟舒仆仂亶, 舒仗亠亟亠仍亠仆仆仂亶 亳...ZFConf 2011: 舒亰亟亠仍亠仆亳亠 亟舒: 亞舒仆亳亰舒亳 仄仆仂亞仂亰舒亟舒仆仂亶, 舒仗亠亟亠仍亠仆仆仂亶 亳...
ZFConf 2011: 舒亰亟亠仍亠仆亳亠 亟舒: 亞舒仆亳亰舒亳 仄仆仂亞仂亰舒亟舒仆仂亶, 舒仗亠亟亠仍亠仆仆仂亶 亳...
ZFConf Conference
Make 从 Ansible
 Make 从 Ansible Make 从 Ansible
Make 从 Ansible
Ivan Grishaev
仆仂仆 仂于亞仂弍仂亟: Highload 亳 仂亠亠亟亳 亰舒亟舒 仆舒 仗亳仄亠亠 PHP + Gearman + Yii2
仆仂仆 仂于亞仂弍仂亟: Highload 亳 仂亠亠亟亳 亰舒亟舒 仆舒 仗亳仄亠亠 PHP + Gearman + Yii2仆仂仆 仂于亞仂弍仂亟: Highload 亳 仂亠亠亟亳 亰舒亟舒 仆舒 仗亳仄亠亠 PHP + Gearman + Yii2
仆仂仆 仂于亞仂弍仂亟: Highload 亳 仂亠亠亟亳 亰舒亟舒 仆舒 仗亳仄亠亠 PHP + Gearman + Yii2
Oleg Poludnenko
Node.js 于于亠亟亠仆亳亠 于 亠仆仂仍仂亞亳, #ITmeetingKPI
Node.js 于于亠亟亠仆亳亠 于 亠仆仂仍仂亞亳,   #ITmeetingKPINode.js 于于亠亟亠仆亳亠 于 亠仆仂仍仂亞亳,   #ITmeetingKPI
Node.js 于于亠亟亠仆亳亠 于 亠仆仂仍仂亞亳, #ITmeetingKPI
Timur Shemsedinov
Why Ruby?
Why Ruby?Why Ruby?
Why Ruby?
Acceptic
2014-10-04 02 仍舒亟亳仍舒于 亠亰于亠亳亳. Mocha - 仗仂从仂亳 frontend 仗仂 仗仂仍仆仂亳
2014-10-04 02 仍舒亟亳仍舒于 亠亰于亠亳亳. Mocha - 仗仂从仂亳 frontend 仗仂 仗仂仍仆仂亳2014-10-04 02 仍舒亟亳仍舒于 亠亰于亠亳亳. Mocha - 仗仂从仂亳 frontend 仗仂 仗仂仍仆仂亳
2014-10-04 02 仍舒亟亳仍舒于 亠亰于亠亳亳. Mocha - 仗仂从仂亳 frontend 仗仂 仗仂仍仆仂亳
仄从亳亠 丐-弍弍仂仆亳从亳
Romanova techforum bash
Romanova techforum bashRomanova techforum bash
Romanova techforum bash
kuchinskaya
GitLab, Prometheus 亳 Grafana Kubernetes
GitLab, Prometheus 亳 Grafana  KubernetesGitLab, Prometheus 亳 Grafana  Kubernetes
GitLab, Prometheus 亳 Grafana Kubernetes
Victor Login
View 从舒从 亳舒 仆从亳 仂 仂仂礌亳 弍舒亰 亟舒仆仆 - 仍 亠亟舒, bro.agency
View 从舒从 亳舒 仆从亳 仂 仂仂礌亳 弍舒亰 亟舒仆仆  - 仍 亠亟舒, bro.agencyView 从舒从 亳舒 仆从亳 仂 仂仂礌亳 弍舒亰 亟舒仆仆  - 仍 亠亟舒, bro.agency
View 从舒从 亳舒 仆从亳 仂 仂仂礌亳 弍舒亰 亟舒仆仆 - 仍 亠亟舒, bro.agency
it-people
Alexander Dymo - Barcamp 2009 - Faster Higher Sql
Alexander Dymo - Barcamp 2009 - Faster Higher SqlAlexander Dymo - Barcamp 2009 - Faster Higher Sql
Alexander Dymo - Barcamp 2009 - Faster Higher Sql
Alexander Dymo

Batch processing in rails

  • 1. Batch processing on RoR http://slidesha.re/k6zrSL @SergeyMoiseev moiseev.sergey@gmail.com
  • 2. 亠弍亠 http://moiseev--sergey.moikrug.ru/ 仗亳 仆舒 Ruby 2007 亞仂亟舒.
  • 3. 舒亟舒舒 亠仆亠舒亳 从仂仆亠仆舒 (从仆亳亞) 亟仍 舒亶舒. 仂亟仆仂亶 仂仄舒: PDF. 仂亟仆仂亶 仂仄舒: SWF. 亠仆亠舒仂: print2鍖ash. 仆仂于仆仂亶 仗亳仂亳亠: 从仂仂 仂弍舒弍仂从亳 (从仂仍亳亠于仂 仗弍仍亳从亠仄 从仆亳亞 于 仄亠).
  • 4. ミ夷術 仆亳亞亳 仗仂仗舒ム 舒亰仆仂亞仂 从舒亠于舒, 舒 亳亰 仆亳 亠弍亠 仄仆仂亞仂从舒仆仂亶 仗亠亠舒弍仂从亳. Print2鍖ash 仄仂亢亠 仗亠舒舒 仆亠 弍仂仍亠亠 仂亟仆仂亞仂 亰舒亟舒仆亳 亰舒 舒亰 于 仗亠亟亠仍舒 仄舒亳仆. 丐亠弍亠 windows 仂从亢亠仆亳.
  • 5. 亳亠从舒 仆仂亢亠于亠仆仆亠 亳仆舒仍仍亳亳 Rails 仗亳仍仂亢亠仆亳. 弍舒 弍舒亰舒. 仂仆亠仆亶 舒于仂仄舒 亟仍 从仂仆仂仍 仂仂礌亳 亰舒亟舒仆亳. 亟亠仍仆亠 仂仗亠舒亳亳 - rake 舒从亳 亰舒仗从舒亠仄亠 仗仂 从仂仆 亳仍亳 仗仍舒仆亳仂于亳从 亰舒亟舒.
  • 9. https://github.com/rubyist/aasm include AASM aasm_column :state aasm_initial_state :loaded aasm_state :loaded, :enter => :reset_retry_count, :exit=>:apply_total_pages aasm_state :in_abbyy, :enter => :copy_to_abbyy aasm_state :p2f_queue, :enter=>:apply_pages_count aasm_state :in_p2fline, :enter => :copy_to_p2fline aasm_state :p2f_printing, :enter => :p2f_print aasm_state :print_failed, :enter => :free_p2fline aasm_state :wait_for_confirm, :enter => :free_p2fline aasm_state :confirmed aasm_state :confirmed_non_full aasm_state :on_server aasm_state :on_server_non_full aasm_state :published aasm_state :published_non_full aasm_state :hold aasm_state :mycop aasm_state :restarting, :after_enter => :check_avail_pdf aasm_state :restarting_full, :exit=>:restart_full 弌仂仂礌亳 从仂仆亠仆仂亞仂 舒于仂仄舒舒
  • 11. 仂亠仄 仆亠 仂亠亠亟 丐舒从 从舒亰舒仍仂 仗仂亠. 仍 从舒亢亟仂亞仂 亰舒亟舒仆亳 仄仂亢仆仂 仂亟仆舒亰仆舒仆仂 从舒亰舒 亠亞仂 舒. 亟亳仆亶 从舒舒仍仂亞 仂 于亠仄 亞仂仂于仄 仆舒 亠从亳亶 仄仂仄亠仆 从仂仆亠仆仂仄.
  • 12. 亠亠仂亞亠仆仆仂 return unless RUBY_PLATFORM =~ /mswin/ Dir[File.join(work_catalog,"page*.pdf")]
  • 13. 亟亳 https://gist.github.com/949049#鍖le_book.rb https://github.com/collectiveidea/acts_as_audited acts_as_audited :except => [:name, :file_name] https://gist.github.com/949049#鍖le_production.rake desc "Loads files into Production line" task :process_batch => :environment do Audit.as_user("rake:process_batch") do Book.getFromBatch unless running?("process_batch") end end https://gist.github.com/949049#鍖le_books_controller.rb def restart if @book.restartable? Audit.as_user current_user do @book.restart_production! end flash[:notice] = '弍舒弍仂从舒 仗亠亠亰舒仗亠仆舒.' else flash[:error] = '亠亠亰舒仗从 仆亠于仂亰仄仂亢亠仆.' end redirect_to request.referer end
  • 15. namespace :munin do task :config do puts <<-CONFIG graph_title Produced pages in last 5 minutes graph_args -l 0 graph_vlabel pages amount graph_category App graph_info This graph shows amount of pages produced texts.label Text files docs.label Doc files views.label View files quotes.label Quote files CONFIG exit 0 end task :run => :environment do res = ActiveRecord::Base.connection.execute("select count(nullif(text_ready_time>(now()-'5 minutes'::interval),false)) as c0,count(nullif(doc_ready_time>(now()-'5 minutes'::interval),false)) as c1,count(nullif(view_ready_time>(now()-'5 minutes'::interval),false)) as c2,count(nullif(quote_ready_time>(now()-'5 minutes'::interval),false)) as c3 from pages where updated_at > (now()-'5 minutes'::interval);") if res puts "texts.value #{res[0]['c0']}" puts "docs.value #{res[0]['c1']}" puts "views.value #{res[0]['c2']}" puts "quotes.value #{res[0]['c3']}" end exit 0 end end https://gist.github.com/949049#鍖le_munin.rake
  • 16. http://www.nagios.org/ namespace :nagios do task :abbyy_activity, [:warn, :crit] => :environment do |t, args| if args.warn and args.crit states_list = ["loaded", "in_abbyy", "p2f_queue"] warn_level = args.warn.to_i crit_level = args.crit.to_i warn_events = Audit.find(:all, :conditions=>["auditable_type = 'Book' and (username is null or username ilike 'rake:%') and action = 'update' and created_at > ?", warn_level.minutes.ago]) crit_events = Audit.find(:all, :conditions=>["auditable_type = 'Book' and (username is null or username ilike 'rake:%') and action = 'update' and created_at > ?", crit_level.minutes.ago]) if (crit_count = crit_events.select{|a| a['changes']['state'] and (a['changes']['state'] & states_list).size > 1 }).empty? puts "CRITICAL No state changes at abbyy for #{crit_level} minutes" exit 2 end if (warn_count = warn_events.select{|a| a['changes']['state'] and (a['changes']['state'] & states_list).size > 1 }).empty? puts "WARNING No state changes at abbyy for #{warn_level} minutes" exit 1 end puts "OK Abbyy: state changes #{warn_count.size} for #{warn_level} minutes; state changes #{crit_count.size} for #{crit_level} minutes." exit 0 else exit 3 end end https://gist.github.com/949049#鍖le_nagios.rake

Editor's Notes