From efa850558facf2fbaaf226f1444802da83924b82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Wed, 3 Feb 2010 18:49:47 +0100 Subject: Make bin/rails call rails/commands/application, fix generators usage and update .gitignores. --- .gitignore | 5 +- railties/bin/rails | 27 ++------ .../lib/generators/rails/app/templates/gitignore | 1 + .../generators/rails/app/templates/script/rails | 2 +- railties/lib/rails/commands.rb | 79 ++++++++++++++++++---- railties/lib/rails/commands/rails.rb | 67 ------------------ railties/lib/rails/generators.rb | 4 +- railties/lib/rails/generators/base.rb | 2 +- 8 files changed, 76 insertions(+), 111 deletions(-) delete mode 100644 railties/lib/rails/commands/rails.rb diff --git a/.gitignore b/.gitignore index 4082dd9a51..715d0bc4bc 100644 --- a/.gitignore +++ b/.gitignore @@ -14,9 +14,8 @@ railties/test/fixtures/tmp railties/test/initializer/root/log railties/doc/guides/html/images railties/doc/guides/html/stylesheets -benches railties/guides/output -bin -vendor/gems/ railties/tmp +bin +.bundle pkg diff --git a/railties/bin/rails b/railties/bin/rails index 44842e2234..72c47b533f 100755 --- a/railties/bin/rails +++ b/railties/bin/rails @@ -1,30 +1,11 @@ if File.exists?(Dir.getwd + '/script/rails') exec(Dir.getwd + '/script/rails', *ARGV) else - begin - require 'rails/ruby_version_check' - rescue LoadError - # If people are not using gems, the load path must still - # be correct. - # TODO: Remove the begin / rescue block somehow - $:.unshift File.expand_path('../../lib', __FILE__) - $:.unshift File.expand_path('../../../activesupport/lib', __FILE__) - $:.unshift File.expand_path('../../../actionpack/lib', __FILE__) - require 'rails/ruby_version_check' - end + railties_path = File.expand_path('../../lib', __FILE__) + $:.unshift(railties_path) if File.directory?(railties_path) && !$:.include?(railties_path) + require 'rails/ruby_version_check' Signal.trap("INT") { puts; exit } - require 'rails/version' - if %w(--version -v).include? ARGV.first - puts "Rails #{Rails::VERSION::STRING}" - exit(0) - end - - ARGV << "--help" if ARGV.empty? - - require 'rails/generators' - require 'generators/rails/app/app_generator' - - Rails::Generators::AppGenerator.start + require 'rails/commands/application' end \ No newline at end of file diff --git a/railties/lib/generators/rails/app/templates/gitignore b/railties/lib/generators/rails/app/templates/gitignore index a4f05d101d..af64fae5e7 100644 --- a/railties/lib/generators/rails/app/templates/gitignore +++ b/railties/lib/generators/rails/app/templates/gitignore @@ -1,3 +1,4 @@ +.bundle db/*.sqlite3 log/*.log tmp/**/* diff --git a/railties/lib/generators/rails/app/templates/script/rails b/railties/lib/generators/rails/app/templates/script/rails index c23d24b30b..2fcf6d09b5 100644 --- a/railties/lib/generators/rails/app/templates/script/rails +++ b/railties/lib/generators/rails/app/templates/script/rails @@ -6,4 +6,4 @@ APP_PATH = File.expand_path('../../config/application', __FILE__) ROOT_PATH = File.expand_path('../..', __FILE__) require BOOT_PATH -require 'rails/commands/rails' +require 'rails/commands' diff --git a/railties/lib/rails/commands.rb b/railties/lib/rails/commands.rb index 841e98a0dc..f0dcf61d98 100644 --- a/railties/lib/rails/commands.rb +++ b/railties/lib/rails/commands.rb @@ -1,17 +1,70 @@ -commands = Dir["#{File.dirname(__FILE__)}/commands/*.rb"].collect { |file_path| File.basename(file_path).split(".").first } +if ARGV.empty? + ARGV << '--help' +end -if commands.include?(ARGV.first) - require "#{File.dirname(__FILE__)}/commands/#{ARGV.shift}" -else - puts <<-USAGE -The 'run' provides a unified access point for all the default Rails' commands. - -Usage: ./script/run [OPTIONS] +HELP_TEXT = <<-EOT +Usage: rails COMMAND [ARGS] + +The most common rails commands are: + generate Generate new code (short-cut alias: "g") + console Start the Rails console (short-cut alias: "c") + server Start the Rails server (short-cut alias: "s") + dbconsole Start a console for the database specified in config/database.yml + (short-cut alias: "db") + +In addition to those, there are: + application Generate the Rails application code + destroy Undo code generated with "generate" + benchmarker See how fast a piece of code runs + profiler Get profile information from a piece of code + plugin Install a plugin + runner Run a piece of code in the application environment + +All commands can be run with -h for more information. +EOT -Examples: - ./script/run generate controller Admin - ./script/run process reaper -USAGE - puts "Choose: #{commands.join(", ")}" +case ARGV.shift +when 'g', 'generate' + require ENV_PATH + require 'rails/commands/generate' +when 'c', 'console' + require 'rails/commands/console' + require APP_PATH + Rails::Console.start(Rails::Application) +when 's', 'server' + require 'rails/commands/server' + Dir.chdir(ROOT_PATH) + Rails::Server.start +when 'db', 'dbconsole' + require 'rails/commands/dbconsole' + require APP_PATH + Rails::DBConsole.start(Rails::Application) + +when 'application' + require 'rails/commands/application' +when 'destroy' + require ENV_PATH + require 'rails/commands/destroy' +when 'benchmarker' + require ENV_PATH + require 'rails/commands/performance/benchmarker' +when 'profiler' + require ENV_PATH + require 'rails/commands/performance/profiler' +when 'plugin' + require APP_PATH + require 'rails/commands/plugin' +when 'runner' + require 'rails/commands/runner' + require ENV_PATH + +when '--help', '-h' + puts HELP_TEXT +when '--version', '-v' + ARGV.unshift '--version' + require 'rails/commands/application' +else + puts "Error: Command not recognized" + puts HELP_TEXT end \ No newline at end of file diff --git a/railties/lib/rails/commands/rails.rb b/railties/lib/rails/commands/rails.rb deleted file mode 100644 index 9597e2e7e6..0000000000 --- a/railties/lib/rails/commands/rails.rb +++ /dev/null @@ -1,67 +0,0 @@ -if ARGV.empty? - ARGV << '--help' -end - -HELP_TEXT = <<-EOT -usage: rails COMMAND [ARGS] - -The most common rails commands are: - generate Generate new code (short-cut alias: "g") - console Start the Rails console (short-cut alias: "c") - server Start the Rails server (short-cut alias: "s") - dbconsole Start a console for the database specified in config/database.yml - (short-cut alias: "db") - -In addition to those, there are: - application Generate the Rails application code - destroy Undo code generated with "generate" - benchmarker See how fast a piece of code runs - profiler Get profile information from a piece of code - plugin Install a plugin - runner Run a piece of code in the application environment - -All commands can be run with -h for more information. -EOT - - -case ARGV.shift -when 'g', 'generate' - require ENV_PATH - require 'rails/commands/generate' -when 'c', 'console' - require 'rails/commands/console' - require APP_PATH - Rails::Console.start(Rails::Application) -when 's', 'server' - require 'rails/commands/server' - Dir.chdir(ROOT_PATH) - Rails::Server.start -when 'db', 'dbconsole' - require 'rails/commands/dbconsole' - require APP_PATH - Rails::DBConsole.start(Rails::Application) - -when 'application' - require 'rails/commands/application' -when 'destroy' - require ENV_PATH - require 'rails/commands/destroy' -when 'benchmarker' - require ENV_PATH - require 'rails/commands/performance/benchmarker' -when 'profiler' - require ENV_PATH - require 'rails/commands/performance/profiler' -when 'plugin' - require APP_PATH - require 'rails/commands/plugin' -when 'runner' - require 'rails/commands/runner' - require ENV_PATH - -when '--help', '-h' - puts HELP_TEXT -else - puts "Error: Command not recognized" - puts HELP_TEXT -end \ No newline at end of file diff --git a/railties/lib/rails/generators.rb b/railties/lib/rails/generators.rb index 1f380970d0..5d95f2fa52 100644 --- a/railties/lib/rails/generators.rb +++ b/railties/lib/rails/generators.rb @@ -9,8 +9,6 @@ require 'active_support/core_ext/hash/deep_merge' require 'active_support/core_ext/module/attribute_accessors' require 'active_support/core_ext/string/inflections' -# TODO: Do not always push on vendored thor -$LOAD_PATH.unshift("#{File.dirname(__FILE__)}/vendor/thor-0.12.3/lib") require 'rails/generators/base' require 'rails/generators/named_base' @@ -175,7 +173,7 @@ module Rails groups[base] << namespace end - puts "Usage: generate GENERATOR [args] [options]" + puts "Usage: rails generate GENERATOR [args] [options]" puts puts "General options:" puts " -h, [--help] # Print generators options and usage" diff --git a/railties/lib/rails/generators/base.rb b/railties/lib/rails/generators/base.rb index ec0659032f..dfa0d573c9 100644 --- a/railties/lib/rails/generators/base.rb +++ b/railties/lib/rails/generators/base.rb @@ -261,7 +261,7 @@ module Rails # Use Rails default banner. # def self.banner - "#{$0} #{generator_name} #{self.arguments.map{ |a| a.usage }.join(' ')} [options]" + "rails generate #{generator_name} #{self.arguments.map{ |a| a.usage }.join(' ')} [options]" end # Sets the base_name taking into account the current class namespace. -- cgit v1.2.3