nginxtra 1.2.3.6 → 1.2.3.7

Sign up to get free protection for your applications and to get access to all the features.
data/bin/nginxtra CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  require "rubygems"
3
- gem "nginxtra", "= 1.2.3.6"
3
+ gem "nginxtra", "= 1.2.3.7"
4
4
  gem "thor", "~> 0.16.0"
5
5
  require "nginxtra"
6
6
  Nginxtra::CLI.start
data/bin/nginxtra_rails CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  require "rubygems"
3
- gem "nginxtra", "= 1.2.3.6"
3
+ gem "nginxtra", "= 1.2.3.7"
4
4
  gem "thor", "~> 0.16.0"
5
5
  require "nginxtra"
6
6
  Nginxtra::Rails::CLI.start
@@ -146,7 +146,7 @@ module Nginxtra
146
146
  # Define a new config file with the given filename and the block
147
147
  # to define it with.
148
148
  def file(filename, &block)
149
- @files[filename] = Nginxtra::Config::ConfigFile.new(self, &block)
149
+ @files[filename] = Nginxtra::Config::ConfigFile.new filename, self, &block
150
150
  end
151
151
 
152
152
  # Retrieve the files that have been defined.
@@ -312,7 +312,8 @@ module Nginxtra
312
312
 
313
313
  # Represents a config file being defined by nginxtra.conf.rb.
314
314
  class ConfigFile
315
- def initialize(config, &block)
315
+ def initialize(filename, config, &block)
316
+ @filename = filename
316
317
  @config = config
317
318
  @indentation = Nginxtra::Config::Indentation.new :indent_size => 4
318
319
  @file_contents = []
@@ -335,7 +336,9 @@ module Nginxtra
335
336
  # config_line "worker_processes 42"
336
337
  # end
337
338
  def config_line(contents)
339
+ empty_config_line if @end_of_block
338
340
  @begin_of_block = false
341
+ @end_of_block = false
339
342
  bare_config_line "#{contents};"
340
343
  end
341
344
 
@@ -348,12 +351,14 @@ module Nginxtra
348
351
  # end
349
352
  def bare_config_line(contents)
350
353
  @begin_of_block = false
354
+ @end_of_block = false
351
355
  @file_contents << "#{@indentation}#{contents}"
352
356
  end
353
357
 
354
358
  # Add an empty config line to the resulting config file.
355
359
  def empty_config_line
356
360
  @begin_of_block = false
361
+ @end_of_block = false
357
362
  @file_contents << ""
358
363
  end
359
364
 
@@ -377,6 +382,7 @@ module Nginxtra
377
382
  yield if block_given?
378
383
  @indentation - 1
379
384
  bare_config_line "}"
385
+ @end_of_block = true
380
386
  end
381
387
 
382
388
  # Process the given template. Optionally, include options (as
@@ -413,12 +419,10 @@ module Nginxtra
413
419
  # Any arguments the the method will be joined with the method name
414
420
  # with a space to produce the output.
415
421
  def method_missing(method, *args, &block)
416
- values = [method, *args].join " "
417
-
418
- if block
419
- config_block values, &block
422
+ if partial? method
423
+ invoke_partial method, args, block
420
424
  else
421
- config_line values
425
+ process_config_block_or_line method, args, block
422
426
  end
423
427
  end
424
428
 
@@ -437,6 +441,41 @@ module Nginxtra
437
441
  def passenger_on!
438
442
  config_line %{passenger_enabled on}
439
443
  end
444
+
445
+ private
446
+ def partial?(partial_name)
447
+ @config.partial_paths.any? do |path|
448
+ File.exists? File.join(path, "#{@filename}/#{partial_name}.rb")
449
+ end
450
+ end
451
+
452
+ def invoke_partial(partial_name, args, block)
453
+ partial_path = @config.partial_paths.map do |path|
454
+ File.join path, "#{@filename}/#{partial_name}.rb"
455
+ end.find do |path|
456
+ File.exists? path
457
+ end
458
+
459
+ if args.empty?
460
+ partial_options = {}
461
+ elsif args.length == 1 && args.first.kind_of?(Hash)
462
+ partial_options = args.first
463
+ else
464
+ raise InvalidConfig.new("Invalid partial arguments", :header => "Invalid partial arguments!", :message => "You can only pass 0 arguments or 1 hash to a partial!")
465
+ end
466
+
467
+ process_template! partial_path, partial_options, block
468
+ end
469
+
470
+ def process_config_block_or_line(name, args, block)
471
+ values = [name, *args].join " "
472
+
473
+ if block
474
+ config_block values, &block
475
+ else
476
+ config_line values
477
+ end
478
+ end
440
479
  end
441
480
 
442
481
  # A class for encapsulating simple configuration.
@@ -444,8 +483,7 @@ module Nginxtra
444
483
  def initialize(config, options = {}, &block)
445
484
  @config = config
446
485
  @options = options
447
- @invoked_partials = []
448
- instance_eval &block
486
+ @block = block
449
487
  end
450
488
 
451
489
  # Process the simple config.
@@ -489,37 +527,15 @@ module Nginxtra
489
527
  def process_files!(files)
490
528
  files.each do |x|
491
529
  path = x[:path]
492
- file_name = x[:config_file]
493
- config = @config
530
+ filename = x[:config_file]
494
531
  options = @options
495
- invoked_partials = @invoked_partials
496
-
497
- yielder = proc do
498
- invoked_partials.each do |partial|
499
- method, args, block = partial
500
- partial_options = {}
501
- partial_options = args.first if args.length > 0 && args.first.kind_of?(Hash)
502
-
503
- config.partial_paths.each do |path|
504
- partial_path = File.join path, "#{file_name}/#{method}.rb"
505
-
506
- if File.exists? partial_path
507
- process_template! partial_path, partial_options, block
508
- break
509
- end
510
- end
511
- end
512
- end
532
+ block = @block
513
533
 
514
- @config.file file_name do
515
- process_template! path, options, yielder
534
+ @config.file filename do
535
+ process_template! path, options, block
516
536
  end
517
537
  end
518
538
  end
519
-
520
- def method_missing(method, *args, &block)
521
- @invoked_partials << [method, args, block]
522
- end
523
539
  end
524
540
 
525
541
  class Indentation
@@ -2,7 +2,7 @@ module Nginxtra
2
2
  class Version
3
3
  class << self
4
4
  def to_s
5
- "1.2.3.6"
5
+ "1.2.3.7"
6
6
  end
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nginxtra
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3.6
4
+ version: 1.2.3.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-24 00:00:00.000000000 Z
12
+ date: 2012-09-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
16
- requirement: &15893000 !ruby/object:Gem::Requirement
16
+ requirement: &8618220 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: 0.16.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *15893000
24
+ version_requirements: *8618220
25
25
  description: This gem is intended to provide an easy to use configuration file that
26
26
  will automatically be used to compile nginx and configure the configuration.
27
27
  email: reasonnumber@gmail.com