Module: Rails::AppLoader
Do not use. This module is for internal use only.
Relationships & Source Files | |
Defined in: | railties/lib/rails/app_loader.rb |
Constant Summary
-
BUNDLER_WARNING =
# File 'railties/lib/rails/app_loader.rb', line 12<<EOS Beginning in Rails 4, Rails ships with a `rails` binstub at ./bin/rails that should be used instead of the Bundler-generated `rails` binstub. If you are seeing this message, your binstub at ./bin/rails was generated by Bundler instead of Rails. You might need to regenerate your `rails` binstub locally and add it to source control: rails app:update:bin # Bear in mind this generates other binstubs # too that you may or may not want (like yarn) If you already have Rails binstubs in source control, you might be inadvertently overwriting them during deployment by using bundle install with the --binstubs option. If your application was created prior to Rails 4, here's how to upgrade: bundle config --delete bin # Turn off Bundler's stub generator rails app:update:bin # Use the new Rails executables git add bin # Add bin/ to source control You may need to remove bin/ from your .gitignore as well. When you install a gem whose executable you want to use in your app, generate it and add it to source control: bundle binstubs some-gem-name git add bin/new-executable EOS
-
EXECUTABLES =
# File 'railties/lib/rails/app_loader.rb', line 11["bin/rails", "script/rails"]
-
RUBY =
# File 'railties/lib/rails/app_loader.rb', line 10Gem.ruby
Instance Method Summary
Instance Method Details
#exec_app
[ GitHub ]# File 'railties/lib/rails/app_loader.rb', line 45
def exec_app original_cwd = Dir.pwd loop do if exe = find_executable contents = File.read(exe) if /(APP|ENGINE)_PATH/.match?(contents) exec RUBY, exe, *ARGV break # non reachable, hack to be able to stub exec in the test suite elsif exe.end_with?("bin/rails") && contents.include?("This file was generated by Bundler") $stderr.puts(BUNDLER_WARNING) Object.const_set(:APP_PATH, File. ("config/application", Dir.pwd)) require File. ("../boot", APP_PATH) require "rails/commands" break end end # If we exhaust the search there is no executable, this could be a # call to generate a new application, so restore the original cwd. Dir.chdir(original_cwd) && return if Pathname.new(Dir.pwd).root? # Otherwise keep moving upwards in search of an executable. Dir.chdir("..") end end
#find_executable
[ GitHub ]# File 'railties/lib/rails/app_loader.rb', line 73
def find_executable EXECUTABLES.find { |exe| File.file?(exe) } end