rails 2.3.18 → 7.1.3.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +2 -2
- data/README.md +97 -0
- metadata +207 -332
- data/CHANGELOG +0 -2193
- data/README +0 -243
- data/Rakefile +0 -365
- data/bin/about +0 -4
- data/bin/console +0 -3
- data/bin/dbconsole +0 -3
- data/bin/destroy +0 -3
- data/bin/generate +0 -3
- data/bin/performance/benchmarker +0 -3
- data/bin/performance/profiler +0 -3
- data/bin/plugin +0 -3
- data/bin/rails +0 -21
- data/bin/runner +0 -3
- data/bin/server +0 -3
- data/builtin/rails_info/rails/info.rb +0 -131
- data/builtin/rails_info/rails/info_controller.rb +0 -9
- data/builtin/rails_info/rails/info_helper.rb +0 -2
- data/builtin/rails_info/rails_info_controller.rb +0 -2
- data/configs/databases/frontbase.yml +0 -28
- data/configs/databases/ibm_db.yml +0 -62
- data/configs/databases/mysql.yml +0 -60
- data/configs/databases/oracle.yml +0 -39
- data/configs/databases/postgresql.yml +0 -51
- data/configs/databases/sqlite2.yml +0 -19
- data/configs/databases/sqlite3.yml +0 -22
- data/configs/empty.log +0 -0
- data/configs/initializers/backtrace_silencers.rb +0 -7
- data/configs/initializers/cookie_verification_secret.rb +0 -7
- data/configs/initializers/inflections.rb +0 -10
- data/configs/initializers/mime_types.rb +0 -5
- data/configs/initializers/new_rails_defaults.rb +0 -21
- data/configs/initializers/session_store.rb +0 -15
- data/configs/locales/en.yml +0 -5
- data/configs/routes.rb +0 -43
- data/configs/seeds.rb +0 -7
- data/dispatches/config.ru +0 -7
- data/dispatches/dispatch.fcgi +0 -24
- data/dispatches/dispatch.rb +0 -10
- data/dispatches/gateway.cgi +0 -97
- data/doc/README_FOR_APP +0 -2
- data/environments/boot.rb +0 -114
- data/environments/development.rb +0 -17
- data/environments/environment.rb +0 -41
- data/environments/production.rb +0 -28
- data/environments/test.rb +0 -28
- data/fresh_rakefile +0 -10
- data/helpers/application_controller.rb +0 -10
- data/helpers/application_helper.rb +0 -3
- data/helpers/performance_test.rb +0 -9
- data/helpers/test_helper.rb +0 -38
- data/html/404.html +0 -30
- data/html/422.html +0 -30
- data/html/500.html +0 -30
- data/html/favicon.ico +0 -0
- data/html/images/rails.png +0 -0
- data/html/index.html +0 -275
- data/html/javascripts/application.js +0 -2
- data/html/javascripts/controls.js +0 -963
- data/html/javascripts/dragdrop.js +0 -973
- data/html/javascripts/effects.js +0 -1128
- data/html/javascripts/prototype.js +0 -4320
- data/html/robots.txt +0 -5
- data/lib/code_statistics.rb +0 -107
- data/lib/commands/about.rb +0 -3
- data/lib/commands/console.rb +0 -45
- data/lib/commands/dbconsole.rb +0 -87
- data/lib/commands/destroy.rb +0 -6
- data/lib/commands/generate.rb +0 -6
- data/lib/commands/ncgi/listener +0 -86
- data/lib/commands/ncgi/tracker +0 -69
- data/lib/commands/performance/benchmarker.rb +0 -24
- data/lib/commands/performance/profiler.rb +0 -50
- data/lib/commands/plugin.rb +0 -968
- data/lib/commands/runner.rb +0 -54
- data/lib/commands/server.rb +0 -114
- data/lib/commands/update.rb +0 -4
- data/lib/commands.rb +0 -17
- data/lib/console_app.rb +0 -30
- data/lib/console_sandbox.rb +0 -6
- data/lib/console_with_helpers.rb +0 -5
- data/lib/dispatcher.rb +0 -24
- data/lib/fcgi_handler.rb +0 -239
- data/lib/initializer.rb +0 -1152
- data/lib/performance_test_help.rb +0 -5
- data/lib/rails/backtrace_cleaner.rb +0 -54
- data/lib/rails/gem_builder.rb +0 -21
- data/lib/rails/gem_dependency.rb +0 -317
- data/lib/rails/plugin/loader.rb +0 -198
- data/lib/rails/plugin/locator.rb +0 -100
- data/lib/rails/plugin.rb +0 -179
- data/lib/rails/rack/debugger.rb +0 -23
- data/lib/rails/rack/log_tailer.rb +0 -35
- data/lib/rails/rack/metal.rb +0 -51
- data/lib/rails/rack/static.rb +0 -46
- data/lib/rails/rack.rb +0 -8
- data/lib/rails/vendor_gem_source_index.rb +0 -140
- data/lib/rails/version.rb +0 -9
- data/lib/rails_generator/base.rb +0 -266
- data/lib/rails_generator/commands.rb +0 -621
- data/lib/rails_generator/generated_attribute.rb +0 -47
- data/lib/rails_generator/generators/applications/app/USAGE +0 -9
- data/lib/rails_generator/generators/applications/app/app_generator.rb +0 -266
- data/lib/rails_generator/generators/applications/app/scm/git.rb +0 -18
- data/lib/rails_generator/generators/applications/app/scm/scm.rb +0 -8
- data/lib/rails_generator/generators/applications/app/scm/svn.rb +0 -7
- data/lib/rails_generator/generators/applications/app/template_runner.rb +0 -401
- data/lib/rails_generator/generators/components/controller/USAGE +0 -30
- data/lib/rails_generator/generators/components/controller/controller_generator.rb +0 -43
- data/lib/rails_generator/generators/components/controller/templates/controller.rb +0 -7
- data/lib/rails_generator/generators/components/controller/templates/functional_test.rb +0 -8
- data/lib/rails_generator/generators/components/controller/templates/helper.rb +0 -2
- data/lib/rails_generator/generators/components/controller/templates/helper_test.rb +0 -4
- data/lib/rails_generator/generators/components/controller/templates/view.html.erb +0 -2
- data/lib/rails_generator/generators/components/helper/USAGE +0 -24
- data/lib/rails_generator/generators/components/helper/helper_generator.rb +0 -25
- data/lib/rails_generator/generators/components/helper/templates/helper.rb +0 -2
- data/lib/rails_generator/generators/components/helper/templates/helper_test.rb +0 -4
- data/lib/rails_generator/generators/components/integration_test/USAGE +0 -8
- data/lib/rails_generator/generators/components/integration_test/integration_test_generator.rb +0 -16
- data/lib/rails_generator/generators/components/integration_test/templates/integration_test.rb +0 -10
- data/lib/rails_generator/generators/components/mailer/USAGE +0 -16
- data/lib/rails_generator/generators/components/mailer/mailer_generator.rb +0 -30
- data/lib/rails_generator/generators/components/mailer/templates/fixture.erb +0 -3
- data/lib/rails_generator/generators/components/mailer/templates/fixture.rhtml +0 -0
- data/lib/rails_generator/generators/components/mailer/templates/mailer.rb +0 -15
- data/lib/rails_generator/generators/components/mailer/templates/unit_test.rb +0 -20
- data/lib/rails_generator/generators/components/mailer/templates/view.erb +0 -3
- data/lib/rails_generator/generators/components/mailer/templates/view.rhtml +0 -0
- data/lib/rails_generator/generators/components/metal/USAGE +0 -8
- data/lib/rails_generator/generators/components/metal/metal_generator.rb +0 -8
- data/lib/rails_generator/generators/components/metal/templates/metal.rb +0 -12
- data/lib/rails_generator/generators/components/migration/USAGE +0 -29
- data/lib/rails_generator/generators/components/migration/migration_generator.rb +0 -20
- data/lib/rails_generator/generators/components/migration/templates/migration.rb +0 -11
- data/lib/rails_generator/generators/components/model/USAGE +0 -27
- data/lib/rails_generator/generators/components/model/model_generator.rb +0 -52
- data/lib/rails_generator/generators/components/model/templates/fixtures.yml +0 -23
- data/lib/rails_generator/generators/components/model/templates/migration.rb +0 -16
- data/lib/rails_generator/generators/components/model/templates/model.rb +0 -5
- data/lib/rails_generator/generators/components/model/templates/unit_test.rb +0 -8
- data/lib/rails_generator/generators/components/observer/USAGE +0 -13
- data/lib/rails_generator/generators/components/observer/observer_generator.rb +0 -16
- data/lib/rails_generator/generators/components/observer/templates/observer.rb +0 -2
- data/lib/rails_generator/generators/components/observer/templates/unit_test.rb +0 -8
- data/lib/rails_generator/generators/components/performance_test/USAGE +0 -8
- data/lib/rails_generator/generators/components/performance_test/performance_test_generator.rb +0 -16
- data/lib/rails_generator/generators/components/performance_test/templates/performance_test.rb +0 -9
- data/lib/rails_generator/generators/components/plugin/USAGE +0 -25
- data/lib/rails_generator/generators/components/plugin/plugin_generator.rb +0 -39
- data/lib/rails_generator/generators/components/plugin/templates/MIT-LICENSE +0 -20
- data/lib/rails_generator/generators/components/plugin/templates/README +0 -13
- data/lib/rails_generator/generators/components/plugin/templates/Rakefile +0 -23
- data/lib/rails_generator/generators/components/plugin/templates/USAGE +0 -8
- data/lib/rails_generator/generators/components/plugin/templates/generator.rb +0 -8
- data/lib/rails_generator/generators/components/plugin/templates/init.rb +0 -1
- data/lib/rails_generator/generators/components/plugin/templates/install.rb +0 -1
- data/lib/rails_generator/generators/components/plugin/templates/plugin.rb +0 -1
- data/lib/rails_generator/generators/components/plugin/templates/tasks.rake +0 -4
- data/lib/rails_generator/generators/components/plugin/templates/test_helper.rb +0 -4
- data/lib/rails_generator/generators/components/plugin/templates/uninstall.rb +0 -1
- data/lib/rails_generator/generators/components/plugin/templates/unit_test.rb +0 -8
- data/lib/rails_generator/generators/components/resource/USAGE +0 -23
- data/lib/rails_generator/generators/components/resource/resource_generator.rb +0 -76
- data/lib/rails_generator/generators/components/resource/templates/controller.rb +0 -2
- data/lib/rails_generator/generators/components/resource/templates/functional_test.rb +0 -8
- data/lib/rails_generator/generators/components/resource/templates/helper.rb +0 -2
- data/lib/rails_generator/generators/components/resource/templates/helper_test.rb +0 -4
- data/lib/rails_generator/generators/components/scaffold/USAGE +0 -29
- data/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb +0 -103
- data/lib/rails_generator/generators/components/scaffold/templates/controller.rb +0 -83
- data/lib/rails_generator/generators/components/scaffold/templates/functional_test.rb +0 -45
- data/lib/rails_generator/generators/components/scaffold/templates/helper.rb +0 -2
- data/lib/rails_generator/generators/components/scaffold/templates/helper_test.rb +0 -4
- data/lib/rails_generator/generators/components/scaffold/templates/layout.html.erb +0 -17
- data/lib/rails_generator/generators/components/scaffold/templates/style.css +0 -54
- data/lib/rails_generator/generators/components/scaffold/templates/view_edit.html.erb +0 -18
- data/lib/rails_generator/generators/components/scaffold/templates/view_index.html.erb +0 -24
- data/lib/rails_generator/generators/components/scaffold/templates/view_new.html.erb +0 -17
- data/lib/rails_generator/generators/components/scaffold/templates/view_show.html.erb +0 -10
- data/lib/rails_generator/generators/components/session_migration/USAGE +0 -10
- data/lib/rails_generator/generators/components/session_migration/session_migration_generator.rb +0 -18
- data/lib/rails_generator/generators/components/session_migration/templates/migration.rb +0 -16
- data/lib/rails_generator/lookup.rb +0 -249
- data/lib/rails_generator/manifest.rb +0 -53
- data/lib/rails_generator/options.rb +0 -150
- data/lib/rails_generator/scripts/destroy.rb +0 -29
- data/lib/rails_generator/scripts/generate.rb +0 -7
- data/lib/rails_generator/scripts/update.rb +0 -12
- data/lib/rails_generator/scripts.rb +0 -89
- data/lib/rails_generator/secret_key_generator.rb +0 -24
- data/lib/rails_generator/simple_logger.rb +0 -46
- data/lib/rails_generator/spec.rb +0 -44
- data/lib/rails_generator.rb +0 -46
- data/lib/railties_path.rb +0 -1
- data/lib/ruby_version_check.rb +0 -17
- data/lib/rubyprof_ext.rb +0 -35
- data/lib/source_annotation_extractor.rb +0 -102
- data/lib/tasks/annotations.rake +0 -20
- data/lib/tasks/databases.rake +0 -436
- data/lib/tasks/documentation.rake +0 -93
- data/lib/tasks/framework.rake +0 -146
- data/lib/tasks/gems.rake +0 -78
- data/lib/tasks/log.rake +0 -9
- data/lib/tasks/middleware.rake +0 -7
- data/lib/tasks/misc.rake +0 -63
- data/lib/tasks/rails.rb +0 -14
- data/lib/tasks/routes.rake +0 -18
- data/lib/tasks/statistics.rake +0 -17
- data/lib/tasks/testing.rake +0 -139
- data/lib/tasks/tmp.rake +0 -37
- data/lib/test_help.rb +0 -38
- data/lib/webrick_server.rb +0 -156
- data/railties.gemspec +0 -22
data/lib/rails/plugin.rb
DELETED
@@ -1,179 +0,0 @@
|
|
1
|
-
module Rails
|
2
|
-
# The Plugin class should be an object which provides the following methods:
|
3
|
-
#
|
4
|
-
# * +name+ - Used during initialisation to order the plugin (based on name and
|
5
|
-
# the contents of <tt>config.plugins</tt>).
|
6
|
-
# * +valid?+ - Returns true if this plugin can be loaded.
|
7
|
-
# * +load_paths+ - Each path within the returned array will be added to the <tt>$LOAD_PATH</tt>.
|
8
|
-
# * +load+ - Finally 'load' the plugin.
|
9
|
-
#
|
10
|
-
# These methods are expected by the Rails::Plugin::Locator and Rails::Plugin::Loader classes.
|
11
|
-
# The default implementation returns the <tt>lib</tt> directory as its <tt>load_paths</tt>,
|
12
|
-
# and evaluates <tt>init.rb</tt> when <tt>load</tt> is called.
|
13
|
-
#
|
14
|
-
# You can also inspect the about.yml data programmatically:
|
15
|
-
#
|
16
|
-
# plugin = Rails::Plugin.new(path_to_my_plugin)
|
17
|
-
# plugin.about["author"] # => "James Adam"
|
18
|
-
# plugin.about["url"] # => "http://interblah.net"
|
19
|
-
class Plugin
|
20
|
-
include Comparable
|
21
|
-
|
22
|
-
attr_reader :directory, :name
|
23
|
-
|
24
|
-
def initialize(directory)
|
25
|
-
@directory = directory
|
26
|
-
@name = File.basename(@directory) rescue nil
|
27
|
-
@loaded = false
|
28
|
-
end
|
29
|
-
|
30
|
-
def valid?
|
31
|
-
File.directory?(directory) && (has_app_directory? || has_lib_directory? || has_init_file?)
|
32
|
-
end
|
33
|
-
|
34
|
-
# Returns a list of paths this plugin wishes to make available in <tt>$LOAD_PATH</tt>.
|
35
|
-
def load_paths
|
36
|
-
report_nonexistant_or_empty_plugin! unless valid?
|
37
|
-
|
38
|
-
[].tap do |load_paths|
|
39
|
-
load_paths << lib_path if has_lib_directory?
|
40
|
-
load_paths << app_paths if has_app_directory?
|
41
|
-
end.flatten
|
42
|
-
end
|
43
|
-
|
44
|
-
# Evaluates a plugin's init.rb file.
|
45
|
-
def load(initializer)
|
46
|
-
return if loaded?
|
47
|
-
report_nonexistant_or_empty_plugin! unless valid?
|
48
|
-
evaluate_init_rb(initializer)
|
49
|
-
@loaded = true
|
50
|
-
end
|
51
|
-
|
52
|
-
def loaded?
|
53
|
-
@loaded
|
54
|
-
end
|
55
|
-
|
56
|
-
def <=>(other_plugin)
|
57
|
-
name <=> other_plugin.name
|
58
|
-
end
|
59
|
-
|
60
|
-
def about
|
61
|
-
@about ||= load_about_information
|
62
|
-
end
|
63
|
-
|
64
|
-
# Engines are plugins with an app/ directory.
|
65
|
-
def engine?
|
66
|
-
has_app_directory?
|
67
|
-
end
|
68
|
-
|
69
|
-
# Returns true if the engine ships with a routing file
|
70
|
-
def routed?
|
71
|
-
File.exist?(routing_file)
|
72
|
-
end
|
73
|
-
|
74
|
-
# Returns true if there is any localization file in locale_path
|
75
|
-
def localized?
|
76
|
-
locale_files.any?
|
77
|
-
end
|
78
|
-
|
79
|
-
def view_path
|
80
|
-
File.join(directory, 'app', 'views')
|
81
|
-
end
|
82
|
-
|
83
|
-
def controller_path
|
84
|
-
File.join(directory, 'app', 'controllers')
|
85
|
-
end
|
86
|
-
|
87
|
-
def metal_path
|
88
|
-
File.join(directory, 'app', 'metal')
|
89
|
-
end
|
90
|
-
|
91
|
-
def routing_file
|
92
|
-
File.join(directory, 'config', 'routes.rb')
|
93
|
-
end
|
94
|
-
|
95
|
-
def locale_path
|
96
|
-
File.join(directory, 'config', 'locales')
|
97
|
-
end
|
98
|
-
|
99
|
-
def locale_files
|
100
|
-
Dir[ File.join(locale_path, '*.{rb,yml}') ]
|
101
|
-
end
|
102
|
-
|
103
|
-
|
104
|
-
private
|
105
|
-
def load_about_information
|
106
|
-
about_yml_path = File.join(@directory, "about.yml")
|
107
|
-
parsed_yml = File.exist?(about_yml_path) ? YAML.load(File.read(about_yml_path)) : {}
|
108
|
-
parsed_yml || {}
|
109
|
-
rescue Exception
|
110
|
-
{}
|
111
|
-
end
|
112
|
-
|
113
|
-
def report_nonexistant_or_empty_plugin!
|
114
|
-
raise LoadError, "Can not find the plugin named: #{name}"
|
115
|
-
end
|
116
|
-
|
117
|
-
|
118
|
-
def app_paths
|
119
|
-
[ File.join(directory, 'app', 'models'), File.join(directory, 'app', 'helpers'), controller_path, metal_path ]
|
120
|
-
end
|
121
|
-
|
122
|
-
def lib_path
|
123
|
-
File.join(directory, 'lib')
|
124
|
-
end
|
125
|
-
|
126
|
-
def classic_init_path
|
127
|
-
File.join(directory, 'init.rb')
|
128
|
-
end
|
129
|
-
|
130
|
-
def gem_init_path
|
131
|
-
File.join(directory, 'rails', 'init.rb')
|
132
|
-
end
|
133
|
-
|
134
|
-
def init_path
|
135
|
-
File.file?(gem_init_path) ? gem_init_path : classic_init_path
|
136
|
-
end
|
137
|
-
|
138
|
-
|
139
|
-
def has_app_directory?
|
140
|
-
File.directory?(File.join(directory, 'app'))
|
141
|
-
end
|
142
|
-
|
143
|
-
def has_lib_directory?
|
144
|
-
File.directory?(lib_path)
|
145
|
-
end
|
146
|
-
|
147
|
-
def has_init_file?
|
148
|
-
File.file?(init_path)
|
149
|
-
end
|
150
|
-
|
151
|
-
|
152
|
-
def evaluate_init_rb(initializer)
|
153
|
-
if has_init_file?
|
154
|
-
silence_warnings do
|
155
|
-
# Allow plugins to reference the current configuration object
|
156
|
-
config = initializer.configuration
|
157
|
-
|
158
|
-
eval(IO.read(init_path), binding, init_path)
|
159
|
-
end
|
160
|
-
end
|
161
|
-
end
|
162
|
-
end
|
163
|
-
|
164
|
-
# This Plugin subclass represents a Gem plugin. Although RubyGems has already
|
165
|
-
# taken care of $LOAD_PATHs, it exposes its load_paths to add them
|
166
|
-
# to Dependencies.load_paths.
|
167
|
-
class GemPlugin < Plugin
|
168
|
-
# Initialize this plugin from a Gem::Specification.
|
169
|
-
def initialize(spec, gem)
|
170
|
-
directory = spec.full_gem_path
|
171
|
-
super(directory)
|
172
|
-
@name = spec.name
|
173
|
-
end
|
174
|
-
|
175
|
-
def init_path
|
176
|
-
File.join(directory, 'rails', 'init.rb')
|
177
|
-
end
|
178
|
-
end
|
179
|
-
end
|
data/lib/rails/rack/debugger.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
module Rails
|
2
|
-
module Rack
|
3
|
-
class Debugger
|
4
|
-
def initialize(app)
|
5
|
-
@app = app
|
6
|
-
|
7
|
-
ARGV.clear # clear ARGV so that script/server options aren't passed to IRB
|
8
|
-
|
9
|
-
require_library_or_gem 'ruby-debug'
|
10
|
-
::Debugger.start
|
11
|
-
::Debugger.settings[:autoeval] = true if ::Debugger.respond_to?(:settings)
|
12
|
-
puts "=> Debugger enabled"
|
13
|
-
rescue Exception
|
14
|
-
puts "You need to install ruby-debug to run the server in debugging mode. With gems, use 'gem install ruby-debug'"
|
15
|
-
exit
|
16
|
-
end
|
17
|
-
|
18
|
-
def call(env)
|
19
|
-
@app.call(env)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
module Rails
|
2
|
-
module Rack
|
3
|
-
class LogTailer
|
4
|
-
EnvironmentLog = "#{File.expand_path(Rails.root)}/log/#{Rails.env}.log"
|
5
|
-
|
6
|
-
def initialize(app, log = nil)
|
7
|
-
@app = app
|
8
|
-
|
9
|
-
path = Pathname.new(log || EnvironmentLog).cleanpath
|
10
|
-
@cursor = ::File.size(path)
|
11
|
-
@last_checked = Time.now.to_f
|
12
|
-
|
13
|
-
@file = ::File.open(path, 'r')
|
14
|
-
end
|
15
|
-
|
16
|
-
def call(env)
|
17
|
-
response = @app.call(env)
|
18
|
-
tail_log
|
19
|
-
response
|
20
|
-
end
|
21
|
-
|
22
|
-
def tail_log
|
23
|
-
@file.seek @cursor
|
24
|
-
|
25
|
-
mod = @file.mtime.to_f
|
26
|
-
if mod > @last_checked
|
27
|
-
contents = @file.read
|
28
|
-
@last_checked = mod
|
29
|
-
@cursor += contents.size
|
30
|
-
$stdout.print contents
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
data/lib/rails/rack/metal.rb
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
require 'active_support/ordered_hash'
|
2
|
-
|
3
|
-
module Rails
|
4
|
-
module Rack
|
5
|
-
class Metal
|
6
|
-
NotFoundResponse = [404, {}, []].freeze
|
7
|
-
NotFound = lambda { NotFoundResponse }
|
8
|
-
|
9
|
-
cattr_accessor :metal_paths
|
10
|
-
self.metal_paths = ["#{Rails.root}/app/metal"]
|
11
|
-
cattr_accessor :requested_metals
|
12
|
-
|
13
|
-
def self.metals
|
14
|
-
matcher = /#{Regexp.escape('/app/metal/')}(.*)\.rb\Z/
|
15
|
-
metal_glob = metal_paths.map{ |base| "#{base}/**/*.rb" }
|
16
|
-
all_metals = {}
|
17
|
-
|
18
|
-
metal_glob.each do |glob|
|
19
|
-
Dir[glob].sort.map do |file|
|
20
|
-
file = file.match(matcher)[1]
|
21
|
-
all_metals[file.camelize] = file
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
load_list = requested_metals || all_metals.keys
|
26
|
-
|
27
|
-
load_list.map do |requested_metal|
|
28
|
-
if metal = all_metals[requested_metal]
|
29
|
-
require_dependency metal
|
30
|
-
requested_metal.constantize
|
31
|
-
end
|
32
|
-
end.compact
|
33
|
-
end
|
34
|
-
|
35
|
-
def initialize(app)
|
36
|
-
@app = app
|
37
|
-
@metals = ActiveSupport::OrderedHash.new
|
38
|
-
self.class.metals.each { |app| @metals[app] = true }
|
39
|
-
freeze
|
40
|
-
end
|
41
|
-
|
42
|
-
def call(env)
|
43
|
-
@metals.keys.each do |app|
|
44
|
-
result = app.call(env)
|
45
|
-
return result unless result[0].to_i == 404
|
46
|
-
end
|
47
|
-
@app.call(env)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
data/lib/rails/rack/static.rb
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
require 'rack/utils'
|
2
|
-
|
3
|
-
module Rails
|
4
|
-
module Rack
|
5
|
-
class Static
|
6
|
-
FILE_METHODS = %w(GET HEAD).freeze
|
7
|
-
|
8
|
-
def initialize(app)
|
9
|
-
@app = app
|
10
|
-
@file_server = ::Rack::File.new(File.join(RAILS_ROOT, "public"))
|
11
|
-
end
|
12
|
-
|
13
|
-
def call(env)
|
14
|
-
path = env['PATH_INFO'].chomp('/')
|
15
|
-
method = env['REQUEST_METHOD']
|
16
|
-
|
17
|
-
if FILE_METHODS.include?(method)
|
18
|
-
if file_exist?(path)
|
19
|
-
return @file_server.call(env)
|
20
|
-
else
|
21
|
-
cached_path = directory_exist?(path) ? "#{path}/index" : path
|
22
|
-
cached_path += ::ActionController::Base.page_cache_extension
|
23
|
-
|
24
|
-
if file_exist?(cached_path)
|
25
|
-
env['PATH_INFO'] = cached_path
|
26
|
-
return @file_server.call(env)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
@app.call(env)
|
32
|
-
end
|
33
|
-
|
34
|
-
private
|
35
|
-
def file_exist?(path)
|
36
|
-
full_path = File.join(@file_server.root, ::Rack::Utils.unescape(path))
|
37
|
-
File.file?(full_path) && File.readable?(full_path)
|
38
|
-
end
|
39
|
-
|
40
|
-
def directory_exist?(path)
|
41
|
-
full_path = File.join(@file_server.root, ::Rack::Utils.unescape(path))
|
42
|
-
File.directory?(full_path) && File.readable?(full_path)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
data/lib/rails/rack.rb
DELETED
@@ -1,140 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'yaml'
|
3
|
-
|
4
|
-
module Rails
|
5
|
-
|
6
|
-
class VendorGemSourceIndex
|
7
|
-
# VendorGemSourceIndex acts as a proxy for the Gem source index, allowing
|
8
|
-
# gems to be loaded from vendor/gems. Rather than the standard gem repository format,
|
9
|
-
# vendor/gems contains unpacked gems, with YAML specifications in .specification in
|
10
|
-
# each gem directory.
|
11
|
-
include Enumerable
|
12
|
-
|
13
|
-
attr_reader :installed_source_index
|
14
|
-
attr_reader :vendor_source_index
|
15
|
-
|
16
|
-
@@silence_spec_warnings = false
|
17
|
-
|
18
|
-
def self.silence_spec_warnings
|
19
|
-
@@silence_spec_warnings
|
20
|
-
end
|
21
|
-
|
22
|
-
def self.silence_spec_warnings=(v)
|
23
|
-
@@silence_spec_warnings = v
|
24
|
-
end
|
25
|
-
|
26
|
-
def initialize(installed_index, vendor_dir=Rails::GemDependency.unpacked_path)
|
27
|
-
@installed_source_index = installed_index
|
28
|
-
@vendor_dir = vendor_dir
|
29
|
-
refresh!
|
30
|
-
end
|
31
|
-
|
32
|
-
def refresh!
|
33
|
-
# reload the installed gems
|
34
|
-
# HACK: I don't think this is needed: @installed_source_index.refresh!
|
35
|
-
vendor_gems = {}
|
36
|
-
|
37
|
-
# handle vendor Rails gems - they are identified by having loaded_from set to ""
|
38
|
-
# we add them manually to the list, so that other gems can find them via dependencies
|
39
|
-
Gem.loaded_specs.each do |n, s|
|
40
|
-
next unless s.loaded_from.to_s.empty?
|
41
|
-
vendor_gems[s.full_name] = s
|
42
|
-
end
|
43
|
-
|
44
|
-
# load specifications from vendor/gems
|
45
|
-
Dir[File.join(Rails::GemDependency.unpacked_path, '*')].each do |d|
|
46
|
-
dir_name = File.basename(d)
|
47
|
-
dir_version = version_for_dir(dir_name)
|
48
|
-
spec = load_specification(d)
|
49
|
-
if spec
|
50
|
-
if spec.full_name != dir_name
|
51
|
-
# mismatched directory name and gem spec - produced by 2.1.0-era unpack code
|
52
|
-
if dir_version
|
53
|
-
# fix the spec version - this is not optimal (spec.files may be wrong)
|
54
|
-
# but it's better than breaking apps. Complain to remind users to get correct specs.
|
55
|
-
# use ActiveSupport::Deprecation.warn, as the logger is not set yet
|
56
|
-
$stderr.puts("config.gem: Unpacked gem #{dir_name} in vendor/gems has a mismatched specification file."+
|
57
|
-
" Run 'rake gems:refresh_specs' to fix this.") unless @@silence_spec_warnings
|
58
|
-
spec.version = dir_version
|
59
|
-
else
|
60
|
-
$stderr.puts("config.gem: Unpacked gem #{dir_name} in vendor/gems is not in a versioned directory"+
|
61
|
-
"(should be #{spec.full_name}).") unless @@silence_spec_warnings
|
62
|
-
# continue, assume everything is OK
|
63
|
-
end
|
64
|
-
end
|
65
|
-
else
|
66
|
-
# no spec - produced by early-2008 unpack code
|
67
|
-
# emulate old behavior, and complain.
|
68
|
-
$stderr.puts("config.gem: Unpacked gem #{dir_name} in vendor/gems has no specification file."+
|
69
|
-
" Run 'rake gems:refresh_specs' to fix this.") unless @@silence_spec_warnings
|
70
|
-
if dir_version
|
71
|
-
spec = Gem::Specification.new
|
72
|
-
spec.version = dir_version
|
73
|
-
spec.require_paths = ['lib']
|
74
|
-
ext_path = File.join(d, 'ext')
|
75
|
-
spec.require_paths << 'ext' if File.exist?(ext_path)
|
76
|
-
spec.name = /^(.*)-[^-]+$/.match(dir_name)[1]
|
77
|
-
files = ['lib']
|
78
|
-
# set files to everything in lib/
|
79
|
-
files += Dir[File.join(d, 'lib', '*')].map { |v| v.gsub(/^#{d}\//, '') }
|
80
|
-
files += Dir[File.join(d, 'ext', '*')].map { |v| v.gsub(/^#{d}\//, '') } if ext_path
|
81
|
-
spec.files = files
|
82
|
-
else
|
83
|
-
$stderr.puts("config.gem: Unpacked gem #{dir_name} in vendor/gems not in a versioned directory."+
|
84
|
-
" Giving up.") unless @@silence_spec_warnings
|
85
|
-
next
|
86
|
-
end
|
87
|
-
end
|
88
|
-
spec.loaded_from = File.join(d, '.specification')
|
89
|
-
# finally, swap out full_gem_path
|
90
|
-
# it would be better to use a Gem::Specification subclass, but the YAML loads an explicit class
|
91
|
-
class << spec
|
92
|
-
def full_gem_path
|
93
|
-
path = File.join installation_path, full_name
|
94
|
-
return path if File.directory? path
|
95
|
-
File.join installation_path, original_name
|
96
|
-
end
|
97
|
-
end
|
98
|
-
vendor_gems[File.basename(d)] = spec
|
99
|
-
end
|
100
|
-
@vendor_source_index = Gem::SourceIndex.new(vendor_gems)
|
101
|
-
end
|
102
|
-
|
103
|
-
def version_for_dir(d)
|
104
|
-
version = d.split('-').find { |s| s.match(/^\d(\.\d|\.\w+)*$/) }
|
105
|
-
Gem::Version.new(version)
|
106
|
-
end
|
107
|
-
|
108
|
-
def load_specification(gem_dir)
|
109
|
-
spec_file = File.join(gem_dir, '.specification')
|
110
|
-
YAML.load_file(spec_file) if File.exist?(spec_file)
|
111
|
-
end
|
112
|
-
|
113
|
-
def find_name(*args)
|
114
|
-
@installed_source_index.find_name(*args) + @vendor_source_index.find_name(*args)
|
115
|
-
end
|
116
|
-
|
117
|
-
def search(*args)
|
118
|
-
# look for vendor gems, and then installed gems - later elements take priority
|
119
|
-
@installed_source_index.search(*args) + @vendor_source_index.search(*args)
|
120
|
-
end
|
121
|
-
|
122
|
-
def each(&block)
|
123
|
-
@vendor_source_index.each(&block)
|
124
|
-
@installed_source_index.each(&block)
|
125
|
-
end
|
126
|
-
|
127
|
-
def add_spec(spec)
|
128
|
-
@vendor_source_index.add_spec spec
|
129
|
-
end
|
130
|
-
|
131
|
-
def remove_spec(spec)
|
132
|
-
@vendor_source_index.remove_spec spec
|
133
|
-
end
|
134
|
-
|
135
|
-
def size
|
136
|
-
@vendor_source_index.size + @installed_source_index.size
|
137
|
-
end
|
138
|
-
|
139
|
-
end
|
140
|
-
end
|