rsched 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +7 -0
- data/README.rdoc +5 -0
- data/lib/rsched/command/rsched.rb +11 -1
- data/lib/rsched/dblock.rb +22 -9
- data/lib/rsched/engine.rb +6 -6
- data/lib/rsched/lock.rb +1 -1
- data/lib/rsched/version.rb +1 -1
- data/test/sched_test.rb +1 -1
- metadata +4 -4
    
        data/ChangeLog
    CHANGED
    
    
    
        data/README.rdoc
    CHANGED
    
    | @@ -32,6 +32,11 @@ _Example:_ | |
| 32 32 | 
             
              # Run every day at 00:00
         | 
| 33 33 | 
             
              $ rsched -a 'mywork 0 0 * * * aaaa uuu ee' ...
         | 
| 34 34 |  | 
| 35 | 
            +
              # Use SQLite3 for the lock database
         | 
| 36 | 
            +
              $ rsched -T mysql -H myhost -D mydb -u myuser -p mypassword ...
         | 
| 37 | 
            +
             | 
| 38 | 
            +
              # Use MySQL for the lock database
         | 
| 39 | 
            +
              $ rsched -T sqlite3 -D /path/to/db.sqlite3 ...
         | 
| 35 40 |  | 
| 36 41 | 
             
            == Usage
         | 
| 37 42 |  | 
| @@ -243,7 +243,17 @@ if conf[:daemon] | |
| 243 243 | 
             
            end
         | 
| 244 244 |  | 
| 245 245 |  | 
| 246 | 
            -
             | 
| 246 | 
            +
            begin
         | 
| 247 | 
            +
              lock = RSched::DBLock.new(conf[:name], conf[:timeout], dbi, conf[:db_user].to_s, conf[:db_password].to_s)
         | 
| 248 | 
            +
            rescue DBI::InterfaceError
         | 
| 249 | 
            +
              STDERR.puts "Can't initialize DBI interface: #{$!}"
         | 
| 250 | 
            +
              STDERR.puts "You may have to install database driver first:"
         | 
| 251 | 
            +
              STDERR.puts ""
         | 
| 252 | 
            +
              STDERR.puts "  $ gem install dbd-mysql"
         | 
| 253 | 
            +
              STDERR.puts "  $ gem install dbd-sqlite3"
         | 
| 254 | 
            +
              STDERR.puts ""
         | 
| 255 | 
            +
              exit 1
         | 
| 256 | 
            +
            end
         | 
| 247 257 | 
             
            worker = RSched::Engine.new(lock, conf)
         | 
| 248 258 |  | 
| 249 259 | 
             
            schedule.each {|e|
         | 
    
        data/lib/rsched/dblock.rb
    CHANGED
    
    | @@ -7,18 +7,31 @@ class DBLock < Lock | |
| 7 7 | 
             
                super(hostname, timeout)
         | 
| 8 8 | 
             
                require 'dbi'
         | 
| 9 9 | 
             
                @db = DBI.connect(uri, user, pass)
         | 
| 10 | 
            -
                init_db
         | 
| 10 | 
            +
                init_db(uri.split(':',3)[1])
         | 
| 11 11 | 
             
              end
         | 
| 12 12 |  | 
| 13 | 
            -
              def init_db
         | 
| 13 | 
            +
              def init_db(type)
         | 
| 14 14 | 
             
                sql = ''
         | 
| 15 | 
            -
                 | 
| 16 | 
            -
                 | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 15 | 
            +
                case type
         | 
| 16 | 
            +
                when /mysql/i
         | 
| 17 | 
            +
                  sql << 'CREATE TABLE IF NOT EXISTS rsched ('
         | 
| 18 | 
            +
                  sql << '  ident VARCHAR(256) CHARACTER SET ASCII NOT NULL,'
         | 
| 19 | 
            +
                  sql << '  time INT NOT NULL,'
         | 
| 20 | 
            +
                  sql << '  host VARCHAR(256) CHARACTER SET ASCII,'
         | 
| 21 | 
            +
                  sql << '  timeout INT,'
         | 
| 22 | 
            +
                  sql << '  finish INT,'
         | 
| 23 | 
            +
                  sql << '  PRIMARY KEY (ident, time)'
         | 
| 24 | 
            +
                  sql << ') ENGINE=INNODB;'
         | 
| 25 | 
            +
                else
         | 
| 26 | 
            +
                  sql << 'CREATE TABLE IF NOT EXISTS rsched ('
         | 
| 27 | 
            +
                  sql << '  ident VARCHAR(256) NOT NULL,'
         | 
| 28 | 
            +
                  sql << '  time INT NOT NULL,'
         | 
| 29 | 
            +
                  sql << '  host VARCHAR(256),'
         | 
| 30 | 
            +
                  sql << '  timeout INT,'
         | 
| 31 | 
            +
                  sql << '  finish INT,'
         | 
| 32 | 
            +
                  sql << '  PRIMARY KEY (ident, time)'
         | 
| 33 | 
            +
                  sql << ');'
         | 
| 34 | 
            +
                end
         | 
| 22 35 | 
             
                @db.execute(sql)
         | 
| 23 36 | 
             
              end
         | 
| 24 37 |  | 
    
        data/lib/rsched/engine.rb
    CHANGED
    
    | @@ -14,14 +14,14 @@ class Engine | |
| 14 14 | 
             
                  @action = action
         | 
| 15 15 | 
             
                  @sched_start = sched_start
         | 
| 16 16 | 
             
                  @queue = []
         | 
| 17 | 
            -
                  @last_time = from
         | 
| 17 | 
            +
                  @last_time = from.to_i / 60 * 60
         | 
| 18 18 | 
             
                  sched(to)
         | 
| 19 19 | 
             
                end
         | 
| 20 20 |  | 
| 21 21 | 
             
                attr_reader :queue, :action
         | 
| 22 22 |  | 
| 23 | 
            -
                def sched( | 
| 24 | 
            -
                  while @last_time <=  | 
| 23 | 
            +
                def sched(sched_time)
         | 
| 24 | 
            +
                  while @last_time <= sched_time
         | 
| 25 25 | 
             
                    t = Time.at(@last_time).utc
         | 
| 26 26 | 
             
                    if @tab.is_specification_in_effect?(t)
         | 
| 27 27 | 
             
                      time = create_time_key(t)
         | 
| @@ -68,7 +68,7 @@ class Engine | |
| 68 68 | 
             
              # {cron => (ident,action)}
         | 
| 69 69 | 
             
              def set_sched(ident, action, cron)
         | 
| 70 70 | 
             
                now = Time.now.to_i
         | 
| 71 | 
            -
                @ss[ident] = Sched.new(cron, action, @sched_start, now-@resume, now-@delay)
         | 
| 71 | 
            +
                @ss[ident] = Sched.new(cron, action, @sched_start, now-@delay-@resume, now-@delay)
         | 
| 72 72 | 
             
              end
         | 
| 73 73 |  | 
| 74 74 | 
             
              def init_proc(run_proc, kill_proc)
         | 
| @@ -81,10 +81,10 @@ class Engine | |
| 81 81 | 
             
                until @finished
         | 
| 82 82 | 
             
                  one = false
         | 
| 83 83 |  | 
| 84 | 
            -
                   | 
| 84 | 
            +
                  sched_time = Time.now.to_i - @delay
         | 
| 85 85 | 
             
                  @ss.each_pair {|ident,s|
         | 
| 86 86 |  | 
| 87 | 
            -
                    s.sched( | 
| 87 | 
            +
                    s.sched(sched_time)
         | 
| 88 88 | 
             
                    s.queue.delete_if {|time|
         | 
| 89 89 | 
             
                      next if @finished
         | 
| 90 90 |  | 
    
        data/lib/rsched/lock.rb
    CHANGED
    
    
    
        data/lib/rsched/version.rb
    CHANGED
    
    
    
        data/test/sched_test.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: rsched
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              hash:  | 
| 4 | 
            +
              hash: 17
         | 
| 5 5 | 
             
              prerelease: false
         | 
| 6 6 | 
             
              segments: 
         | 
| 7 7 | 
             
              - 0
         | 
| 8 8 | 
             
              - 3
         | 
| 9 | 
            -
              -  | 
| 10 | 
            -
              version: 0.3. | 
| 9 | 
            +
              - 1
         | 
| 10 | 
            +
              version: 0.3.1
         | 
| 11 11 | 
             
            platform: ruby
         | 
| 12 12 | 
             
            authors: 
         | 
| 13 13 | 
             
            - Sadayuki Furuhashi
         | 
| @@ -15,7 +15,7 @@ autorequire: | |
| 15 15 | 
             
            bindir: bin
         | 
| 16 16 | 
             
            cert_chain: []
         | 
| 17 17 |  | 
| 18 | 
            -
            date: 2011-07- | 
| 18 | 
            +
            date: 2011-07-20 00:00:00 +09:00
         | 
| 19 19 | 
             
            default_executable: rsched
         | 
| 20 20 | 
             
            dependencies: 
         | 
| 21 21 | 
             
            - !ruby/object:Gem::Dependency 
         |