aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib
diff options
context:
space:
mode:
Diffstat (limited to 'railties/lib')
-rw-r--r--railties/lib/rails/application.rb4
-rw-r--r--railties/lib/rails/application/bootstrap.rb3
-rw-r--r--railties/lib/rails/application/configuration.rb20
-rw-r--r--railties/lib/rails/commands.rb102
-rw-r--r--railties/lib/rails/commands/application.rb2
-rw-r--r--railties/lib/rails/commands/benchmarker.rb (renamed from railties/lib/rails/commands/performance/benchmarker.rb)0
-rw-r--r--railties/lib/rails/commands/profiler.rb (renamed from railties/lib/rails/commands/performance/profiler.rb)0
-rw-r--r--railties/lib/rails/commands/runner.rb3
-rw-r--r--railties/lib/rails/configuration.rb1
-rw-r--r--railties/lib/rails/engine.rb2
-rw-r--r--railties/lib/rails/generators/base.rb38
-rw-r--r--railties/lib/rails/generators/rails/app/app_generator.rb1
-rw-r--r--railties/lib/rails/generators/rails/app/templates/config/databases/postgresql.yml10
-rw-r--r--railties/lib/rails/generators/rails/app/templates/script/rails7
-rw-r--r--railties/lib/rails/generators/rails/generator/templates/%file_name%_generator.rb.tt4
-rw-r--r--railties/lib/rails/generators/rails/mailer/USAGE15
-rw-r--r--railties/lib/rails/generators/rails/mailer/mailer_generator.rb14
-rw-r--r--railties/lib/rails/generators/rails/mailer/templates/mailer.rb16
-rw-r--r--railties/lib/rails/railtie.rb1
19 files changed, 100 insertions, 143 deletions
diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb
index 7cec14c738..d39f9a2ae9 100644
--- a/railties/lib/rails/application.rb
+++ b/railties/lib/rails/application.rb
@@ -85,7 +85,7 @@ module Rails
delegate :metal_loader, :to => :config
def require_environment!
- environment = config.paths.config.environment.to_a.first
+ environment = paths.config.environment.to_a.first
require environment if environment
end
@@ -153,7 +153,7 @@ module Rails
require "rails/tasks"
task :environment do
$rails_rake_task = true
- initialize!
+ require_environment!
end
end
diff --git a/railties/lib/rails/application/bootstrap.rb b/railties/lib/rails/application/bootstrap.rb
index 06243f2e5e..022e1a91d8 100644
--- a/railties/lib/rails/application/bootstrap.rb
+++ b/railties/lib/rails/application/bootstrap.rb
@@ -6,7 +6,8 @@ module Rails
include Initializable
initializer :load_environment_config do
- require_environment!
+ environment = config.paths.config.environments.to_a.first
+ require environment if environment
end
initializer :load_all_active_support do
diff --git a/railties/lib/rails/application/configuration.rb b/railties/lib/rails/application/configuration.rb
index 874b3a78b6..1ad77fdfec 100644
--- a/railties/lib/rails/application/configuration.rb
+++ b/railties/lib/rails/application/configuration.rb
@@ -1,3 +1,4 @@
+require 'active_support/deprecation'
require 'rails/engine/configuration'
module Rails
@@ -43,14 +44,15 @@ module Rails
@paths ||= begin
paths = super
paths.app.controllers << builtin_controller if builtin_controller
- paths.config.database "config/database.yml"
- paths.config.environment "config/environments", :glob => "#{Rails.env}.rb"
- paths.lib.templates "lib/templates"
- paths.log "log/#{Rails.env}.log"
- paths.tmp "tmp"
- paths.tmp.cache "tmp/cache"
- paths.vendor "vendor", :load_path => true
- paths.vendor.plugins "vendor/plugins"
+ paths.config.database "config/database.yml"
+ paths.config.environment "config/environment.rb"
+ paths.config.environments "config/environments", :glob => "#{Rails.env}.rb"
+ paths.lib.templates "lib/templates"
+ paths.log "log/#{Rails.env}.log"
+ paths.tmp "tmp"
+ paths.tmp.cache "tmp/cache"
+ paths.vendor "vendor", :load_path => true
+ paths.vendor.plugins "vendor/plugins"
if File.exists?("#{root}/test/mocks/#{Rails.env}")
ActiveSupport::Deprecation.warn "\"Rails.root/test/mocks/#{Rails.env}\" won't be added " <<
@@ -142,7 +144,7 @@ module Rails
middleware.use('::Rack::Runtime')
middleware.use('::Rails::Rack::Logger')
middleware.use('::ActionDispatch::ShowExceptions', lambda { consider_all_requests_local }, :if => lambda { action_dispatch.show_exceptions })
- middleware.use("::ActionDispatch::RemoteIp", lambda { action_dispatch.ip_spoofing_check }, lambda { action_dispatch.trusted_proxies })
+ middleware.use('::ActionDispatch::RemoteIp', lambda { action_dispatch.ip_spoofing_check }, lambda { action_dispatch.trusted_proxies })
middleware.use('::Rack::Sendfile', lambda { action_dispatch.x_sendfile_header })
middleware.use('::ActionDispatch::Callbacks', lambda { !cache_classes })
middleware.use('::ActionDispatch::Cookies')
diff --git a/railties/lib/rails/commands.rb b/railties/lib/rails/commands.rb
index 12748da18b..de93a87615 100644
--- a/railties/lib/rails/commands.rb
+++ b/railties/lib/rails/commands.rb
@@ -1,8 +1,50 @@
-if ARGV.empty?
- ARGV << '--help'
-end
+ARGV << '--help' if ARGV.empty?
-HELP_TEXT = <<-EOT
+aliases = {
+ "g" => "generate",
+ "c" => "console",
+ "s" => "server",
+ "db" => "dbconsole"
+}
+
+command = ARGV.shift
+command = aliases[command] || command
+
+case command
+when 'generate', 'destroy', 'plugin', 'benchmarker', 'profiler'
+ require APP_PATH
+ Rails::Application.require_environment!
+ require "rails/commands/#{command}"
+
+when 'console'
+ require 'rails/commands/console'
+ require APP_PATH
+ Rails::Application.require_environment!
+ Rails::Console.start(Rails::Application)
+
+when 'server'
+ require 'rails/commands/server'
+ Rails::Server.new.tap { |server|
+ require APP_PATH
+ Dir.chdir(Rails::Application.root)
+ server.start
+ }
+
+when 'dbconsole'
+ require 'rails/commands/dbconsole'
+ require APP_PATH
+ Rails::DBConsole.start(Rails::Application)
+
+when 'application', 'runner'
+ require "rails/commands/#{command}"
+
+when '--version', '-v'
+ ARGV.unshift '--version'
+ require 'rails/commands/application'
+
+else
+ puts "Error: Command not recognized" unless %w(-h --help).include?(command)
+ puts <<-EOT
Usage: rails COMMAND [ARGS]
The most common rails commands are:
@@ -21,53 +63,5 @@ In addition to those, there are:
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 ENV_PATH
- Rails::Console.start(Rails::Application)
-when 's', 'server'
- require 'rails/commands/server'
- # Initialize the server first, so environment options are set
- server = Rails::Server.new
- require APP_PATH
-
- Dir.chdir(Rails::Application.root)
- 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'
-
-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
+ EOT
+end \ No newline at end of file
diff --git a/railties/lib/rails/commands/application.rb b/railties/lib/rails/commands/application.rb
index 438c976b35..8a8143e00e 100644
--- a/railties/lib/rails/commands/application.rb
+++ b/railties/lib/rails/commands/application.rb
@@ -10,4 +10,4 @@ require 'rubygems' if ARGV.include?("--dev")
require 'rails/generators'
require 'rails/generators/rails/app/app_generator'
-Rails::Generators::AppGenerator.start \ No newline at end of file
+Rails::Generators::AppGenerator.start
diff --git a/railties/lib/rails/commands/performance/benchmarker.rb b/railties/lib/rails/commands/benchmarker.rb
index 0432261802..0432261802 100644
--- a/railties/lib/rails/commands/performance/benchmarker.rb
+++ b/railties/lib/rails/commands/benchmarker.rb
diff --git a/railties/lib/rails/commands/performance/profiler.rb b/railties/lib/rails/commands/profiler.rb
index 6d9717b5cd..6d9717b5cd 100644
--- a/railties/lib/rails/commands/performance/profiler.rb
+++ b/railties/lib/rails/commands/profiler.rb
diff --git a/railties/lib/rails/commands/runner.rb b/railties/lib/rails/commands/runner.rb
index 1dd11e1241..278548558e 100644
--- a/railties/lib/rails/commands/runner.rb
+++ b/railties/lib/rails/commands/runner.rb
@@ -36,7 +36,8 @@ ARGV.delete(code_or_file)
ENV["RAILS_ENV"] = options[:environment]
-require ENV_PATH
+require APP_PATH
+Rails::Application.require_environment!
begin
if code_or_file.nil?
diff --git a/railties/lib/rails/configuration.rb b/railties/lib/rails/configuration.rb
index dfd849b4bb..bd404f4a14 100644
--- a/railties/lib/rails/configuration.rb
+++ b/railties/lib/rails/configuration.rb
@@ -1,3 +1,4 @@
+require 'active_support/deprecation'
require 'active_support/ordered_options'
require 'rails/paths'
require 'rails/rack'
diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb
index 36fcc896ae..ab0ead65a9 100644
--- a/railties/lib/rails/engine.rb
+++ b/railties/lib/rails/engine.rb
@@ -42,7 +42,7 @@ module Rails
# config.load_paths << File.expand_path("../lib/some/path", __FILE__)
#
# initializer "my_engine.add_middleware" do |app|
- # app.middlewares.use MyEngine::Middleware
+ # app.middleware.use MyEngine::Middleware
# end
# end
#
diff --git a/railties/lib/rails/generators/base.rb b/railties/lib/rails/generators/base.rb
index 0da85ea4a4..766644bbc2 100644
--- a/railties/lib/rails/generators/base.rb
+++ b/railties/lib/rails/generators/base.rb
@@ -20,24 +20,19 @@ module Rails
add_runtime_options!
- # Automatically sets the source root based on the class name.
- #
- def self.source_root
- @_rails_source_root ||= begin
- if base_name && generator_name
- File.expand_path(File.join(base_name, generator_name, 'templates'), File.dirname(__FILE__))
- end
- end
+ # Returns the source root for this generator using default_source_root as default.
+ def self.source_root(path=nil)
+ @_source_root = path if path
+ @_source_root ||= default_source_root
end
# Tries to get the description from a USAGE file one folder above the source
# root otherwise uses a default description.
- #
def self.desc(description=nil)
return super if description
- usage = File.expand_path(File.join(source_root, "..", "USAGE"))
+ usage = source_root && File.expand_path("../USAGE", source_root)
- @desc ||= if File.exist?(usage)
+ @desc ||= if usage && File.exist?(usage)
File.read(usage)
else
"Description:\n Create #{base_name.humanize.downcase} files for #{generator_name} generator."
@@ -47,7 +42,6 @@ module Rails
# Convenience method to get the namespace from the class name. It's the
# same as Thor default except that the Generator at the end of the class
# is removed.
- #
def self.namespace(name=nil)
return super if name
@namespace ||= super.sub(/_generator$/, '').sub(/:generators:/, ':')
@@ -200,7 +194,6 @@ module Rails
end
# Make class option aware of Rails::Generators.options and Rails::Generators.aliases.
- #
def self.class_option(name, options={}) #:nodoc:
options[:desc] = "Indicates when to generate #{name.to_s.humanize.downcase}" unless options.key?(:desc)
options[:aliases] = default_aliases_for_option(name, options)
@@ -208,14 +201,27 @@ module Rails
super(name, options)
end
+ # Returns the default source root for a given generator. This is used internally
+ # by rails to set its generators source root. If you want to customize your source
+ # root, you should use source_root.
+ def self.default_source_root
+ return unless base_name && generator_name
+ path = File.expand_path(File.join(base_name, generator_name, 'templates'), base_root)
+ path if File.exists?(path)
+ end
+
+ # Returns the base root for a common set of generators. This is used to dynamically
+ # guess the default source root.
+ def self.base_root
+ File.dirname(__FILE__)
+ end
+
# Cache source root and add lib/generators/base/generator/templates to
# source paths.
- #
def self.inherited(base) #:nodoc:
super
- # Cache source root, we need to do this, since __FILE__ is a relative value
- # and can point to wrong directions when inside an specified directory.
+ # Invoke source_root so the default_source_root is set.
base.source_root
if base.name && base.name !~ /Base$/
diff --git a/railties/lib/rails/generators/rails/app/app_generator.rb b/railties/lib/rails/generators/rails/app/app_generator.rb
index aa066fe3c4..667a123025 100644
--- a/railties/lib/rails/generators/rails/app/app_generator.rb
+++ b/railties/lib/rails/generators/rails/app/app_generator.rb
@@ -55,6 +55,7 @@ module Rails::Generators
:desc => "Show this help message and quit"
def initialize(*args)
+ raise Error, "Options should be given after the application name. For details run: rails --help" if args[0].blank?
super
if !options[:skip_activerecord] && !DATABASES.include?(options[:database])
raise Error, "Invalid value for --database option. Supported for preconfiguration are: #{DATABASES.join(", ")}."
diff --git a/railties/lib/rails/generators/rails/app/templates/config/databases/postgresql.yml b/railties/lib/rails/generators/rails/app/templates/config/databases/postgresql.yml
index f600e054cf..4e6391e3d6 100644
--- a/railties/lib/rails/generators/rails/app/templates/config/databases/postgresql.yml
+++ b/railties/lib/rails/generators/rails/app/templates/config/databases/postgresql.yml
@@ -1,11 +1,11 @@
# PostgreSQL. Versions 7.4 and 8.x are supported.
#
-# Install the ruby-postgres driver:
-# gem install ruby-postgres
-# On Mac OS X:
-# gem install ruby-postgres -- --include=/usr/local/pgsql
+# Install the pg driver:
+# gem install pg
+# On Mac OS X with macports:
+# gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
# On Windows:
-# gem install ruby-postgres
+# gem install pg
# Choose the win32 build.
# Install PostgreSQL and put its /bin directory on your path.
development:
diff --git a/railties/lib/rails/generators/rails/app/templates/script/rails b/railties/lib/rails/generators/rails/app/templates/script/rails
index b01d1ee183..11bc1edde9 100644
--- a/railties/lib/rails/generators/rails/app/templates/script/rails
+++ b/railties/lib/rails/generators/rails/app/templates/script/rails
@@ -1,8 +1,5 @@
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
-ENV_PATH = File.expand_path('../../config/environment', __FILE__)
-BOOT_PATH = File.expand_path('../../config/boot', __FILE__)
-APP_PATH = File.expand_path('../../config/application', __FILE__)
-
-require BOOT_PATH
+APP_PATH = File.expand_path('../../config/application', __FILE__)
+require File.expand_path('../../config/boot', __FILE__)
require 'rails/commands'
diff --git a/railties/lib/rails/generators/rails/generator/templates/%file_name%_generator.rb.tt b/railties/lib/rails/generators/rails/generator/templates/%file_name%_generator.rb.tt
index d8757460e4..d0575772bc 100644
--- a/railties/lib/rails/generators/rails/generator/templates/%file_name%_generator.rb.tt
+++ b/railties/lib/rails/generators/rails/generator/templates/%file_name%_generator.rb.tt
@@ -1,5 +1,3 @@
class <%= class_name %>Generator < Rails::Generators::NamedBase
- def self.source_root
- @source_root ||= File.expand_path('../templates', __FILE__)
- end
+ source_root File.expand_path('../templates', __FILE__)
end
diff --git a/railties/lib/rails/generators/rails/mailer/USAGE b/railties/lib/rails/generators/rails/mailer/USAGE
deleted file mode 100644
index a08d459739..0000000000
--- a/railties/lib/rails/generators/rails/mailer/USAGE
+++ /dev/null
@@ -1,15 +0,0 @@
-Description:
- Stubs out a new mailer and its views. Pass the mailer name, either
- CamelCased or under_scored, and an optional list of emails as arguments.
-
- This generates a mailer class in app/mailers and invokes your template
- engine and test framework generators.
-
-Example:
- `rails generate mailer Notifications signup forgot_password invoice`
-
- creates a Notifications mailer class, views, test, and fixtures:
- Mailer: app/mailers/notifications.rb
- Views: app/views/notifications/signup.erb [...]
- Test: test/functional/notifications_test.rb
- Fixtures: test/fixtures/notifications/signup [...]
diff --git a/railties/lib/rails/generators/rails/mailer/mailer_generator.rb b/railties/lib/rails/generators/rails/mailer/mailer_generator.rb
deleted file mode 100644
index 8993181d79..0000000000
--- a/railties/lib/rails/generators/rails/mailer/mailer_generator.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-module Rails
- module Generators
- class MailerGenerator < NamedBase
- argument :actions, :type => :array, :default => [], :banner => "method method"
- check_class_collision
-
- def create_mailer_file
- template "mailer.rb", File.join('app/mailers', class_path, "#{file_name}.rb")
- end
-
- hook_for :template_engine, :test_framework
- end
- end
-end
diff --git a/railties/lib/rails/generators/rails/mailer/templates/mailer.rb b/railties/lib/rails/generators/rails/mailer/templates/mailer.rb
deleted file mode 100644
index 7343eb28b3..0000000000
--- a/railties/lib/rails/generators/rails/mailer/templates/mailer.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-class <%= class_name %> < ActionMailer::Base
- default :from => "from@example.com"
-<% for action in actions -%>
-
- # Subject can be set in your I18n file at config/locales/en.yml
- # with the following lookup:
- #
- # en.actionmailer.<%= file_name %>.<%= action %>.subject
- #
- def <%= action %>
- @greeting = "Hi"
-
- mail :to => "to@example.org"
- end
-<% end -%>
-end
diff --git a/railties/lib/rails/railtie.rb b/railties/lib/rails/railtie.rb
index 6ac6be092e..b6b57bc5b5 100644
--- a/railties/lib/rails/railtie.rb
+++ b/railties/lib/rails/railtie.rb
@@ -1,6 +1,7 @@
require 'rails/initializable'
require 'rails/configuration'
require 'active_support/inflector'
+require 'active_support/deprecation'
module Rails
# Railtie is the core of the Rails Framework and provides several hooks to extend