rest-ftp-daemon 0.250.5 → 0.300.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +19 -14
  3. data/README.md +12 -3
  4. data/bin/rest-ftp-daemon +102 -96
  5. data/config.ru +5 -5
  6. data/defaults.yml +61 -0
  7. data/lib/rest-ftp-daemon.rb +10 -4
  8. data/lib/rest-ftp-daemon/api/config.rb +3 -2
  9. data/lib/rest-ftp-daemon/api/dashboard.rb +1 -4
  10. data/lib/rest-ftp-daemon/api/debug.rb +30 -17
  11. data/lib/rest-ftp-daemon/api/job_presenter.rb +0 -2
  12. data/lib/rest-ftp-daemon/api/jobs.rb +4 -3
  13. data/lib/rest-ftp-daemon/api/root.rb +7 -10
  14. data/lib/rest-ftp-daemon/api/status.rb +7 -13
  15. data/lib/rest-ftp-daemon/constants.rb +27 -45
  16. data/lib/rest-ftp-daemon/counters.rb +0 -4
  17. data/lib/rest-ftp-daemon/helpers.rb +3 -18
  18. data/lib/rest-ftp-daemon/job.rb +16 -21
  19. data/lib/rest-ftp-daemon/job_queue.rb +21 -14
  20. data/lib/rest-ftp-daemon/launcher.rb +26 -0
  21. data/lib/rest-ftp-daemon/logger_pool.rb +9 -19
  22. data/lib/rest-ftp-daemon/metrics.rb +41 -0
  23. data/lib/rest-ftp-daemon/notification.rb +7 -10
  24. data/lib/rest-ftp-daemon/remote.rb +4 -4
  25. data/lib/rest-ftp-daemon/remote_ftp.rb +10 -10
  26. data/lib/rest-ftp-daemon/remote_sftp.rb +13 -24
  27. data/lib/rest-ftp-daemon/views/dashboard.haml +2 -2
  28. data/lib/rest-ftp-daemon/views/dashboard_footer.haml +2 -2
  29. data/lib/rest-ftp-daemon/views/dashboard_header.haml +2 -2
  30. data/lib/rest-ftp-daemon/views/dashboard_workers.haml +2 -2
  31. data/lib/rest-ftp-daemon/worker.rb +43 -12
  32. data/lib/rest-ftp-daemon/worker_conchita.rb +15 -28
  33. data/lib/rest-ftp-daemon/worker_job.rb +30 -21
  34. data/lib/rest-ftp-daemon/worker_pool.rb +59 -50
  35. data/lib/rest-ftp-daemon/worker_reporter.rb +70 -0
  36. data/lib/shared/conf.rb +195 -0
  37. data/lib/shared/logger_formatter.rb +31 -0
  38. data/lib/shared/logger_helper.rb +78 -0
  39. data/rest-ftp-daemon.gemspec +23 -22
  40. data/{rest-ftp-daemon.yml.sample → rest-ftp-daemon.sample.yml} +10 -7
  41. data/spec/spec_helper.rb +1 -1
  42. metadata +30 -12
  43. data/lib/rest-ftp-daemon/logger.rb +0 -57
  44. data/lib/rest-ftp-daemon/logger_helper.rb +0 -36
  45. data/lib/rest-ftp-daemon/settings.rb +0 -57
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 35b3d7eec8a3e0e3434d6814dd730d48d8797363
4
- data.tar.gz: 4d0056bdedf9c43ccb5bf5efc926e29e2bc37cfb
3
+ metadata.gz: 1cd2717929c1af430db95ad5e9798060d8ab9e2f
4
+ data.tar.gz: 9fbd387461378d7523194b5bf3e09600661546c4
5
5
  SHA512:
6
- metadata.gz: 24fd77d7164fd86c3061cf37e7089ed35bf47fba7251cada6e4efaca6b3db1aab7c6d4d052fb323561b7b3fdb8fc1511195c5ee8f4b6d05ae0c69edb8ce2adbe
7
- data.tar.gz: 8c9fe1641df446b5d73eb72ffccb7e8077e231eb51f0a74c4d07ceece34cd2d5837b5c98a0f25b444120726719adee0eaa2d95caf451fe33842ab6f4376fd638
6
+ metadata.gz: 60b92af09c38e6505da2cb1161729be8402f4a6c401e16ac4a0a9ac4f35b017df2d22e2f25d92c068cc0ae611d7a540c1eab189a5ae8f2b56b806ee58f1f1e3d
7
+ data.tar.gz: ca4061e657d63405810c690aa36f2f98565d26bfe248dcac6389d151a62fb877d8e785722de03e0f8e6714932ccd7b5cde457d7e6757b639f6e36755ec985ac0
data/Gemfile.lock CHANGED
@@ -1,7 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rest-ftp-daemon (0.250.5)
4
+ rest-ftp-daemon (0.300.1)
5
+ chamber
5
6
  double-bag-ftps
6
7
  facter
7
8
  get_process_mem
@@ -13,7 +14,7 @@ PATH
13
14
  newrelic_rpm
14
15
  settingslogic
15
16
  sys-cpu
16
- thin (~> 1.6)
17
+ thin (~> 1)
17
18
 
18
19
  GEM
19
20
  remote: http://rubygems.org/
@@ -26,7 +27,7 @@ GEM
26
27
  thread_safe (~> 0.3, >= 0.3.4)
27
28
  tzinfo (~> 1.1)
28
29
  addressable (2.4.0)
29
- ast (2.2.0)
30
+ ast (2.3.0)
30
31
  astrolabe (1.3.1)
31
32
  parser (~> 2.2)
32
33
  axiom-types (0.1.1)
@@ -34,6 +35,9 @@ GEM
34
35
  ice_nine (~> 0.11.0)
35
36
  thread_safe (~> 0.3, >= 0.3.1)
36
37
  builder (3.2.2)
38
+ chamber (2.9.0)
39
+ hashie (~> 3.3)
40
+ thor (~> 0.19.1)
37
41
  coderay (1.1.1)
38
42
  coercible (1.0.0)
39
43
  descendants_tracker (~> 0.0.1)
@@ -41,7 +45,7 @@ GEM
41
45
  descendants_tracker (0.0.4)
42
46
  thread_safe (~> 0.3, >= 0.3.1)
43
47
  diff-lcs (1.2.5)
44
- domain_name (0.5.20160310)
48
+ domain_name (0.5.20160615)
45
49
  unf (>= 0.0.5, < 1.0.0)
46
50
  double-bag-ftps (0.1.2)
47
51
  enumerable-lazy (0.0.1)
@@ -50,7 +54,7 @@ GEM
50
54
  facter (2.4.6)
51
55
  CFPropertyList (~> 2.2.6)
52
56
  ffi (1.9.10)
53
- get_process_mem (0.2.0)
57
+ get_process_mem (0.2.1)
54
58
  grape (0.16.2)
55
59
  activesupport
56
60
  builder
@@ -67,7 +71,7 @@ GEM
67
71
  haml (4.0.7)
68
72
  tilt
69
73
  hashie (3.4.4)
70
- http (0.9.9)
74
+ http (2.0.1)
71
75
  addressable (~> 2.3)
72
76
  http-cookie (~> 1.0)
73
77
  http-form_data (~> 1.0.1)
@@ -83,13 +87,13 @@ GEM
83
87
  minitest (5.9.0)
84
88
  multi_json (1.12.1)
85
89
  multi_xml (0.5.5)
86
- mustermann19 (0.4.3)
90
+ mustermann19 (0.4.4)
87
91
  enumerable-lazy
88
92
  net-sftp (2.1.2)
89
93
  net-ssh (>= 2.6.5)
90
- net-ssh (3.1.1)
94
+ net-ssh (3.2.0)
91
95
  newrelic_rpm (3.15.2.317)
92
- parser (2.3.1.0)
96
+ parser (2.3.1.2)
93
97
  ast (~> 2.2)
94
98
  powerpack (0.1.1)
95
99
  pry (0.10.3)
@@ -100,7 +104,7 @@ GEM
100
104
  rack-accept (0.4.5)
101
105
  rack (>= 0.4)
102
106
  rainbow (2.1.0)
103
- rake (11.1.2)
107
+ rake (11.2.2)
104
108
  rspec (3.4.0)
105
109
  rspec-core (~> 3.4.0)
106
110
  rspec-expectations (~> 3.4.0)
@@ -125,12 +129,13 @@ GEM
125
129
  slop (3.6.0)
126
130
  sys-cpu (0.7.2)
127
131
  ffi
128
- thin (1.6.4)
132
+ thin (1.7.0)
129
133
  daemons (~> 1.0, >= 1.0.9)
130
134
  eventmachine (~> 1.0, >= 1.0.4)
131
- rack (~> 1.0)
135
+ rack (>= 1, < 3)
136
+ thor (0.19.1)
132
137
  thread_safe (0.3.5)
133
- tilt (2.0.4)
138
+ tilt (2.0.5)
134
139
  tzinfo (1.2.2)
135
140
  thread_safe (~> 0.1)
136
141
  unf (0.1.4)
@@ -147,7 +152,7 @@ PLATFORMS
147
152
 
148
153
  DEPENDENCIES
149
154
  bundler (~> 1.6)
150
- http (~> 0.8)
155
+ http
151
156
  pry
152
157
  rake
153
158
  rest-ftp-daemon!
data/README.md CHANGED
@@ -40,10 +40,10 @@ Features
40
40
  * Realtime status reporting
41
41
  * realtime transfer status reporting, with progress and errors
42
42
  * periodic update notifications sent along with transfer status and progress to an arbitrary URL (JSON resource POSTed)
43
+ * metrics about pools, throughtput, and queues output to NewRelic
43
44
 
44
45
 
45
-
46
- Status
46
+ Project status
47
47
  ------------------------------------------------------------------------------------
48
48
 
49
49
  Though it may need more robust tests, this gem has been used successfully in production for
@@ -185,6 +185,13 @@ As a starting point, `rest-ftp-daemon.yml.sample` is an example config file that
185
185
  Default administrator credentials are `admin/admin`. Please change the password in this configuration file before starting any kind of production.
186
186
 
187
187
 
188
+ Metrics
189
+ ------------------------------------------------------------------------------------
190
+
191
+ [FIXME]
192
+
193
+
194
+
188
195
  Logging
189
196
  ------------------------------------------------------------------------------------
190
197
 
@@ -272,7 +279,9 @@ Update RubyGems and install the gem from rubygems.org
272
279
  Known bugs
273
280
  ------------------------------------------------------------------------------------
274
281
 
275
- * As this project is based on SettingsLogic, which in turns uses Syck YAML parser, configuration merge from "defaults" section and environment-specific section is broken. A sub-tree defined for a specific environment, will overwrite the corresponding subtree from "defaults".
282
+ * As this project is based on the Psyck YAML parser, configuration merge from "defaults" section and environment-specific section are broken. A sub-tree defined for a specific environment, will overwrite the corresponding subtree from "defaults". Please repeat whole sections from "defaults".
283
+
284
+ * As this project is based on Chamber, and it considers hyphens in filename as namespaces, the global /etc/rest-ftp-daemon.yml config file is not parsed (and thus, ignored). Until this is worked around, please specify a config filename on the commandline.
276
285
 
277
286
  * If you get ```fatal error: 'openssl/ssl.h' file not found when installing ```eventmachine``` on OSX El Capitan, you can try with:
278
287
  ```
data/bin/rest-ftp-daemon CHANGED
@@ -2,122 +2,128 @@
2
2
 
3
3
  # Try to load external libs, helpers and constants
4
4
  begin
5
- require "thin"
5
+ require "rubygems"
6
6
  require "optparse"
7
+ require "thin"
7
8
  require "socket"
8
- # require "timeout"
9
- require "settingslogic"
10
- rescue LoadError
11
- raise "EXITING: some of basic libs were not found: thin, optparse, socket, settingslogic"
9
+ require_relative "../lib/rest-ftp-daemon/launcher"
10
+ require_relative "../lib/shared/conf"
11
+ rescue LoadError => e
12
+ raise "EXITING: some basic libs were not found (#{e.message})"
12
13
  end
13
- [:constants, :helpers].each do |lib|
14
- require_relative "../lib/rest-ftp-daemon/#{lib}"
15
- end
16
- puts
14
+ include Shared
15
+ include RestFtpDaemon
17
16
 
18
17
 
19
- # Detect options from ARGV
20
- options = {}
21
- parser = OptionParser.new do |opts|
22
- opts.banner = "Usage: #{File.basename $PROGRAM_NAME} [options] start|stop"
23
- opts.on("-c", "--config CONFIGFILE") { |config| APP_CONF = config }
24
- opts.on("-e", "--environment ENV") { |env| APP_ENV = env }
25
- opts.on("", "--dev") { APP_ENV = "development" }
26
- opts.on("-p", "--port PORT", "use PORT") { |port| options["port"] = port.to_i }
27
- opts.on("-d", "--daemonize", "Run daemonized in the background") { options["daemonize"] = true }
28
- opts.on("-f", "--foreground", "Run in the foreground") { options["daemonize"] = false }
29
- opts.on("-P", "--pid FILE", "File to store PID") { |file| options["pidfile"] = file }
30
- opts.on("-u", "--user NAME", "User to run daemon as (use with -g)") { |user| options["user"] = user }
31
- opts.on("-g", "--group NAME", "Group to run daemon as (use with -u)") { |group| options["group"] = group }
32
-
33
- opts.separator ""
34
- opts.on_tail("-h", "--help", "Show this message") do
35
- puts opts
36
- puts TAIL_MESSAGE unless File.exist?(DEFAULT_CONFIG_PATH)
37
- exit
38
- end
39
- opts.on_tail("-v", "--version", "Show version (#{APP_VER})") { puts(APP_VER) && exit }
40
- end
41
-
42
- # Parse options and check compliance
18
+ # Handle configuration
43
19
  begin
44
- parser.order!(ARGV)
20
+ # Defaults
21
+ cmd_config = nil
22
+ cmd_pidfile = nil
23
+ cmd_port = nil
24
+ cmd_user = nil
25
+ cmd_group = nil
26
+ cmd_daemonize = nil
27
+
28
+ # Init Chamber-based configuration from Gemspec
29
+ Conf.init File.dirname(__FILE__) + "/../"
30
+
31
+ # Parse options and check compliance
32
+ thinopts = {}
33
+ parser = OptionParser.new do |opts|
34
+ opts.banner = "Usage: #{File.basename $PROGRAM_NAME} [options] start|stop"
35
+ opts.on("-c", "--config CONFIGFILE") { |value| cmd_config = File.expand_path(value)}
36
+ opts.on("-e", "--environment ENV") { |value| Conf.app_env = value }
37
+ opts.on("", "--dev") { Conf.app_env = "development" }
38
+ opts.on("-p", "--port PORT", "use PORT") { |value| cmd_port = value.to_i }
39
+ opts.on("-d", "--daemonize", "Run daemonized in the background") { cmd_daemonize = true }
40
+ opts.on("-f", "--foreground", "Run in the foreground") { cmd_daemonize = false }
41
+ opts.on("-P", "--pid FILE", "File to store PID") { |value| cmd_pidfile = value }
42
+ opts.on("-u", "--user NAME", "User to run daemon as (use with -g)") { |value| cmd_user = value }
43
+ opts.on("-g", "--group NAME", "Group to run daemon as (use with -u)") { |value| cmd_group = value }
44
+
45
+ opts.separator ""
46
+ opts.on_tail("-h", "--help", "Show this message") do
47
+ puts opts
48
+ puts Conf.gen_config_message unless File.exist?(Conf.gen_config_etc)
49
+ exit
50
+ end
51
+ opts.on_tail("-v", "--version", "Show version (#{Conf.app_ver})") { puts(Conf.app_ver) && exit }
52
+
53
+ end.order!(ARGV)
54
+
55
+ # Load Chamber-based configuration
56
+ Conf.prepare config: cmd_config, logfile: nil
57
+
58
+ # Extract command from command line
45
59
  command = ARGV.shift
60
+
46
61
  rescue OptionParser::InvalidOption => e
47
- abort "EXITING: option parser: #{e.message}"
62
+ abort "EXITING: InvalidOption: #{e.message} \n #{e.backtrace.to_yaml}"
63
+ rescue ConfigParseError => e
64
+ abort "EXITING: ConfigParseError: #{e.message} \n #{e.backtrace.to_yaml}"
65
+ rescue StandardError => e
66
+ abort "EXITING: StandardError: #{e.message} \n #{e.backtrace.to_yaml}"
48
67
  else
49
68
  abort parser.to_s unless ["start", "stop"].include? command
50
69
  end
51
70
 
52
71
 
53
- # Load config, and merge options from ARGV into settings
54
- # FIXME: file configuration detection could reside in settings.rb
55
- APP_CONF ||= DEFAULT_CONFIG_PATH
56
- APP_ENV ||= ENV_PRODUCTION
57
- abort "EXITING: cannot read configuration file: #{APP_CONF}" unless File.exist? APP_CONF
58
- begin
59
- # Import settings
60
- # require File.expand_path("#{app_root}/lib/rest-ftp-daemon/settings")
61
- require_relative "../lib/rest-ftp-daemon/settings"
62
-
63
- # Set defaults
64
- Settings.init_defaults
65
-
66
- # Overwrite with commandline options
67
- Settings.merge!(options)
68
-
69
- # Init NewRelic
70
- Settings.init_newrelic
71
-
72
- rescue Psych::SyntaxError => e
73
- abort "EXITING: config file syntax error: #{e.message}"
74
- rescue StandardError => e
75
- abort "EXITING: unknow error loading settings #{e.inspect}"
76
- end
77
-
78
-
79
72
  # Validate network configuration
80
73
  if command == "start"
81
- if !Settings.port
74
+ if !Conf[:port]
82
75
  abort "ABORTING: Network port is missing"
83
- elsif RestFtpDaemon::Helpers.local_port_used? Settings.port
84
- abort "ABORTING: Network port #{Settings.port} is already in use"
76
+ elsif Launcher.local_port_used? Conf[:port]
77
+ abort "ABORTING: Network port #{Conf[:port]} is already in use"
85
78
  end
86
79
  end
87
80
 
88
81
 
89
- # ARGV: build final
90
- argv = []
91
- argv << ["-e", Settings.namespace]
92
- argv << ["-p", Settings.port.to_s] if Settings.port
93
- argv << ["--pid", Settings.pidfile]
94
- argv << ["--tag", "'#{APP_NAME}/#{Settings.namespace}'"]
95
- argv << ["--daemonize"] if [1, true].include? Settings.daemonize
82
+ # Thin: override with cmdline then defaults
83
+ Conf[:daemonize] = cmd_daemonize unless cmd_daemonize.nil?
84
+ Conf[:port] = cmd_port unless cmd_port.nil?
85
+ Conf[:user] = cmd_user unless cmd_user.nil?
86
+ Conf[:group] = cmd_group unless cmd_group.nil?
87
+ Conf[:pidfile] = cmd_pidfile unless cmd_pidfile.nil?
96
88
 
89
+ Conf[:pidfile] ||= Conf.gen_pidfile
97
90
 
98
- # ARGV: logging, user and group, command
99
- if (logfile = Settings.at :logs, :thin)
100
- argv << ["--log", logfile] if logfile
101
- end
102
- if Settings.user && Settings.group
103
- argv << ["--user", Settings.user]
104
- argv << ["--group", Settings.group]
91
+
92
+ # Thin: basic options
93
+ thin_logfile = Conf.at(:logs, :thin)
94
+ argv = []
95
+ argv << ["-e", Conf.app_env]
96
+ argv << ["-p", Conf[:port].to_s]
97
+ argv << ["--pid", Conf[:pidfile].to_s]
98
+ argv << ["--tag", "#{Conf.app_name}/#{Conf.app_env}"]
99
+ argv << ["--daemonize"] if ([1, true].include? Conf[:daemonize])
100
+ argv << ["--log", thin_logfile] if thin_logfile
101
+
102
+ # Thin: user and group
103
+ if Conf[:user] && Conf[:group]
104
+ argv << ["--user", Conf[:user].to_s]
105
+ argv << ["--group", Conf[:group].to_s]
105
106
  end
107
+
108
+ # Thin: command
106
109
  argv << command unless command.nil?
107
110
 
108
111
 
109
- # Display final configuration
110
- puts "--- #{APP_NAME} #{APP_VER}"
111
- puts "Config file \t #{APP_CONF}"
112
- puts "PID file \t #{Settings.pidfile}"
113
- puts "Daemonize \t #{Settings.daemonize ? "YES" : "no (PID: #{Process.pid})"}"
114
- puts "Host \t #{Settings.host}"
115
- puts "Namespace \t #{Settings.namespace}"
116
- puts "Network port \t #{Settings.port}"
117
- puts "User:group \t #{Settings.user}:#{Settings.group}" if Settings.user || Settings.group
118
- puts "Newrelic \t #{Settings.newrelic_enabled? ? Settings.at(:newrelic, :licence) : "no"}"
119
- puts "Started at \t #{APP_STARTED}"
120
- # puts Settings.dump
112
+ # Display final configuration, quit if config dump requested
113
+ puts "--- #{Conf.app_name} #{Conf.app_ver}"
114
+ puts "Environment \t #{Conf.app_env}"
115
+ puts "Config files \t #{Conf.files}"
116
+ puts "Started at \t #{Conf.app_started}"
117
+ puts "Loging to file \t #{Conf[:log][:file]}" if Conf[:log].is_a? Enumerable
118
+ puts "Host \t #{Conf.host}"
119
+ puts
120
+ puts "Daemonize \t #{Conf[:daemonize]}"
121
+ puts "Network port \t #{Conf[:port]}"
122
+ puts "User:group \t #{Conf[:user]}:#{Conf[:group]}" if Conf[:user] && Conf[:group]
123
+ puts "Newrelic \t #{Conf.newrelic_enabled? ? Conf.at(:newrelic, :licence) : "no"}"
124
+ puts "PID file \t #{Conf[:pidfile]}"
125
+ puts
126
+ puts Conf.dump
121
127
  puts
122
128
  puts "--- Thin ARGV"
123
129
  puts argv.flatten.join(" ")
@@ -126,8 +132,7 @@ puts
126
132
 
127
133
  # Start Thin with this rackup configuration, changing to app_root first
128
134
  begin
129
- app_root = File.expand_path(File.dirname(__FILE__) + "/../")
130
- Dir.chdir app_root
135
+ Dir.chdir Conf.app_root
131
136
  Thin::Runner.new(argv.flatten).run!
132
137
  rescue RuntimeError => e
133
138
  puts "FAILED: RuntimeError: #{e.message}"
@@ -137,18 +142,19 @@ rescue Thin::PidFileNotFound
137
142
  puts "FAILED: daemon was not running (Thin::PidFileNotFound)"
138
143
  rescue Errno::ENOENT => e
139
144
  puts "FAILED: daemon cannot access files: #{e.message}"
145
+ rescue ArgumentError => e
146
+ puts "FAILED: argument error: #{e.message}"
140
147
  rescue SystemExit
141
148
  # Leave some time for the daemon to launch
142
- pidfile = Settings.pidfile
143
- print "Waiting for pidfile"
144
- until File.file?(pidfile) do
149
+ print "Waiting for pidfile "
150
+ until File.file?(Conf[:pidfile]) do
145
151
  print "."
146
152
  sleep 0.25
147
153
  end
148
154
  puts
149
155
 
150
156
  # Check that this process is running
151
- pid = File.read(pidfile).to_i
157
+ pid = File.read(Conf[:pidfile]).to_i
152
158
  begin
153
159
  Process.kill(0, pid)
154
160
  puts "Process ##{pid} is running"
data/config.ru CHANGED
@@ -13,20 +13,20 @@ $counters = RestFtpDaemon::Counters.new
13
13
  $pool = RestFtpDaemon::WorkerPool.new
14
14
 
15
15
  # Rack authent
16
- unless Settings.adminpwd.nil?
16
+ unless Conf[:adminpwd].nil?
17
17
  use Rack::Auth::Basic, "Restricted Area" do |username, password|
18
- [username, password] == ["admin", Settings.adminpwd]
18
+ [username, password] == ["admin", Conf[:adminpwd]]
19
19
  end
20
20
  end
21
21
 
22
22
  # NewRelic profiling
23
- GC::Profiler.enable if Settings.newrelic_enabled?
23
+ # GC::Profiler.enable if Conf.newrelic_enabled?
24
24
 
25
25
  # Serve static assets
26
- use Rack::Static, urls: ["/css", "/js", "/images"], root: "#{APP_LIBS}/static/"
26
+ use Rack::Static, urls: ["/css", "/js", "/images"], root: "#{Conf.app_libs}/static/"
27
27
 
28
28
  # Rack reloader and mini-profiler
29
- unless Settings.namespace == ENV_PRODUCTION
29
+ unless Conf.app_env == "production"
30
30
  # use Rack::Reloader, 1
31
31
  # use Rack::MiniProfiler
32
32
  end
data/defaults.yml ADDED
@@ -0,0 +1,61 @@
1
+ daemonize: true
2
+ port: 3000
3
+ nick: rftpd
4
+ user: rftpd
5
+ # group: rftpd
6
+ # host: "myhost"
7
+
8
+ pools:
9
+ default: 2
10
+
11
+ transfer:
12
+ # notify_after_sec: 5 # wait at least X seconds between HTTP notifications
13
+ # mkdir: true # build directory tree if missing
14
+ # tempfile: true # transfer to temporary file, rename after sucessful transfer
15
+ # overwrite: false # overwrite any target file with the same name
16
+ timeout: 1800 # jobs running for longer than X seconds will be killed
17
+
18
+ retry:
19
+ # on_errors:
20
+ # - ftp_perm_error
21
+ # - net_temp_error
22
+ # - conn_reset_by_peer
23
+ # - conn_timed_out
24
+ # - conn_refused
25
+ # - sftp_auth_failed
26
+ # - conn_host_is_down
27
+ # - conn_unreachable
28
+ # - conn_failed
29
+ # - conn_openssl_error
30
+ # max_runs: 5
31
+ # max_age: 1800
32
+ # delay: 10
33
+
34
+ conchita:
35
+ # timer: 60
36
+ # garbage_collector: true
37
+ # clean_failed: 3600
38
+ # clean_finished: 3600
39
+ # clean_queued: 86400
40
+
41
+ newrelic:
42
+ # licence: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
43
+ prefix: "rftpd" # app prefix
44
+ # platform: "bigbusiness" # app platform name
45
+ # app_name: "rftpd-bigbusiness-dev" # nickname used for naming app
46
+
47
+ debug:
48
+ ftp: false
49
+ sftp: false
50
+ conchita: false
51
+ reporter: fakse
52
+ allow_reload: false
53
+
54
+ logs:
55
+ thin: "/var/log/rftpd-environment-thin.log"
56
+ queue: "/var/log/rftpd-environment-core.log"
57
+ api: "/var/log/rftpd-environment-core.log"
58
+ workers: "/var/log/rftpd-environment-work.log"
59
+ jobs: "/var/log/rftpd-environment-work.log"
60
+ notify: "/var/log/rftpd-environment-work.log"
61
+ newrelic: "/var/log/rftpd-environment-newrelic.log"