lib/fluentd_server/cli.rb in fluentd-server-0.1.0 vs lib/fluentd_server/cli.rb in fluentd-server-0.2.0
- old
+ new
@@ -5,55 +5,105 @@
class FluentdServer::CLI < Thor
BASE_DIR = File.join(Dir.pwd, "fluentd-server")
DATA_DIR = File.join(BASE_DIR, "data")
LOG_DIR = File.join(BASE_DIR, "log")
+ JOB_DIR = File.join(BASE_DIR, "jobs")
LOG_FILE = File.join(LOG_DIR, "application.log")
ENV_FILE = File.join(BASE_DIR, ".env")
PROCFILE = File.join(BASE_DIR, "Procfile")
CONFIGRU_FILE = File.join(BASE_DIR, "config.ru")
- DB_DIR = File.join(BASE_DIR, "db")
CONFIG_DIR= File.join(BASE_DIR, "config")
DEFAULT_DOTENV =<<-EOS
PORT=5126
HOST=0.0.0.0
DATABASE_URL=sqlite3:#{DATA_DIR}/fluentd_server.db
+JOB_DIR=#{JOB_DIR}
LOG_PATH=#{LOG_FILE}
LOG_LEVEL=warn
+LOG_SHIFT_AGE=0
+LOG_SHIFT_SIZE=1048576
EOS
DEFAULT_PROCFILE =<<-EOS
web: unicorn -E production -p $PORT -o $HOST -c config/unicorn.conf
+job: fluentd-server job
+serf: $(gem path serf-td-agent)/bin/serf agent
EOS
default_command :start
+ def initialize(args = [], opts = [], config = {})
+ super(args, opts, config)
+ end
+
desc "new", "Creates fluentd-server resource directory"
def new
FileUtils.mkdir_p(LOG_DIR)
+ FileUtils.mkdir_p(JOB_DIR)
File.write ENV_FILE, DEFAULT_DOTENV
File.write PROCFILE, DEFAULT_PROCFILE
FileUtils.cp(File.expand_path("../../../config.ru", __FILE__), CONFIGRU_FILE)
- FileUtils.cp_r(File.expand_path("../../../db", __FILE__), DB_DIR)
FileUtils.cp_r(File.expand_path("../../../config", __FILE__), CONFIG_DIR)
puts 'fluentd-server new finished.'
end
desc "init", "Creates database schema"
def init
- require 'fluentd_server/environments'
+ Dotenv.load
+ require 'fluentd_server/environment'
require 'rake'
require 'sinatra/activerecord/rake'
- Rake::Task['db:migrate'].invoke
+ ActiveRecord::Tasks::DatabaseTasks.db_dir = File.expand_path("../../../db", __FILE__)
+ ActiveRecord::Tasks::DatabaseTasks.migrations_paths = [File.expand_path("../../../db/migrate", __FILE__)]
+ # ToDo: Fix that db:migrate raises an error in the case of sqlite3 like
+ # SQLite3::SQLException: database schema has changed: INSERT INTO "schema_migrations" ("version") VALUES (?)
+ # Rake::Task['db:migrate'].invoke
+ # Use db:schema:load after generating db/schema.rb by executing db:migrate several times for now
+ Rake::Task['db:schema:load'].invoke
puts 'fluentd-server init finished.'
end
+ desc "migrate", "Migrate database schema"
+ def migrate
+ Dotenv.load
+ require 'fluentd_server/environment'
+ require 'rake'
+ require 'sinatra/activerecord/rake'
+ ActiveRecord::Tasks::DatabaseTasks.db_dir = File.expand_path("../../../db", __FILE__)
+ ActiveRecord::Tasks::DatabaseTasks.migrations_paths = [File.expand_path("../../../db/migrate", __FILE__)]
+ Rake::Task['db:migrate'].invoke
+ end
+
desc "start", "Sartup fluentd_server"
def start
- Dotenv.load
+ self.migrate # do migration before start not to forget on updation
require "foreman/cli"
Foreman::CLI.new.invoke(:start, [], {})
+ end
+
+ # reference: https://gist.github.com/robhurring/732327
+ desc "job", "Sartup fluentd_server job worker"
+ def job
+ Dotenv.load
+ require 'delayed_job'
+ require 'fluentd_server/model'
+ worker_options = {
+ :min_priority => ENV['MIN_PRIORITY'],
+ :max_priority => ENV['MAX_PRIORITY'],
+ :queues => (ENV['QUEUES'] || ENV['QUEUE'] || '').split(','),
+ :quiet => false
+ }
+ Delayed::Worker.new(worker_options).start
+ end
+
+ desc "job_clear", "Clear fluentd_server delayed_job queue"
+ def job_clear
+ Dotenv.load
+ require 'delayed_job'
+ require 'fluentd_server/model'
+ Delayed::Job.delete_all
end
no_tasks do
def abort(msg)
$stderr.puts msg