Module: Development

Defined in:
lib/development.rb,
lib/namespaces.rb

Overview

Singleton that manages configurations and requires.

Defined Under Namespace

Modules: ConfigurationInterface, Require Classes: Directory, Gem, Gemset

Constant Summary collapse

ConfigurationFileName =

Name of configuration file: .development.rb.

'.development.rb'

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.clearDevelopment

Reset internal tracking variables.

Returns:



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/development.rb', line 53

def self.clear
  
  @enable_for_all = false

  @directories.clear

  @gems.clear
  @gemsets.clear

  @general_load_paths.clear

  @loaded_gems.clear
  
  return self
  
end

.directoriesHash{Symbol=>::Development::Directory}

Get Hash of named directory names to paths.

Returns:



272
273
274
275
276
# File 'lib/development.rb', line 272

def self.directories

  return @directories

end

.self.directory(name, path, gem_or_gemset, ...) ⇒ ::Development::Directory

Return path for directory name.

Parameters:

  • directory_name

    Name of named directory.

  • path_parts

    The first can be a Symbol naming a directory; any can be String describing directory path.

Returns:



225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
# File 'lib/development.rb', line 225

def self.directory( name, *path_parts )
  
  name = name.to_sym

  if directory_instance = @directories[ name ]
    unless path_parts.empty?
      directory_instance.set_path( *path_parts )
    end
  else
    if path_parts.empty?
      raise ::ArgumentError, 'Path required to create directory :' << name.to_s + '.'
    end
    @directories[ name ] = directory_instance = Directory.new( name, *path_parts )
  end

  return directory_instance
  
end

.disable!::Development .disable(gem_or_gemset, ...) ⇒ ::Development

Disable gems.

Overloads:

  • .disable(gem_or_gemset, ...) ⇒ ::Development

    Parameters:

    • gem_or_gemset

      Gem or Gemset instance or name to disable.

Returns:



422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
# File 'lib/development.rb', line 422

def self.disable!( *gem_or_gemset_names )

  if gem_or_gemset_names.empty?

    @enable_for_all = false
    @gems.each do |this_gem_name, this_gem|
      this_gem.disable!
    end
    @gemsets.each do |this_gemset_name, this_gemset|
      this_gemset.disable!
    end

  else

    gem_or_gemset_names.each do |this_gemset_or_gem_name|
      this_gem_or_gemset_reference_name = this_gemset_or_gem_name.to_s.gsub( '/', '-' ).to_sym
      if gem_instance = @gems[ this_gem_or_gemset_reference_name ]
        gem_instance.disable!
      end
      if gemset_instance = @gemsets[ this_gem_or_gemset_reference_name ]
        gemset_instance.disable!
      end
    end

  end

  return self

end

.enable!::Development .enable(gem_or_gemset, ...) ⇒ ::Development

Enable gems.

Overloads:

  • .enable(gem_or_gemset, ...) ⇒ ::Development

    Parameters:

    • gem_or_gemset

      Gem or Gemset instance or name to enable.

Returns:



367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
# File 'lib/development.rb', line 367

def self.enable!( *gem_or_gemset_names )
  
  if gem_or_gemset_names.empty?

    @enable_for_all = true
    @gems.each do |this_gem_name, this_gem|
      this_gem.enable!
    end
    @gemsets.each do |this_gemset_name, this_gemset|
      this_gemset.enable!
    end

  else

    gem_or_gemset_names.each do |this_gemset_or_gem_name|
      if this_gemset_or_gem_name.is_a?( ::Hash )
        this_gemset_or_gem_name.each do |this_gem, this_path|
          gem_instance = gem( this_gem )
          gem_instance.set_directory( this_path )
          gem_instance.enable!
        end
      else
        this_gem_or_gemset_reference_name = this_gemset_or_gem_name.to_s.gsub( '/', '-' ).to_sym
        if gem_instance = @gems[ this_gem_or_gemset_reference_name ]
          gem_instance.enable!
        end
        if gemset_instance = @gemsets[ this_gem_or_gemset_reference_name ]
          gemset_instance.enable!
        end
      end
    end

  end
  
  return self
  
end

.enabled_for_all?true, false

Query whether Development is set to search in general paths for any gem, even if not explicitly enabled.

Returns:

  • (true, false)

    Whether general gem search is enabled.



344
345
346
347
348
# File 'lib/development.rb', line 344

def self.enabled_for_all?
  
  return @enable_for_all
  
end

.gem(name, directory_or_path = nil) ⇒ ::Development::Gem

Define a gem or retrieve defined gem.

Parameters:

  • name

    Name of gem.

  • directory_or_path (defaults to: nil)

    Development::Directory or String describing path.

Returns:



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/development.rb', line 87

def self.gem( name, directory_or_path = nil )

  gem_require_name = name.to_s.gsub( '/', '-' )

  name = gem_require_name.to_sym

  if gem_instance = @gems[ name ]
    if directory_or_path
      gem_instance.set_directory( directory_or_path )
    end
  else
    @gems[ name ] = gem_instance = Gem.new( name, directory_or_path )
  end
  
  return gem_instance

end

.gemsHash{Symbol=>Array<::Development::Gem>}

Get hash of gems.

Returns:

  • (Hash{Symbol=>Array<::Development::Gem>})

    Hash of gemsets and their gem or gemset members.



133
134
135
136
137
# File 'lib/development.rb', line 133

def self.gems
  
  return @gems
  
end

.self.gemset(name, gem_or_gemset, ...) ⇒ ::Development::Gemset

Define a gem or retrieve defined gem.

Parameters:

  • name

    Name of gemset.

  • gem_or_gemset

    Gem or Gemset name or instance.

Returns:



158
159
160
161
162
163
164
165
166
167
168
169
170
# File 'lib/development.rb', line 158

def self.gemset( name, *gems_or_gemsets )

  name = name.to_sym
  
  unless gemset_instance = @gemsets[ name ]
    @gemsets[ name ] = gemset_instance = Gemset.new( name )
  end
  
  gemset_instance.add( *gems_or_gemsets )
  
  return gemset_instance
  
end

.gemsetsHash{Symbol=>Array<::Development::Gemset>}

Get hash of gemsets and their gem or gemset members.

Returns:



200
201
202
203
204
# File 'lib/development.rb', line 200

def self.gemsets
  
  return @gemsets
  
end

.general_load_path(path) ⇒ ::Development

Define general load path.

Parameters:

  • path

    String describing directory path.

Returns:



291
292
293
294
295
296
297
# File 'lib/development.rb', line 291

def self.general_load_path( path )
  
  @general_load_paths.push( ::File.expand_path( path ) )
  
  return self
  
end

.general_load_pathsArray<String>

Get Array of paths that will be used for general loading purposes if a specific gem path is not given.

Returns:

  • (Array<String>)

    Paths to be used for general loading purposes.



329
330
331
332
333
# File 'lib/development.rb', line 329

def self.general_load_paths

  return @general_load_paths

end

.get_directory(name) ⇒ ::Development::Directory

Return directory with name.

Parameters:

  • name

    Name of directory to return.

Returns:



257
258
259
260
261
# File 'lib/development.rb', line 257

def self.get_directory( name )
  
  return @directories[ name.to_sym ]
  
end

.get_gem(name) ⇒ ::Development::Gem

Retrieve defined gem.

Parameters:

  • name

    Name of gem.

Returns:



118
119
120
121
122
# File 'lib/development.rb', line 118

def self.get_gem( name )
  
  return @gems[ name.to_sym ]
  
end

.get_gemset(name) ⇒ ::Development::Gemset

Retrieve defined gemset.

Parameters:

  • name

    Name of gemset.

Returns:



185
186
187
188
189
# File 'lib/development.rb', line 185

def self.get_gemset( name )
  
  return @gemsets[ name.to_sym ]
  
end

.initializeDevelopment

Initialize internal tracking variables.

Returns:



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/development.rb', line 27

def self.initialize

  @enable_for_all = false
  
  @directories = { }
  
  @gems = { }
  @gemsets = { }

  @general_load_paths = [ ]

  @loaded_gems = { }

  return self
  
end

.remove_general_load_path(path) ⇒ ::Development

Remove general load path.

Parameters:

  • path

    String describing directory path.

Returns:



312
313
314
315
316
317
318
# File 'lib/development.rb', line 312

def self.remove_general_load_path( path )
  
  @general_load_paths.delete( ::File.expand_path( path ) )
  
  return self
  
end

Instance Method Details

#loaded?(gem_name) ⇒ true, false

Query whether gem was loaded via Development rather than standard require.

Parameters:

  • gem_name

    Name of gem.

Returns:

  • (true, false)

    Whether gem was loaded via Development.



465
466
467
468
469
470
471
# File 'lib/development.rb', line 465

def loaded?( gem_name )
  
  gem_require_name = gem_name.to_s.gsub( '/', '-' )
  
  return @loaded_gems.has_key?( gem_require_name.to_sym )
  
end