fcl_rails_daemon 1.0.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 998be626e5fb47732b6b04730e443d413c71cf04
4
+ data.tar.gz: 94bdd36d38f2d01e9f823eb4b1dabb24ad304b63
5
+ SHA512:
6
+ metadata.gz: 1c97416f21d3266e0780871bf60864c74862e9d3a48c9b35043f83a53a6b306add86495e81a5b61151e5640ed1d80bdad6aa9077d7a4af7692073096f2040b29
7
+ data.tar.gz: 0d71952e33958860d328068a662b0aee15653fed92a0d9f12e038348c1561bff13382fa5c38c0b67b88d2f011753e1a01d24bab5661c4f6bc7a24a40441e4839
data/.gitignore ADDED
@@ -0,0 +1,12 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ /log/
11
+ .idea/*
12
+ /config/
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.travis.yml ADDED
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.2
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in fcl_rails_daemon.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,64 @@
1
+ # FclRailsDaemon
2
+
3
+ Esta gem foi desenvolvida com a partir da necessidade de gerenciamento através do terminal em processos que por sua vez
4
+ executam determinados programas escritos em ruby.
5
+
6
+ ## Instalação
7
+
8
+ A partir do Gemfile
9
+
10
+ ```ruby
11
+ gem 'fcl_rails_daemon'
12
+ ```
13
+
14
+ Então execute:
15
+
16
+ $ bundle
17
+
18
+ Ou somente instale:
19
+
20
+ $ gem install fcl_rails_daemon
21
+
22
+
23
+ ## Configuração
24
+
25
+ Após a instalação é necessário criar os diretórios e arquivos de configuração, para isso execute
26
+
27
+ $ fcld --configure
28
+
29
+ Serão criados:
30
+
31
+ * _config/fcld_rails_daemon.rb_ (Arquivo onde são registrados os comandos)
32
+ * _tmp/pids/fcld.yml (Arquivo onde_ são registrados os pids dos comandos)
33
+ * _lib/fcld_comandos/comando_exemplo.rb_ (Um modelo para criação de comandos)
34
+
35
+
36
+ ## Como Usar?
37
+
38
+ #### Podemos adicionar comandos através do parametro --create
39
+
40
+ $ fcld --create meu_primeiro_comando
41
+
42
+ * Cria um comando em lib/fcld_comandos
43
+ * Efetua o registro em config/fcl_rails_daemon.rb
44
+
45
+
46
+ #### Podemos consultar o manual para descobrir quais os comandos disponíveis através do parametro --help
47
+
48
+ $ fcld --help
49
+
50
+
51
+ #### Podemos consultar os pids de processos gerenciados pelo daemon através do parametro --pids
52
+
53
+ $ fcld --pids
54
+
55
+
56
+ #### Podemos executar as ações básicas de um daemon (parametros start | stop | restart | status)
57
+
58
+ $ fcld start
59
+
60
+
61
+ #### Podemos controlar processos individualnmente através do parametro --task
62
+
63
+ $ fcld --task meu_primeiro_comando start
64
+
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "fcl_rails_daemon"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/fcld ADDED
@@ -0,0 +1,91 @@
1
+ #!/usr/bin/env ruby
2
+ require 'fileutils'
3
+ require 'fcl_rails_daemon/config'
4
+
5
+ base = DAEMON_ROOT
6
+ config_dir = "config"
7
+ config_dir = File.join(base, config_dir)
8
+ FileUtils.mkdir_p(config_dir) unless File.directory?(config_dir)
9
+ config_file = File.join(config_dir, 'fcld_rails_daemon.rb')
10
+
11
+ if ARGV.include? "--configure"
12
+ config_file_content = <<-FILE
13
+ # Para registrar seus comandos é necessário adicioná-los conforme o exemplo abaixo
14
+ # É necessário que seja informado o nome do comando e qual a classe ao qual ele representa
15
+ # Ex:
16
+ # FclRailsDaemon::Registrador.add(comando: 'comando_exemplo', classe: ComandoExemplo)
17
+ FILE
18
+
19
+ File.open(config_file, 'wb') {|f| f.write(config_file_content) } unless File.exist?(config_file)
20
+
21
+ command_sample_content = <<-FILE
22
+ class ComandoExemplo < FclRailsDaemon::Daemon
23
+
24
+ # Obrigatóriamente é necessário implementar o método "initialize"
25
+ def initialize
26
+ # Definir o parametro "task" (nome que será referenciado no comando digitado no terminal).
27
+ #
28
+ # O parametro "log" é opcional mas sugiro que seja definido um log para cada comando para evitar que muitos comandos
29
+ # escrevam no log deafult (caso tenha# muitos comandos)
30
+ super(task: "comando_exemplo", log: "log/comando_exemplo.log")
31
+ end
32
+
33
+ # Obrigatóriamente é necessário implementar o método self.help
34
+ def self.help
35
+ # Retornar Hash com "descricao" e "exemplo"
36
+ {
37
+ descricao: "Descrição do comando comando_exemplo :) - Executado a cada 1 min",
38
+ exemplo: ["--task comando_exemplo start | stop | restart | status"]
39
+ }
40
+ end
41
+
42
+ # Obrigatóriamente é necessário implementar o método run
43
+ def run
44
+ # Chamar o método run da classe pai (super) passando um bloco que vai conter seu código
45
+ super do
46
+ # Caso deseje que o seu comando fique executando repetidamente coloque dentro de um loop
47
+ loop do
48
+ # Escreva seu código aqui!!
49
+ # Não use Process.exit(true), exit(), abort() em seu codigo pois infere na morte do processo do Daemon
50
+ puts "Está executando comando_exemplo! :)"
51
+
52
+ # Espera em segundos antes de executar seu comando outra vez
53
+ # Util no caso de simular um processo cronológico (esse exemplo vai executar o comando a cada 10 segundos)
54
+ sleep(10)
55
+ end
56
+ end
57
+ end
58
+
59
+ end
60
+
61
+ FILE
62
+
63
+ commands_dir = DAEMON_CONFIG['command_path']
64
+ commands_dir = File.join(base, commands_dir)
65
+ FileUtils.mkdir_p(commands_dir) unless File.directory?(commands_dir)
66
+
67
+ command_file = File.join(commands_dir, 'comando_exemplo.rb')
68
+ File.open(command_file, 'wb') {|f| f.write(command_sample_content) } unless File.exists?(command_file)
69
+
70
+ log_dir = "log"
71
+ log_dir = File.join(base, log_dir)
72
+ FileUtils.mkdir_p(log_dir) unless File.directory?(log_dir)
73
+
74
+ pids_dir = File.join(base, "tmp/pids")
75
+ pids_file = File.join(base, DAEMON_CONFIG['pids_file'])
76
+ FileUtils.mkdir_p(pids_dir) unless File.directory?(pids_dir)
77
+ File.open(pids_file, 'wb') {|f| f << "default:" } unless File.exist?(pids_file)
78
+
79
+ puts "[Ok] Gem foi configurada!"
80
+ exit
81
+ end
82
+
83
+ unless File.exist?(config_file)
84
+ puts "[Ooops] Gem ainda não foi configurada... Para configurar execute o comando fcld --configure "
85
+ exit
86
+ end
87
+
88
+ require 'fcl_rails_daemon'
89
+ require 'fcl_rails_daemon/version'
90
+
91
+ FclRailsDaemon::Gerenciador.run(ARGV)
data/bin/setup ADDED
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ # Do any other automated setup that you need to do here
Binary file
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'fcl_rails_daemon/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "fcl_rails_daemon"
8
+ spec.version = FclRailsDaemon::VERSION
9
+ spec.licenses = ['MIT']
10
+ spec.platform = Gem::Platform::RUBY
11
+ spec.authors = ["Washington Silva"]
12
+ spec.email = ["w-osilva@hotmail.com"]
13
+ spec.homepage = ""
14
+ spec.rubyforge_project = "fcl_rails_daemon"
15
+ spec.files = `git ls-files -z`.split("\x0")
16
+ spec.test_files = `git ls-files -- {test,spec}/*`.split("\n")
17
+ spec.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
+ spec.require_paths = ["lib"]
19
+
20
+ spec.summary = %q{Projeto utilizado para gerar comandos que podem ser executados em background (daemons).}
21
+ spec.description = %q{Este tem como maior caracteristica a facilidade de gerar comandos e gerenciá-los de forma independente.}
22
+
23
+ spec.add_dependency "bundler"
24
+ spec.add_dependency "activesupport"
25
+ spec.add_dependency "rake"
26
+ spec.add_dependency "daemons", "~> 1.2"
27
+
28
+ spec.add_development_dependency "rspec"
29
+ end
@@ -0,0 +1,46 @@
1
+ module FclRailsDaemon
2
+ class ComandoExemplo < FclRailsDaemon::Daemon
3
+
4
+ # Obrigatóriamente é necessário implementar o método "initialize" e definir o parametro "task" (nome que será
5
+ # referenciado no comando digitado no terminal).
6
+ #
7
+ # O parametro "log" é opcional mas sugiro que seja definido um log para cada comando para evitar que muitos comandos
8
+ # escrevam no mesmo arquivo ocasionando dificuldade em compreender qual saída pertence a qual comando (caso tenha
9
+ # muitos comandos)
10
+ def initialize
11
+ super(task: 'meu_comando', log: 'log/meu_comando.log')
12
+ end
13
+
14
+ # Obrigatóriamente é necessário implementar o método self.help e retornar um Hash com "descricao" e "exemplo"
15
+ def self.help
16
+ {
17
+ descricao: 'Executa meu comando :) - Executado a cada 1 min',
18
+ exemplo: ['--task meu_comando start | stop | restart | status']
19
+ }
20
+ end
21
+
22
+ # Obrigatóriamente é necessário implementar o método run e chamar o mesmo método run da classe pai (super) passando
23
+ # um bloco que vai conter seu código
24
+ def run
25
+ super do
26
+
27
+ # Caso deseje que o seu comando fique executando repetidamente coloque dentro de um loop
28
+ loop do
29
+
30
+ # Escreva seu código aqui!!
31
+ # É importante que não exista nenhuma chamada para Process.exit(true), exit(), abort() pois infere na morte do
32
+ # processo do Daemon
33
+ puts "#{Time.now.to_s} - Está executando meu comando! :)"
34
+
35
+ # Espera em segundos antes de iniciar novamente
36
+ # Util para que possa simular um processo cronológico (neste exemplo o comando será executado repetidamente
37
+ # a cada 60 segundos)
38
+ sleep(60)
39
+
40
+ end
41
+
42
+ end
43
+ end
44
+
45
+ end
46
+ end
@@ -0,0 +1,124 @@
1
+ module FclRailsDaemon
2
+ class Daemon
3
+
4
+ cattr_reader :comandos_validos
5
+ @@pids_file = File.join(DAEMON_ROOT, DAEMON_CONFIG['pids_file'])
6
+ @@comandos_validos = ['start', 'stop', 'restart', 'status']
7
+
8
+
9
+ def initialize(task: nil, log: nil)
10
+ raise "Não foi definida o nome da task no construtor do comando" unless task
11
+ @daemon ||= nil
12
+ @task = task
13
+ @log = (log) ? File.join(DAEMON_ROOT, log) : File.join(DAEMON_ROOT, DAEMON_CONFIG['default_log'])
14
+ end
15
+
16
+ def self.pids
17
+ f = File.open(@@pids_file, 'rb')
18
+ f.read
19
+ end
20
+
21
+ def self.help
22
+ raise "Não foi implementado o método self.help no comando"
23
+ end
24
+
25
+ def log
26
+ puts "#{@log} (#{@task})"
27
+ end
28
+
29
+ def run(&block)
30
+ @daemon = Daemons.call(multiple: true) do
31
+ # força a saída para o output definido
32
+ $stdout.reopen(@log, 'a')
33
+ $stderr.reopen(@log, 'a')
34
+ $stdout.sync = true
35
+
36
+ block.call
37
+ end
38
+ end
39
+
40
+ def start
41
+ pid = get_pid @task
42
+ if running?(pid)
43
+ puts "proc: processo com pid #{pid} está rodando. (#{@task})"
44
+ return
45
+ end
46
+ run
47
+ set_pid(@task, @daemon.pid.pid) if @daemon
48
+ end
49
+
50
+ def stop
51
+ pid = get_pid @task
52
+
53
+ unless running? pid
54
+ puts "proc: processo não está rodando. (#{@task})"
55
+ return
56
+ end
57
+ kill pid
58
+ end
59
+
60
+ def restart
61
+ stop
62
+ start
63
+ end
64
+
65
+ def status
66
+ pid = get_pid @task
67
+ if running? pid
68
+ puts "proc: processo com pid #{pid} está rodando. (#{@task}) "
69
+ else
70
+ puts "proc: processo não está rodando. (#{@task}) "
71
+ end
72
+ end
73
+
74
+ private
75
+ def get_pid(task)
76
+ pids = YAML.load_file(@@pids_file)
77
+ (pids.has_key?(task)) ? pids[task] : nil
78
+ end
79
+
80
+ def set_pid(task, pid)
81
+ pids = YAML.load_file(@@pids_file)
82
+ pids[task] = pid
83
+ File.open(@@pids_file, 'wb') do |f|
84
+ f << pids.to_yaml
85
+ end
86
+ end
87
+
88
+ def running?(pid)
89
+ status = false
90
+ if pid
91
+ begin
92
+ Process.getpgid(pid)
93
+ status = true
94
+ rescue Errno::ESRCH
95
+ status = false
96
+ end
97
+ end
98
+ status
99
+ end
100
+
101
+ def kill(pid)
102
+ status = false
103
+ if pid
104
+ begin
105
+ Process.kill("KILL", pid)
106
+ set_pid(@task, nil)
107
+ status = true
108
+ rescue Errno::ESRCH
109
+ puts "proc: não existe processo com pid #{pid}. (#{@task})"
110
+ status = false
111
+ ensure
112
+ if status == false
113
+ puts "proc: processo com pid #{pid} está parado. (#{@task})"
114
+ else
115
+ puts "proc: processo com pid #{pid} foi parado. (#{@task})"
116
+ end
117
+ end
118
+ else
119
+ puts "proc: não existe processo com pid #{pid}. (#{@task})"
120
+ end
121
+ end
122
+
123
+ end
124
+ end
@@ -0,0 +1,185 @@
1
+ module FclRailsDaemon
2
+ class Gerenciador
3
+ @@comandos = Registrador.load
4
+
5
+ def self.run(argv)
6
+
7
+ if argv.include?('--pids')
8
+ puts Daemon.pids
9
+ exit
10
+ end
11
+
12
+ if argv.include?('--logs')
13
+ registrados = self.get_registrados nil
14
+ registrados.each { |comando| comando.send('log') }
15
+ exit
16
+ end
17
+
18
+ self.criar_comando(argv) if argv.include?('--create')
19
+
20
+ self.help(ARGV) unless self.valid?(argv)
21
+
22
+ task ||= nil
23
+ acao = argv.last
24
+ if argv.include?('--task')
25
+ i = argv.index('--task') + 1
26
+ task = argv[i]
27
+ end
28
+ registrados = self.get_registrados task
29
+ registrados.each { |comando| comando.send(acao) }
30
+ end
31
+
32
+
33
+ def self.help(argv)
34
+ acao = argv.last
35
+ task ||= nil
36
+ if (argv.include?('--task') && argv.include?('--help'))
37
+ i = argv.index('--task') + 1
38
+ task = argv[i]
39
+ end
40
+ helpers = self.get_helpers(task)
41
+ self.show helpers
42
+ end
43
+
44
+ def self.valid?(argv)
45
+ Daemon.comandos_validos.include?(argv.last) && !(argv.include?('--help'))
46
+ end
47
+
48
+ private
49
+ def self.show(helpers)
50
+ prefixo = DAEMON_CONFIG['command_prefix']
51
+
52
+ puts "\n------------------------------------------------------------------------------------------------------------\n"
53
+ puts " FOOTSTATSD\n"
54
+ puts "------------------------------------------------------------------------------------------------------------\n"
55
+ puts " * Use a opção --help para ver os manual para os comandos\n"
56
+ puts " #{prefixo} --help\n\n"
57
+ puts " * Use a opção start| stop | restart | status para controlar todos processos de uma vez\n"
58
+ puts " #{prefixo} start\n\n"
59
+ puts " * Use a opção --pids para ver os pids de processos\n"
60
+ puts " #{prefixo} --pids\n\n"
61
+ puts " * Use a opção --logs para ver os arquivos de log configurados para os comandos\n"
62
+ puts " #{prefixo} --logs\n\n"
63
+ puts " * Use a opção --task nome_comando start | stop | restart | status para controlar processos individualmente\n"
64
+ puts " #{prefixo} --task comando start\n\n"
65
+ puts "------------------------------------------------------------------------------------------------------------\n"
66
+ puts " LISTA DE TASKS\n"
67
+ puts "------------------------------------------------------------------------------------------------------------\n"
68
+
69
+ helpers.each do |h|
70
+ puts " * #{h[:descricao]}"
71
+ h[:exemplo].each do |e|
72
+ puts " #{e}"
73
+ end
74
+ puts ""
75
+ end
76
+ exit
77
+ end
78
+
79
+ def self.get_registrados(task = nil)
80
+ lista = []
81
+ @@registrados ||= {}
82
+ if task
83
+ raise "Comando não registrado # #{task} #" unless @@comandos.has_key? task
84
+ @@registrados[task] = (@@registrados.has_key? task) ? @@registrados[task] : @@comandos[task].new
85
+ lista << @@registrados[task]
86
+ return lista
87
+ end
88
+ @@comandos.each do |k, c|
89
+ lista << @@registrados[k] = (@@registrados.has_key? k) ? @@registrados[k] : c.new
90
+ end
91
+ lista
92
+ end
93
+
94
+ def self.get_helpers(task = nil)
95
+ lista = []
96
+ @@helpers ||= {}
97
+ if task
98
+ raise "Comando não registrado # #{task} #" unless @@comandos.has_key? task
99
+ @@helpers[task] = (@@helpers.has_key? task) ? @@helpers[task] : @@comandos[task].help
100
+ lista << @@helpers[task]
101
+ return lista
102
+ end
103
+ @@comandos.each do |k, c|
104
+ lista << @@helpers[k] = c.help unless @@helpers.has_key?(k)
105
+ end
106
+ lista
107
+ end
108
+
109
+ def self.criar_comando(argv)
110
+
111
+ i = argv.index('--create') + 1
112
+ comando = argv[i]
113
+ unless comando
114
+ puts "O nome do comando não foi definido"
115
+ exit
116
+ end
117
+ if Daemon.comandos_validos.include? comando
118
+ puts "O comando não pode ter o nome #{comando}"
119
+ exit
120
+ end
121
+
122
+ comando_camel = ActiveSupport::Inflector.camelize(comando)
123
+ comando_undescore = ActiveSupport::Inflector.underscore(comando)
124
+
125
+ conteudo = <<-FILE
126
+ class #{comando_camel} < FclRailsDaemon::Daemon
127
+
128
+ # Obrigatóriamente é necessário implementar o método "initialize"
129
+ def initialize
130
+ # Definir o parametro "task" (nome que será referenciado no comando digitado no terminal).
131
+ #
132
+ # O parametro "log" é opcional mas sugiro que seja definido um log para cada comando para evitar que muitos comandos
133
+ # escrevam no log deafult (caso tenha# muitos comandos)
134
+ super(task: "#{comando_undescore}", log: "log/#{comando_undescore}.log")
135
+ end
136
+
137
+ # Obrigatóriamente é necessário implementar o método self.help
138
+ def self.help
139
+ # Retornar Hash com "descricao" e "exemplo"
140
+ {
141
+ descricao: "Descrição do comando #{comando_undescore} :) - Executado a cada 1 min",
142
+ exemplo: ["--task #{comando_undescore} start | stop | restart | status"]
143
+ }
144
+ end
145
+
146
+ # Obrigatóriamente é necessário implementar o método run
147
+ def run
148
+ # Chamar o método run da classe pai (super) passando um bloco que vai conter seu código
149
+ super do
150
+ # Caso deseje que o seu comando fique executando repetidamente coloque dentro de um loop
151
+ loop do
152
+ # Escreva seu código aqui!!
153
+ # Não use Process.exit(true), exit(), abort() em seu codigo pois infere na morte do processo do Daemon
154
+ puts "Está executando #{comando_undescore}! :)"
155
+
156
+ # Espera em segundos antes de executar seu comando outra vez
157
+ # Util no caso de simular um processo cronológico (esse exemplo vai executar o comando a cada 10 segundos)
158
+ sleep(10)
159
+ end
160
+ end
161
+ end
162
+
163
+ end
164
+ FILE
165
+
166
+ arquivo = File.join(DAEMON_ROOT, DAEMON_CONFIG['command_path'], comando_undescore + '.rb' )
167
+
168
+ if File.exist?(arquivo)
169
+ puts "Comando já existe..."
170
+ else
171
+ File.open(arquivo, 'wb') {|f| f.write(conteudo) }
172
+
173
+ arquivo_registro = File.join(DAEMON_ROOT, DAEMON_CONFIG['register_file'] )
174
+ conteudo_registrar = "\nFclRailsDaemon::Registrador.add(comando: '#{comando_undescore}', classe: #{comando_camel})"
175
+ File.open(arquivo_registro, 'a+') {|f| f << conteudo_registrar }
176
+
177
+ puts "Comando criado e registrado... "
178
+ puts "Arquivo: #{arquivo} "
179
+ puts "Registro: #{arquivo_registro} "
180
+ end
181
+ exit
182
+ end
183
+
184
+ end
185
+ end
@@ -0,0 +1,16 @@
1
+ module FclRailsDaemon
2
+ class Registrador
3
+ @@comandos ||= {}
4
+
5
+ def self.add(comando: nil, classe: nil)
6
+ raise "Comando não definido" unless comando
7
+ raise "Classe não definida" unless classe
8
+ @@comandos[comando] = classe
9
+ end
10
+
11
+ def self.load
12
+ @@comandos
13
+ end
14
+
15
+ end
16
+ end
@@ -0,0 +1,19 @@
1
+ require "fcl_rails_daemon/version"
2
+ require "fcl_rails_daemon/config"
3
+ require 'fileutils'
4
+ require 'yaml'
5
+ require 'daemons'
6
+ require 'active_support'
7
+
8
+
9
+ module FclRailsDaemon end
10
+
11
+ require_relative "core/daemon"
12
+ comandos_dir = File.join(DAEMON_ROOT, "lib", "comandos")
13
+ if File.directory?(comandos_dir)
14
+ Dir["#{comandos_dir}/*.rb"].each {|file| require file }
15
+ end
16
+ require_relative "core/registrador.rb"
17
+ require_relative "core/gerenciador.rb"
18
+
19
+ require File.join(DAEMON_ROOT, "config", "fcld_rails_daemon.rb")
@@ -0,0 +1,9 @@
1
+ DAEMON_ROOT = File.expand_path("")
2
+
3
+ DAEMON_CONFIG = {
4
+ "pids_file" => 'tmp/pids/fcld.yml',
5
+ "default_log" => 'log/fcld.log',
6
+ "command_prefix" => 'fcld',
7
+ "command_path" => 'lib/fcld_comandos',
8
+ "register_file" => 'config/fcld_rails_daemon.rb'
9
+ }
@@ -0,0 +1,3 @@
1
+ module FclRailsDaemon
2
+ VERSION = "1.0.1"
3
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe FclRailsDaemon do
4
+ it 'has a version number' do
5
+ expect(FclRailsDaemon::VERSION).not_to be nil
6
+ end
7
+
8
+ it 'does something useful' do
9
+ expect(false).to eq(false)
10
+ end
11
+ end
@@ -0,0 +1,2 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+ require 'fcl_rails_daemon'
metadata ADDED
@@ -0,0 +1,139 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fcl_rails_daemon
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Washington Silva
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-12-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: daemons
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.2'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: Este tem como maior caracteristica a facilidade de gerar comandos e gerenciá-los
84
+ de forma independente.
85
+ email:
86
+ - w-osilva@hotmail.com
87
+ executables:
88
+ - console
89
+ - fcld
90
+ - setup
91
+ extensions: []
92
+ extra_rdoc_files: []
93
+ files:
94
+ - ".gitignore"
95
+ - ".rspec"
96
+ - ".travis.yml"
97
+ - Gemfile
98
+ - README.md
99
+ - Rakefile
100
+ - bin/console
101
+ - bin/fcld
102
+ - bin/setup
103
+ - fcl_rails_daemon-1.0.0.gem
104
+ - fcl_rails_daemon.gemspec
105
+ - lib/core/comando_exemplo.rb
106
+ - lib/core/daemon.rb
107
+ - lib/core/gerenciador.rb
108
+ - lib/core/registrador.rb
109
+ - lib/fcl_rails_daemon.rb
110
+ - lib/fcl_rails_daemon/config.rb
111
+ - lib/fcl_rails_daemon/version.rb
112
+ - spec/fcl_rails_daemon_spec.rb
113
+ - spec/spec_helper.rb
114
+ homepage: ''
115
+ licenses:
116
+ - MIT
117
+ metadata: {}
118
+ post_install_message:
119
+ rdoc_options: []
120
+ require_paths:
121
+ - lib
122
+ required_ruby_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ required_rubygems_version: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ requirements: []
133
+ rubyforge_project: fcl_rails_daemon
134
+ rubygems_version: 2.4.8
135
+ signing_key:
136
+ specification_version: 4
137
+ summary: Projeto utilizado para gerar comandos que podem ser executados em background
138
+ (daemons).
139
+ test_files: []