#!/usr/bin/env ruby require 'logger' require 'sequel' require 'sqlite3' require_relative 'lib/config.rb' # Load configuration conf = Config.new(File.join(__dir__, 'data/defaults.yaml')) # Initialize logging logger = Logger.new(STDOUT) logger.level = Logger::INFO # Load the Sequel timestamps plugin Sequel::Model.plugin :timestamps # Initialize Sequel gem for database actions DB = Sequel.connect(adapter: conf.get('database.adapter'), database: conf.get('database.database')) # Load models require_relative 'lib/models/post.rb' # Main program loop while true # Let the user know something is going on logger.info('Checking for new social media posts to make public...') # Search for posts that are due to be published to_post = Post.dataset.where(published: false).where{publish_at < Time.now} # If we have posts to handle, let's do it! to_post.each { |post| puts "Posting tweet: #{post.text}" post.update(published: true) } # Wait for the specified wait period sleep(conf.get('vulture.run_interval') * 60) end