lib/fluent/format/check.rb in fluent-format-0.2.3 vs lib/fluent/format/check.rb in fluent-format-0.2.4
- old
+ new
@@ -4,13 +4,11 @@
class Format
class Check
# Initialize
#
# @param [IO|String] config_dev
- # @param [String] plugin_dir the plugin directory
- # @param [Array] libs load libraries (to require)
- def initialize(config_dev, plugin_dir = nil, libs = nil)
+ def initialize(config_dev, opts = {})
@opts = {
:config_path => config_dev, # Fluent::DEFAULT_CONFIG_PATH,
:plugin_dirs => [Fluent::DEFAULT_PLUGIN_DIR],
:log_level => Fluent::Log::LEVEL_INFO,
:log_path => nil,
@@ -20,20 +18,69 @@
:chuser => nil,
:chgroup => nil,
:suppress_interval => 0,
:suppress_repeated_stacktrace => false,
}
- @opts[:plugin_dirs] << plugin_dir if plugin_dir
- @opts[:libs] += libs if libs and !libs.empty?
+ @opts[:plugin_dirs] += opts[:plugin_dirs] if opts[:plugin_dirs] and !opts[:plugin_dirs].empty?
+ @opts[:libs] += opts[:libs] if opts[:libs] and !opts[:libs].empty?
+ @opts[:inline_config] = opts[:inline_config]
+ @opts[:gemfile] = opts[:gemfile]
+ @opts[:gem_install_path] = opts[:gem_install_path]
end
# Check config file
#
# @raise Fluent::ConfigParseError if conf has syntax errors
# @raise Fluent::ConfigError if plugin raises config error
# @return true if success
def run
+ Fluent::Format::BundlerInjection.new(@opts).run
Fluent::Supervisor.new(@opts).extended_dry_run
+ end
+ end
+ end
+end
+
+module Fluent
+ class Format
+ class BundlerInjection
+ def initialize(opts = {})
+ @opts = {
+ :gemfile => opts[:gemfile],
+ :gem_install_path => opts[:gem_install_path],
+ }
+ end
+
+ def run
+ # copy from lib/fluent/command/fluentd.rb
+ if ENV['FLUENTD_DISABLE_BUNDLER_INJECTION'] != '1' && gemfile = @opts[:gemfile]
+ ENV['BUNDLE_GEMFILE'] = gemfile
+ if path = @opts[:gem_install_path]
+ ENV['BUNDLE_PATH'] = path
+ else
+ ENV['BUNDLE_PATH'] = File.expand_path(File.join(File.dirname(gemfile), 'vendor/bundle'))
+ end
+ ENV['FLUENTD_DISABLE_BUNDLER_INJECTION'] = '1'
+ bundler_injection
+ end
+ end
+
+ def bundler_injection
+ # basically copy from lib/fluent/command/bundler_injection.rb
+ system("bundle install")
+ unless $?.success?
+ exit $?.exitstatus
+ end
+
+ cmdline = [
+ 'bundle',
+ 'exec',
+ RbConfig.ruby,
+ File.expand_path(File.join(File.dirname(__FILE__), '../../../bin/fluent-format')),
+ ] + ARGV
+
+ exec *cmdline
+ exit! 127
end
end
end
end