Class: MultiRails::Loader

Inherits:
Object
  • Object
show all
Defined in:
lib/multi_rails/loader.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(version) ⇒ Loader

A version of the loader is created to gem and require one version of Rails



28
29
30
# File 'lib/multi_rails/loader.rb', line 28

def initialize(version)
  @version = version
end

Instance Attribute Details

#versionObject (readonly)

Returns the value of attribute version.



4
5
6
# File 'lib/multi_rails/loader.rb', line 4

def version
  @version
end

Class Method Details

.all_rails_versionsObject

Returns a list of all Rails versions available, oldest first



18
19
20
21
# File 'lib/multi_rails/loader.rb', line 18

def self.all_rails_versions
  specs = Gem::cache.find_name("rails")
  specs.map {|spec| spec.version.to_s }.sort
end

.gem_and_require_rails(rails_version = nil) ⇒ Object

Require and gem rails Will use a default version if none is supplied



12
13
14
15
# File 'lib/multi_rails/loader.rb', line 12

def self.gem_and_require_rails(rails_version = nil)
  rails_version = MultiRails::Config.version_lookup(rails_version)
  Loader.new(rails_version).gem_and_require_rails
end

.latest_stable_versionObject



23
24
25
# File 'lib/multi_rails/loader.rb', line 23

def self.latest_stable_version
  all_rails_versions.sort.reverse.detect {|version| version.count(".") < 3 }
end

.loggerObject



6
7
8
# File 'lib/multi_rails/loader.rb', line 6

def self.logger
  @logger ||= Logger.new(STDOUT)
end

Instance Method Details

#gem_and_require_railsObject

Gem a version of Rails, and require appropriate files



33
34
35
36
# File 'lib/multi_rails/loader.rb', line 33

def gem_and_require_rails
  gem_rails
  require_rails
end

#gem_railsObject



38
39
40
41
42
43
# File 'lib/multi_rails/loader.rb', line 38

def gem_rails
  gem 'rails', version
rescue LoadError => e
  msg = %Q[Cannot find gem for Rails version: '#{version}'!\nInstall the missing gem with:\nsudo gem install -v=#{version} rails]
  raise MultiRailsError, msg
end

#require_railsObject



45
46
47
# File 'lib/multi_rails/loader.rb', line 45

def require_rails
  Config.rails_requires.each {|lib| require lib }
end