Changesets can be listed by changeset number.
The Git repository is here.
- Revision:
- 349
- Log:
There were various attempts to patch around Instiki's use of
Bundler, which is a really annoying "package all the gems inside
the application" piece of Rails deployment bloatware. ROOL has a
well organised set of centralised gems and needs no such thing.
These changes to boot.rb include things which are really
reversions, e.g. removing correct use of "File.join" and
replacing it with hard-coded Unix style paths, but it's known to
work as a bypass-bundler patch and is in use on the live site.
- Author:
- rool
- Date:
- Sat Mar 19 21:52:58 +0000 2011
- Size:
- 2795 Bytes
1 | # Don't change this file! |
2 | # Configure your app in config/environment.rb and config/environments/*.rb |
3 | |
4 | RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT) |
5 | |
6 | module Rails |
7 | class << self |
8 | def boot! |
9 | unless booted? |
10 | preinitialize |
11 | pick_boot.run |
12 | end |
13 | end |
14 | |
15 | def booted? |
16 | defined? Rails::Initializer |
17 | end |
18 | |
19 | def pick_boot |
20 | (vendor_rails? ? VendorBoot : GemBoot).new |
21 | end |
22 | |
23 | def vendor_rails? |
24 | File.exist?("#{RAILS_ROOT}/vendor/rails") |
25 | end |
26 | |
27 | def preinitialize |
28 | load(preinitializer_path) if File.exist?(preinitializer_path) |
29 | end |
30 | |
31 | def preinitializer_path |
32 | "#{RAILS_ROOT}/config/preinitializer.rb" |
33 | end |
34 | end |
35 | |
36 | class Boot |
37 | def run |
38 | load_initializer |
39 | Rails::Initializer.run(:set_load_path) |
40 | end |
41 | end |
42 | |
43 | class VendorBoot < Boot |
44 | def load_initializer |
45 | require "#{RAILS_ROOT}/vendor/rails/railties/lib/initializer" |
46 | Rails::Initializer.run(:install_gem_spec_stubs) |
47 | Rails::GemDependency.add_frozen_gem_path |
48 | end |
49 | end |
50 | |
51 | class GemBoot < Boot |
52 | def load_initializer |
53 | self.class.load_rubygems |
54 | load_rails_gem |
55 | require 'initializer' |
56 | end |
57 | |
58 | def load_rails_gem |
59 | if version = self.class.gem_version |
60 | gem 'rails', version |
61 | else |
62 | gem 'rails' |
63 | end |
64 | rescue Gem::LoadError => load_error |
65 | $stderr.puts %(Missing the Rails #{version} gem. Please `gem install -v=#{version} rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.) |
66 | exit 1 |
67 | end |
68 | |
69 | class << self |
70 | def rubygems_version |
71 | Gem::RubyGemsVersion rescue nil |
72 | end |
73 | |
74 | def gem_version |
75 | if defined? RAILS_GEM_VERSION |
76 | RAILS_GEM_VERSION |
77 | elsif ENV.include?('RAILS_GEM_VERSION') |
78 | ENV['RAILS_GEM_VERSION'] |
79 | else |
80 | parse_gem_version(read_environment_rb) |
81 | end |
82 | end |
83 | |
84 | def load_rubygems |
85 | min_version = '1.3.2' |
86 | require 'rubygems' |
87 | unless rubygems_version >= min_version |
88 | $stderr.puts %Q(Rails requires RubyGems >= #{min_version} (you have #{rubygems_version}). Please `gem update --system` and try again.) |
89 | exit 1 |
90 | end |
91 | |
92 | rescue LoadError |
93 | $stderr.puts %Q(Rails requires RubyGems >= #{min_version}. Please install RubyGems and try again: http://rubygems.rubyforge.org) |
94 | exit 1 |
95 | end |
96 | |
97 | def parse_gem_version(text) |
98 | $1 if text =~ /^[^#]*RAILS_GEM_VERSION\s*=\s*["']([!~<>=]*\s*[\d.]+)["']/ |
99 | end |
100 | |
101 | private |
102 | def read_environment_rb |
103 | File.read("#{RAILS_ROOT}/config/environment.rb") |
104 | end |
105 | end |
106 | end |
107 | end |
108 | |
109 | # All that for this: |
110 | Rails.boot! |