Module: Disco::AppDiscoLoader
- Defined in:
- lib/disco/app_disco_loader.rb
Constant Summary collapse
- RUBY =
File.join(*RbConfig::CONFIG.values_at('bindir', 'ruby_install_name')) + RbConfig::CONFIG['EXEEXT']
- EXECUTABLES =
['bin/disco']
- BUNDLER_WARNING =
<<EOS Looks like your app's ./bin/disco is a stub that was generated by Bundler. In Rails Disco, your app's bin/ directory contains executables that are versioned like any other source code, rather than stubs that are generated on demand. Here's how to upgrade: bundle config --delete bin # Turn off Bundler's stub generator rake disco:update:bin # Use the new Rails Disco 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
Class Method Summary collapse
Class Method Details
.exec_app_disco ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/disco/app_disco_loader.rb', line 29 def self.exec_app_disco original_cwd = Dir.pwd loop do exe = find_executable if exe contents = File.read(exe) if contents =~ /(APP|ENGINE)_PATH/ exec RUBY, exe, *ARGV break # non reachable, hack to be able to stub exec in the test suite elsif exe.end_with?('bin/disco') && 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 'disco/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. if Pathname.new(Dir.pwd).root? Dir.chdir(original_cwd) break end # Otherwise keep moving upwards in search of a executable. Dir.chdir('..') end end |
.find_executable ⇒ Object
61 62 63 |
# File 'lib/disco/app_disco_loader.rb', line 61 def self.find_executable EXECUTABLES.find { |exe| File.exist?(exe) } end |