railties 3.0.0.beta → 3.0.0.beta2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (232) hide show
  1. data/CHANGELOG +15 -1
  2. data/README +9 -9
  3. data/bin/rails +28 -9
  4. data/guides/images/challenge.png +0 -0
  5. data/guides/images/edge_badge.png +0 -0
  6. data/guides/images/posts_index.png +0 -0
  7. data/guides/images/rails_welcome.png +0 -0
  8. data/guides/rails_guides.rb +9 -22
  9. data/guides/rails_guides/generator.rb +79 -50
  10. data/guides/rails_guides/textile_extensions.rb +3 -3
  11. data/guides/source/2_2_release_notes.textile +1 -1
  12. data/guides/source/2_3_release_notes.textile +1 -1
  13. data/guides/source/3_0_release_notes.textile +46 -38
  14. data/guides/source/action_controller_overview.textile +2 -2
  15. data/guides/source/action_mailer_basics.textile +4 -4
  16. data/guides/source/action_view_overview.textile +2 -2
  17. data/guides/source/active_record_querying.textile +73 -95
  18. data/guides/source/active_support_core_extensions.textile +993 -85
  19. data/guides/source/activerecord_validations_callbacks.textile +3 -3
  20. data/guides/source/caching_with_rails.textile +1 -1
  21. data/guides/source/command_line.textile +90 -88
  22. data/guides/source/configuring.textile +10 -10
  23. data/guides/source/contribute.textile +2 -2
  24. data/guides/source/contributing_to_rails.textile +14 -7
  25. data/guides/source/credits.textile.erb +8 -0
  26. data/guides/source/debugging_rails_applications.textile +6 -6
  27. data/guides/source/form_helpers.textile +1 -1
  28. data/guides/source/generators.textile +14 -14
  29. data/guides/source/getting_started.textile +634 -500
  30. data/guides/source/index.textile.erb +16 -1
  31. data/guides/source/layout.html.erb +7 -1
  32. data/guides/source/layouts_and_rendering.textile +299 -71
  33. data/guides/source/migrations.textile +5 -5
  34. data/guides/source/performance_testing.textile +8 -8
  35. data/guides/source/plugins.textile +26 -24
  36. data/guides/source/rails_on_rack.textile +5 -5
  37. data/guides/source/routing.textile +119 -117
  38. data/guides/source/security.textile +1 -1
  39. data/guides/source/testing.textile +4 -4
  40. data/lib/rails.rb +4 -1
  41. data/lib/rails/application.rb +44 -7
  42. data/lib/rails/application/bootstrap.rb +2 -14
  43. data/lib/rails/application/configuration.rb +69 -5
  44. data/lib/rails/application/finisher.rb +2 -3
  45. data/lib/rails/application/metal_loader.rb +1 -1
  46. data/lib/rails/application/routes_reloader.rb +1 -1
  47. data/lib/rails/backtrace_cleaner.rb +0 -11
  48. data/lib/rails/commands.rb +7 -6
  49. data/lib/rails/commands/application.rb +1 -1
  50. data/lib/rails/commands/console.rb +1 -1
  51. data/lib/rails/commands/dbconsole.rb +12 -0
  52. data/lib/rails/commands/destroy.rb +2 -2
  53. data/lib/rails/commands/generate.rb +2 -2
  54. data/lib/rails/commands/performance/benchmarker.rb +2 -2
  55. data/lib/rails/commands/performance/profiler.rb +2 -2
  56. data/lib/rails/commands/plugin.rb +6 -6
  57. data/lib/rails/commands/runner.rb +2 -0
  58. data/lib/rails/commands/server.rb +23 -8
  59. data/lib/rails/configuration.rb +2 -84
  60. data/lib/rails/console/app.rb +4 -3
  61. data/lib/rails/console/helpers.rb +3 -1
  62. data/lib/rails/engine.rb +107 -12
  63. data/lib/rails/engine/configuration.rb +8 -2
  64. data/lib/rails/generators.rb +22 -7
  65. data/lib/rails/generators/actions.rb +16 -6
  66. data/lib/rails/generators/base.rb +15 -8
  67. data/lib/rails/generators/erb.rb +21 -0
  68. data/lib/{generators → rails/generators}/erb/controller/controller_generator.rb +4 -5
  69. data/lib/{generators → rails/generators}/erb/controller/templates/view.html.erb +0 -0
  70. data/lib/rails/generators/erb/mailer/mailer_generator.rb +13 -0
  71. data/lib/{generators → rails/generators}/erb/mailer/templates/view.text.erb +0 -0
  72. data/lib/{generators → rails/generators}/erb/scaffold/scaffold_generator.rb +14 -26
  73. data/lib/{generators → rails/generators}/erb/scaffold/templates/_form.html.erb +1 -1
  74. data/lib/{generators → rails/generators}/erb/scaffold/templates/edit.html.erb +0 -0
  75. data/lib/{generators → rails/generators}/erb/scaffold/templates/index.html.erb +1 -1
  76. data/lib/{generators → rails/generators}/erb/scaffold/templates/layout.html.erb +1 -0
  77. data/lib/{generators → rails/generators}/erb/scaffold/templates/new.html.erb +0 -0
  78. data/lib/{generators → rails/generators}/erb/scaffold/templates/show.html.erb +0 -0
  79. data/lib/rails/generators/named_base.rb +4 -0
  80. data/lib/{generators → rails/generators}/rails/app/USAGE +0 -0
  81. data/lib/{generators → rails/generators}/rails/app/app_generator.rb +21 -7
  82. data/lib/rails/generators/rails/app/templates/Gemfile +34 -0
  83. data/lib/{generators → rails/generators}/rails/app/templates/README +9 -8
  84. data/lib/{generators → rails/generators}/rails/app/templates/Rakefile +0 -0
  85. data/lib/{generators → rails/generators}/rails/app/templates/app/controllers/application_controller.rb +0 -0
  86. data/lib/{generators → rails/generators}/rails/app/templates/app/helpers/application_helper.rb +0 -0
  87. data/lib/{generators → rails/generators}/rails/app/templates/app/models/.empty_directory +0 -0
  88. data/lib/{generators → rails/generators}/rails/app/templates/app/views/layouts/.empty_directory +0 -0
  89. data/lib/{generators → rails/generators}/rails/app/templates/config.ru +0 -0
  90. data/lib/{generators → rails/generators}/rails/app/templates/config/application.rb +4 -3
  91. data/lib/rails/generators/rails/app/templates/config/boot.rb +14 -0
  92. data/lib/{generators → rails/generators}/rails/app/templates/config/databases/frontbase.yml +0 -0
  93. data/lib/{generators → rails/generators}/rails/app/templates/config/databases/ibm_db.yml +0 -0
  94. data/lib/{generators → rails/generators}/rails/app/templates/config/databases/mysql.yml +0 -0
  95. data/lib/{generators → rails/generators}/rails/app/templates/config/databases/oracle.yml +0 -0
  96. data/lib/{generators → rails/generators}/rails/app/templates/config/databases/postgresql.yml +0 -0
  97. data/lib/{generators → rails/generators}/rails/app/templates/config/databases/sqlite3.yml +0 -0
  98. data/lib/{generators → rails/generators}/rails/app/templates/config/environment.rb +0 -0
  99. data/lib/{generators → rails/generators}/rails/app/templates/config/environments/development.rb.tt +0 -0
  100. data/lib/{generators → rails/generators}/rails/app/templates/config/environments/production.rb.tt +9 -0
  101. data/lib/{generators → rails/generators}/rails/app/templates/config/environments/test.rb.tt +0 -0
  102. data/lib/{generators → rails/generators}/rails/app/templates/config/initializers/backtrace_silencers.rb +0 -0
  103. data/lib/{generators → rails/generators}/rails/app/templates/config/initializers/cookie_verification_secret.rb.tt +1 -1
  104. data/lib/{generators → rails/generators}/rails/app/templates/config/initializers/inflections.rb +0 -0
  105. data/lib/{generators → rails/generators}/rails/app/templates/config/initializers/mime_types.rb +0 -0
  106. data/lib/rails/generators/rails/app/templates/config/initializers/session_store.rb.tt +10 -0
  107. data/lib/{generators → rails/generators}/rails/app/templates/config/locales/en.yml +0 -0
  108. data/lib/{generators → rails/generators}/rails/app/templates/config/routes.rb +0 -0
  109. data/lib/{generators → rails/generators}/rails/app/templates/db/seeds.rb +0 -0
  110. data/lib/{generators → rails/generators}/rails/app/templates/doc/README_FOR_APP +0 -0
  111. data/lib/{generators → rails/generators}/rails/app/templates/gitignore +0 -0
  112. data/lib/{generators → rails/generators}/rails/app/templates/public/404.html +0 -0
  113. data/lib/{generators → rails/generators}/rails/app/templates/public/422.html +0 -0
  114. data/lib/{generators → rails/generators}/rails/app/templates/public/500.html +0 -0
  115. data/lib/{generators → rails/generators}/rails/app/templates/public/favicon.ico +0 -0
  116. data/lib/{generators → rails/generators}/rails/app/templates/public/images/rails.png +0 -0
  117. data/lib/{generators → rails/generators}/rails/app/templates/public/index.html +17 -17
  118. data/lib/{generators → rails/generators}/rails/app/templates/public/javascripts/application.js +0 -0
  119. data/lib/{generators → rails/generators}/rails/app/templates/public/javascripts/controls.js +5 -3
  120. data/lib/{generators → rails/generators}/rails/app/templates/public/javascripts/dragdrop.js +7 -6
  121. data/lib/{generators → rails/generators}/rails/app/templates/public/javascripts/effects.js +8 -13
  122. data/lib/{generators → rails/generators}/rails/app/templates/public/javascripts/prototype.js +1573 -1019
  123. data/lib/{generators → rails/generators}/rails/app/templates/public/javascripts/rails.js +1 -2
  124. data/lib/{generators → rails/generators}/rails/app/templates/public/robots.txt +0 -0
  125. data/lib/{generators → rails/generators}/rails/app/templates/public/stylesheets/.empty_directory +0 -0
  126. data/lib/{generators → rails/generators}/rails/app/templates/script/rails +0 -1
  127. data/lib/{generators → rails/generators}/rails/app/templates/test/fixtures/.empty_directory +0 -0
  128. data/lib/{generators → rails/generators}/rails/app/templates/test/functional/.empty_directory +0 -0
  129. data/lib/{generators → rails/generators}/rails/app/templates/test/integration/.empty_directory +0 -0
  130. data/lib/{generators → rails/generators}/rails/app/templates/test/performance/browsing_test.rb +1 -1
  131. data/lib/{generators → rails/generators}/rails/app/templates/test/test_helper.rb +1 -1
  132. data/lib/{generators → rails/generators}/rails/app/templates/test/unit/.empty_directory +0 -0
  133. data/lib/{generators → rails/generators}/rails/controller/USAGE +1 -1
  134. data/lib/{generators → rails/generators}/rails/controller/controller_generator.rb +6 -0
  135. data/lib/{generators → rails/generators}/rails/controller/templates/controller.rb +0 -0
  136. data/lib/{generators → rails/generators}/rails/generator/USAGE +1 -1
  137. data/lib/{generators → rails/generators}/rails/generator/generator_generator.rb +0 -0
  138. data/lib/{generators → rails/generators}/rails/generator/templates/%file_name%_generator.rb.tt +0 -0
  139. data/lib/{generators → rails/generators}/rails/generator/templates/USAGE.tt +1 -1
  140. data/lib/{generators → rails/generators}/rails/generator/templates/templates/.empty_directory +0 -0
  141. data/lib/{generators → rails/generators}/rails/helper/USAGE +1 -1
  142. data/lib/{generators → rails/generators}/rails/helper/helper_generator.rb +0 -0
  143. data/lib/{generators → rails/generators}/rails/helper/templates/helper.rb +0 -0
  144. data/lib/{generators → rails/generators}/rails/integration_test/USAGE +1 -1
  145. data/lib/{generators → rails/generators}/rails/integration_test/integration_test_generator.rb +0 -0
  146. data/lib/{generators → rails/generators}/rails/mailer/USAGE +1 -1
  147. data/lib/{generators → rails/generators}/rails/mailer/mailer_generator.rb +0 -0
  148. data/lib/{generators → rails/generators}/rails/mailer/templates/mailer.rb +0 -0
  149. data/lib/{generators → rails/generators}/rails/metal/USAGE +1 -1
  150. data/lib/{generators → rails/generators}/rails/metal/metal_generator.rb +0 -0
  151. data/lib/{generators → rails/generators}/rails/metal/templates/metal.rb +0 -0
  152. data/lib/{generators → rails/generators}/rails/migration/USAGE +2 -2
  153. data/lib/{generators → rails/generators}/rails/migration/migration_generator.rb +0 -0
  154. data/lib/{generators → rails/generators}/rails/model/USAGE +2 -2
  155. data/lib/{generators → rails/generators}/rails/model/model_generator.rb +0 -0
  156. data/lib/{generators → rails/generators}/rails/observer/USAGE +1 -1
  157. data/lib/{generators → rails/generators}/rails/observer/observer_generator.rb +0 -0
  158. data/lib/{generators → rails/generators}/rails/performance_test/USAGE +1 -1
  159. data/lib/{generators → rails/generators}/rails/performance_test/performance_test_generator.rb +0 -0
  160. data/lib/{generators → rails/generators}/rails/plugin/USAGE +1 -1
  161. data/lib/{generators → rails/generators}/rails/plugin/plugin_generator.rb +1 -1
  162. data/lib/{generators → rails/generators}/rails/plugin/templates/MIT-LICENSE.tt +0 -0
  163. data/lib/{generators → rails/generators}/rails/plugin/templates/README.tt +0 -0
  164. data/lib/rails/generators/rails/plugin/templates/Rakefile.tt +23 -0
  165. data/lib/{generators → rails/generators}/rails/plugin/templates/init.rb +0 -0
  166. data/lib/{generators → rails/generators}/rails/plugin/templates/install.rb +0 -0
  167. data/lib/{generators → rails/generators}/rails/plugin/templates/lib/%file_name%.rb.tt +0 -0
  168. data/lib/{generators → rails/generators}/rails/plugin/templates/lib/tasks/%file_name%_tasks.rake.tt +0 -0
  169. data/lib/{generators → rails/generators}/rails/plugin/templates/uninstall.rb +0 -0
  170. data/lib/{generators → rails/generators}/rails/resource/USAGE +3 -3
  171. data/lib/{generators → rails/generators}/rails/resource/resource_generator.rb +3 -1
  172. data/lib/{generators → rails/generators}/rails/scaffold/USAGE +4 -4
  173. data/lib/{generators → rails/generators}/rails/scaffold/scaffold_generator.rb +1 -1
  174. data/lib/{generators → rails/generators}/rails/scaffold_controller/USAGE +1 -1
  175. data/lib/{generators → rails/generators}/rails/scaffold_controller/scaffold_controller_generator.rb +0 -0
  176. data/lib/{generators → rails/generators}/rails/scaffold_controller/templates/controller.rb +2 -2
  177. data/lib/{generators → rails/generators}/rails/session_migration/USAGE +1 -1
  178. data/lib/{generators → rails/generators}/rails/session_migration/session_migration_generator.rb +0 -0
  179. data/lib/{generators → rails/generators}/rails/stylesheets/USAGE +1 -1
  180. data/lib/{generators → rails/generators}/rails/stylesheets/stylesheets_generator.rb +0 -0
  181. data/lib/{generators → rails/generators}/rails/stylesheets/templates/scaffold.css +4 -0
  182. data/lib/{generators → rails/generators}/test_unit.rb +0 -0
  183. data/lib/{generators → rails/generators}/test_unit/controller/controller_generator.rb +2 -1
  184. data/lib/rails/generators/test_unit/controller/templates/functional_test.rb +18 -0
  185. data/lib/{generators → rails/generators}/test_unit/helper/helper_generator.rb +1 -1
  186. data/lib/{generators → rails/generators}/test_unit/helper/templates/helper_test.rb +0 -0
  187. data/lib/{generators → rails/generators}/test_unit/integration/integration_generator.rb +1 -1
  188. data/lib/{generators → rails/generators}/test_unit/integration/templates/integration_test.rb +0 -0
  189. data/lib/{generators → rails/generators}/test_unit/mailer/mailer_generator.rb +1 -8
  190. data/lib/rails/generators/test_unit/mailer/templates/functional_test.rb +20 -0
  191. data/lib/{generators → rails/generators}/test_unit/model/model_generator.rb +1 -1
  192. data/lib/{generators → rails/generators}/test_unit/model/templates/fixtures.yml +0 -0
  193. data/lib/{generators → rails/generators}/test_unit/model/templates/unit_test.rb +0 -0
  194. data/lib/{generators → rails/generators}/test_unit/observer/observer_generator.rb +1 -1
  195. data/lib/{generators → rails/generators}/test_unit/observer/templates/unit_test.rb +0 -0
  196. data/lib/{generators → rails/generators}/test_unit/performance/performance_generator.rb +1 -1
  197. data/lib/{generators → rails/generators}/test_unit/performance/templates/performance_test.rb +0 -0
  198. data/lib/{generators → rails/generators}/test_unit/plugin/plugin_generator.rb +1 -1
  199. data/lib/{generators → rails/generators}/test_unit/plugin/templates/%file_name%_test.rb.tt +0 -0
  200. data/lib/{generators → rails/generators}/test_unit/plugin/templates/test_helper.rb +0 -0
  201. data/lib/{generators → rails/generators}/test_unit/scaffold/scaffold_generator.rb +1 -1
  202. data/lib/{generators → rails/generators}/test_unit/scaffold/templates/functional_test.rb +9 -5
  203. data/{builtin/rails_info → lib}/rails/info.rb +0 -0
  204. data/{builtin/rails_info → lib}/rails/info_controller.rb +0 -0
  205. data/{builtin/routes.rb → lib/rails/info_routes.rb} +2 -2
  206. data/lib/rails/{subscriber.rb → log_subscriber.rb} +27 -27
  207. data/lib/rails/{subscriber → log_subscriber}/test_helper.rb +15 -16
  208. data/lib/rails/plugin.rb +31 -8
  209. data/lib/rails/rack/debugger.rb +3 -1
  210. data/lib/rails/rack/logger.rb +4 -4
  211. data/lib/rails/railtie.rb +179 -16
  212. data/lib/rails/railtie/configuration.rb +56 -1
  213. data/lib/rails/tasks/documentation.rake +38 -20
  214. data/lib/rails/tasks/framework.rake +16 -9
  215. data/lib/rails/tasks/misc.rake +3 -5
  216. data/lib/rails/tasks/routes.rake +2 -2
  217. data/lib/rails/test_help.rb +21 -1
  218. data/lib/rails/test_unit/railtie.rb +1 -3
  219. data/lib/rails/version.rb +3 -2
  220. metadata +199 -171
  221. data/builtin/rails_info/rails/info_helper.rb +0 -2
  222. data/lib/generators/erb.rb +0 -8
  223. data/lib/generators/erb/mailer/mailer_generator.rb +0 -20
  224. data/lib/generators/rails/app/templates/Gemfile +0 -34
  225. data/lib/generators/rails/app/templates/config/boot.rb +0 -17
  226. data/lib/generators/rails/app/templates/config/initializers/session_store.rb.tt +0 -15
  227. data/lib/generators/rails/model_subclass/model_subclass_generator.rb +0 -12
  228. data/lib/generators/rails/plugin/templates/Rakefile.tt +0 -10
  229. data/lib/generators/test_unit/controller/templates/functional_test.rb +0 -8
  230. data/lib/generators/test_unit/mailer/templates/fixture +0 -3
  231. data/lib/generators/test_unit/mailer/templates/functional_test.rb +0 -22
  232. data/lib/rails/railties_path.rb +0 -1
@@ -92,7 +92,7 @@ Rails 2 introduced a new default session storage, CookieStore. CookieStore saves
92
92
  That means the security of this storage depends on this secret (and on the digest algorithm, which defaults to SHA512, which has not been compromised, yet). So _(highlight)don't use a trivial secret, i.e. a word from a dictionary, or one which is shorter than 30 characters_. Put the secret in your environment.rb:
93
93
 
94
94
  <ruby>
95
- config.action_controller.session = {
95
+ config.action_dispatch.session = {
96
96
  :key => '_app_session',
97
97
  :secret => '0x0dkfj3927dkc7djdh36rkckdfzsg...'
98
98
  }
@@ -56,7 +56,7 @@ h5. What are Fixtures?
56
56
 
57
57
  _Fixtures_ is a fancy word for sample data. Fixtures allow you to populate your testing database with predefined data before your tests run. Fixtures are database independent and assume one of two formats: *YAML* or *CSV*. In this guide we will use *YAML* which is the preferred format.
58
58
 
59
- You'll find fixtures under your +test/fixtures+ directory. When you run +script/generate model+ to create a new model, fixture stubs will be automatically created and placed in this directory.
59
+ You'll find fixtures under your +test/fixtures+ directory. When you run +rails generate model+ to create a new model, fixture stubs will be automatically created and placed in this directory.
60
60
 
61
61
  h5. YAML
62
62
 
@@ -144,10 +144,10 @@ For this guide we will be using Rails _scaffolding_. It will create the model, a
144
144
 
145
145
  NOTE: For more information on Rails _scaffolding_, refer to "Getting Started with Rails":getting_started.html
146
146
 
147
- When you use +script/generate scaffold+, for a resource among other things it creates a test stub in the +test/unit+ folder:
147
+ When you use +rails generate scaffold+, for a resource among other things it creates a test stub in the +test/unit+ folder:
148
148
 
149
149
  <pre>
150
- $ script/generate scaffold post title:string body:text
150
+ $ rails generate scaffold post title:string body:text
151
151
  ...
152
152
  create app/models/post.rb
153
153
  create test/unit/post_test.rb
@@ -604,7 +604,7 @@ Integration tests are used to test the interaction among any number of controlle
604
604
  Unlike Unit and Functional tests, integration tests have to be explicitly created under the 'test/integration' folder within your application. Rails provides a generator to create an integration test skeleton for you.
605
605
 
606
606
  <shell>
607
- $ script/generate integration_test user_flows
607
+ $ rails generate integration_test user_flows
608
608
  exists test/integration/
609
609
  create test/integration/user_flows_test.rb
610
610
  </shell>
@@ -7,7 +7,7 @@ require 'active_support/core_ext/logger'
7
7
  require 'rails/application'
8
8
  require 'rails/version'
9
9
  require 'rails/deprecation'
10
- require 'rails/subscriber'
10
+ require 'rails/log_subscriber'
11
11
  require 'rails/ruby_version_check'
12
12
 
13
13
  require 'active_support/railtie'
@@ -26,6 +26,9 @@ else
26
26
  end
27
27
 
28
28
  module Rails
29
+ autoload :Info, 'rails/info'
30
+ autoload :InfoController, 'rails/info_controller'
31
+
29
32
  class << self
30
33
  def application
31
34
  @@application ||= nil
@@ -1,9 +1,45 @@
1
1
  require 'fileutils'
2
- require 'rails/railties_path'
3
2
  require 'rails/plugin'
4
3
  require 'rails/engine'
5
4
 
6
5
  module Rails
6
+ # In Rails 3.0, a Rails::Application object was introduced which is nothing more than
7
+ # an Engine but with the responsibility of coordinating the whole boot process.
8
+ #
9
+ # Opposite to Rails::Engine, you can only have one Rails::Application instance
10
+ # in your process and both Rails::Application and YourApplication::Application
11
+ # points to it.
12
+ #
13
+ # In other words, Rails::Application is Singleton and whenever you are accessing
14
+ # Rails::Application.config or YourApplication::Application.config, you are actually
15
+ # accessing YourApplication::Application.instance.config.
16
+ #
17
+ # == Initialization
18
+ #
19
+ # Rails::Application is responsible for executing all railties, engines and plugin
20
+ # initializers. Besides, it also executed some bootstrap initializers (check
21
+ # Rails::Application::Bootstrap) and finishing initializers, after all the others
22
+ # are executed (check Rails::Application::Finisher).
23
+ #
24
+ # == Configuration
25
+ #
26
+ # Besides providing the same configuration as Rails::Engine and Rails::Railtie,
27
+ # the application object has several specific configurations, for example
28
+ # "allow_concurrency", "cache_classes", "consider_all_requests_local", "filter_parameters",
29
+ # "logger", "metals", "reload_engines", "reload_plugins" and so forth.
30
+ #
31
+ # Check Rails::Application::Configuration to see them all.
32
+ #
33
+ # == Routes
34
+ #
35
+ # The application object is also responsible for holding the routes and reloading routes
36
+ # whenever the files change in development.
37
+ #
38
+ # == Middlewares and metals
39
+ #
40
+ # The Application is also responsible for building the middleware stack and setting up
41
+ # both application and engines metals.
42
+ #
7
43
  class Application < Engine
8
44
  autoload :Bootstrap, 'rails/application/bootstrap'
9
45
  autoload :Configurable, 'rails/application/configurable'
@@ -15,7 +51,10 @@ module Rails
15
51
 
16
52
  class << self
17
53
  private :new
18
- alias :configure :class_eval
54
+
55
+ def configure(&block)
56
+ class_eval(&block)
57
+ end
19
58
 
20
59
  def instance
21
60
  if self == Rails::Application
@@ -42,23 +81,21 @@ module Rails
42
81
  end
43
82
  end
44
83
 
84
+ delegate :metal_loader, :to => :config
85
+
45
86
  def require_environment!
46
87
  environment = config.paths.config.environment.to_a.first
47
88
  require environment if environment
48
89
  end
49
90
 
50
91
  def routes
51
- ::ActionController::Routing::Routes
92
+ @routes ||= ActionDispatch::Routing::RouteSet.new
52
93
  end
53
94
 
54
95
  def railties
55
96
  @railties ||= Railties.new(config)
56
97
  end
57
98
 
58
- def metal_loader
59
- @metal_laoder ||= MetalLoader.new
60
- end
61
-
62
99
  def routes_reloader
63
100
  @routes_reloader ||= RoutesReloader.new
64
101
  end
@@ -1,3 +1,5 @@
1
+ require "active_support/notifications"
2
+
1
3
  module Rails
2
4
  class Application
3
5
  module Bootstrap
@@ -49,20 +51,6 @@ module Rails
49
51
  end
50
52
  end
51
53
 
52
- # Initialize rails subscriber on top of notifications.
53
- initializer :initialize_subscriber do
54
- require 'active_support/notifications'
55
-
56
- if config.colorize_logging == false
57
- Rails::Subscriber.colorize_logging = false
58
- config.generators.colorize_logging = false
59
- end
60
-
61
- ActiveSupport::Notifications.subscribe do |*args|
62
- Rails::Subscriber.dispatch(args)
63
- end
64
- end
65
-
66
54
  initializer :set_clear_dependencies_hook do
67
55
  unless config.cache_classes
68
56
  ActionDispatch::Callbacks.after do
@@ -5,8 +5,8 @@ module Rails
5
5
  class Configuration < ::Rails::Engine::Configuration
6
6
  include ::Rails::Configuration::Deprecated
7
7
 
8
- attr_accessor :allow_concurrency, :cache_classes, :cache_store, :colorize_logging,
9
- :consider_all_requests_local, :dependency_loading,
8
+ attr_accessor :allow_concurrency, :cache_classes, :cache_store,
9
+ :cookie_secret, :consider_all_requests_local, :dependency_loading,
10
10
  :filter_parameters, :log_level, :logger, :metals,
11
11
  :plugins, :preload_frameworks, :reload_engines, :reload_plugins,
12
12
  :serve_static_assets, :time_zone, :whiny_nils
@@ -14,12 +14,21 @@ module Rails
14
14
  def initialize(*)
15
15
  super
16
16
  @allow_concurrency = false
17
- @colorize_logging = true
18
17
  @filter_parameters = []
19
18
  @dependency_loading = true
20
19
  @serve_static_assets = true
21
20
  @time_zone = "UTC"
22
21
  @consider_all_requests_local = true
22
+ @session_store = :cookie_store
23
+ @session_options = {}
24
+ end
25
+
26
+ def middleware
27
+ @middleware ||= default_middleware_stack
28
+ end
29
+
30
+ def metal_loader
31
+ @metal_loader ||= Rails::Application::MetalLoader.new
23
32
  end
24
33
 
25
34
  def paths
@@ -75,12 +84,67 @@ module Rails
75
84
  end
76
85
 
77
86
  def builtin_controller
78
- File.join(RAILTIES_PATH, "builtin", "rails_info") if Rails.env.development?
87
+ File.expand_path('../info_routes', __FILE__) if Rails.env.development?
79
88
  end
80
89
 
81
90
  def log_level
82
91
  @log_level ||= Rails.env.production? ? :info : :debug
83
92
  end
93
+
94
+ def colorize_logging
95
+ @colorize_logging
96
+ end
97
+
98
+ def colorize_logging=(val)
99
+ @colorize_logging = val
100
+ Rails::LogSubscriber.colorize_logging = val
101
+ self.generators.colorize_logging = val
102
+ end
103
+
104
+ def session_store(*args)
105
+ if args.empty?
106
+ case @session_store
107
+ when :disabled
108
+ nil
109
+ when :active_record_store
110
+ ActiveRecord::SessionStore
111
+ when Symbol
112
+ ActionDispatch::Session.const_get(@session_store.to_s.camelize)
113
+ else
114
+ @session_store
115
+ end
116
+ else
117
+ @session_store = args.shift
118
+ @session_options = args.shift || {}
119
+ end
120
+ end
121
+
122
+ protected
123
+
124
+ def session_options
125
+ return @session_options unless @session_store == :cookie_store
126
+ @session_options.merge(:secret => @cookie_secret)
127
+ end
128
+
129
+ def default_middleware_stack
130
+ ActionDispatch::MiddlewareStack.new.tap do |middleware|
131
+ middleware.use('::ActionDispatch::Static', lambda { Rails.public_path }, :if => lambda { serve_static_assets })
132
+ middleware.use('::Rack::Lock', :if => lambda { !allow_concurrency })
133
+ middleware.use('::Rack::Runtime')
134
+ middleware.use('::Rails::Rack::Logger')
135
+ middleware.use('::ActionDispatch::ShowExceptions', lambda { consider_all_requests_local })
136
+ middleware.use("::ActionDispatch::RemoteIp", lambda { action_dispatch.ip_spoofing_check }, lambda { action_dispatch.trusted_proxies })
137
+ middleware.use('::Rack::Sendfile', lambda { action_dispatch.x_sendfile_header })
138
+ middleware.use('::ActionDispatch::Callbacks', lambda { !cache_classes })
139
+ middleware.use('::ActionDispatch::Cookies')
140
+ middleware.use(lambda { session_store }, lambda { session_options })
141
+ middleware.use('::ActionDispatch::Flash', :if => lambda { session_store })
142
+ middleware.use(lambda { metal_loader.build_middleware(metals) }, :if => lambda { metal_loader.metals.any? })
143
+ middleware.use('ActionDispatch::ParamsParser')
144
+ middleware.use('::Rack::MethodOverride')
145
+ middleware.use('::ActionDispatch::Head')
146
+ end
147
+ end
84
148
  end
85
149
  end
86
- end
150
+ end
@@ -23,7 +23,7 @@ module Rails
23
23
 
24
24
  initializer :add_builtin_route do |app|
25
25
  if Rails.env.development?
26
- app.routes_reloader.paths << File.join(RAILTIES_PATH, 'builtin', 'routes.rb')
26
+ app.routes_reloader.paths << File.expand_path('../../info_routes.rb', __FILE__)
27
27
  end
28
28
  end
29
29
 
@@ -31,7 +31,6 @@ module Rails
31
31
  app
32
32
  end
33
33
 
34
- # Fires the user-supplied after_initialize block (config.after_initialize)
35
34
  initializer :after_initialize do
36
35
  config.after_initialize_blocks.each do |block|
37
36
  block.call(self)
@@ -46,4 +45,4 @@ module Rails
46
45
  end
47
46
  end
48
47
  end
49
- end
48
+ end
@@ -34,7 +34,7 @@ module Rails
34
34
  Dir.glob("#{path}/**/*.rb").sort.each do |metal_path|
35
35
  metal = metal_path.sub(matcher, '\1').to_sym
36
36
  next unless list.include?(metal) || list.include?(:all)
37
- require_dependency metal
37
+ require_dependency metal.to_s
38
38
  metals << metal
39
39
  end
40
40
  end
@@ -27,7 +27,7 @@ module Rails
27
27
 
28
28
  routes.clear!
29
29
  paths.each { |path| load(path) }
30
- routes.finalize!
30
+ ActiveSupport.on_load(:action_controller) { routes.finalize! }
31
31
 
32
32
  nil
33
33
  ensure
@@ -12,7 +12,6 @@ module Rails
12
12
  add_filter { |line| line.sub('./', '/') } # for tests
13
13
 
14
14
  add_gem_filters
15
- add_bundler_filters
16
15
 
17
16
  add_silencer { |line| !APP_DIRS.any? { |dir| line =~ /^#{dir}/ } }
18
17
  end
@@ -27,16 +26,6 @@ module Rails
27
26
  }
28
27
  end
29
28
  end
30
-
31
- def add_bundler_filters
32
- return unless defined? Bundler
33
- add_filter { |line|
34
- line.sub(%r{vendor/gems/[^/]+/[^/]+/gems/([^/]+)-([0-9.]+)/(.*)}, '\1 (\2) \3')
35
- }
36
- add_filter { |line|
37
- line.sub(%r{vendor/gems/[^/]+/[^/]+/dirs/([^/]+)/(.*)}, '\1 \2')
38
- }
39
- end
40
29
  end
41
30
 
42
31
  # For installing the BacktraceCleaner in the test/unit
@@ -30,13 +30,16 @@ when 'g', 'generate'
30
30
  require 'rails/commands/generate'
31
31
  when 'c', 'console'
32
32
  require 'rails/commands/console'
33
- require APP_PATH
33
+ require ENV_PATH
34
34
  Rails::Console.start(Rails::Application)
35
35
  when 's', 'server'
36
- require APP_PATH
37
36
  require 'rails/commands/server'
38
- Dir.chdir(ROOT_PATH)
39
- Rails::Server.start
37
+ # Initialize the server first, so environment options are set
38
+ server = Rails::Server.new
39
+ require APP_PATH
40
+
41
+ Dir.chdir(Rails::Application.root)
42
+ server.start
40
43
  when 'db', 'dbconsole'
41
44
  require 'rails/commands/dbconsole'
42
45
  require APP_PATH
@@ -58,8 +61,6 @@ when 'plugin'
58
61
  require 'rails/commands/plugin'
59
62
  when 'runner'
60
63
  require 'rails/commands/runner'
61
- require ENV_PATH
62
-
63
64
 
64
65
  when '--help', '-h'
65
66
  puts HELP_TEXT
@@ -8,6 +8,6 @@ ARGV << "--help" if ARGV.empty?
8
8
  require 'rubygems' if ARGV.include?("--dev")
9
9
 
10
10
  require 'rails/generators'
11
- require 'generators/rails/app/app_generator'
11
+ require 'rails/generators/rails/app/app_generator'
12
12
 
13
13
  Rails::Generators::AppGenerator.start
@@ -19,7 +19,7 @@ module Rails
19
19
  opt.banner = "Usage: console [environment] [options]"
20
20
  opt.on('-s', '--sandbox', 'Rollback database modifications on exit.') { |v| options[:sandbox] = v }
21
21
  opt.on("--debugger", 'Enable ruby-debugging for the console.') { |v| options[:debugger] = v }
22
- opt.on('--irb') { |v| abort '--irb option is no longer supported. Invoke `/your/choice/of/ruby script/console` instead' }
22
+ opt.on('--irb', "DEPRECATED: Invoke `/your/choice/of/ruby script/rails console` instead") { |v| abort '--irb option is no longer supported. Invoke `/your/choice/of/ruby script/rails console` instead' }
23
23
  opt.parse!(ARGV)
24
24
  end
25
25
 
@@ -91,6 +91,18 @@ module Rails
91
91
  args << config['database']
92
92
 
93
93
  exec(find_cmd('sqlite3'), *args)
94
+
95
+ when "oracle", "oracle_enhanced"
96
+ logon = ""
97
+
98
+ if config['username']
99
+ logon = config['username']
100
+ logon << "/#{config['password']}" if config['password'] && include_password
101
+ logon << "@#{config['database']}" if config['database']
102
+ end
103
+
104
+ exec(find_cmd('sqlplus'), logon)
105
+
94
106
  else
95
107
  abort "Unknown command-line client for #{config['database']}. Submit a Rails patch to add support!"
96
108
  end
@@ -1,7 +1,7 @@
1
1
  require 'rails/generators'
2
2
 
3
- if ARGV.size == 0
4
- Rails::Generators.help
3
+ if [nil, "-h", "--help"].include?(ARGV.first)
4
+ Rails::Generators.help 'destroy'
5
5
  exit
6
6
  end
7
7
 
@@ -1,7 +1,7 @@
1
1
  require 'rails/generators'
2
2
 
3
- if ARGV.size == 0
4
- Rails::Generators.help
3
+ if [nil, "-h", "--help"].include?(ARGV.first)
4
+ Rails::Generators.help 'generate'
5
5
  exit
6
6
  end
7
7
 
@@ -1,5 +1,5 @@
1
- if ARGV.empty?
2
- puts "Usage: benchmarker [times] 'Person.expensive_way' 'Person.another_expensive_way' ..."
1
+ if [nil, "-h", "--help"].include?(ARGV.first)
2
+ puts "Usage: rails benchmarker [times] 'Person.expensive_way' 'Person.another_expensive_way' ..."
3
3
  exit 1
4
4
  end
5
5
 
@@ -1,5 +1,5 @@
1
- if ARGV.empty?
2
- $stderr.puts "Usage: profiler 'Person.expensive_method(10)' [times] [flat|graph|graph_html]"
1
+ if [nil, "-h", "--help"].include?(ARGV.first)
2
+ $stderr.puts "Usage: rails profiler 'Person.expensive_method(10)' [times] [flat|graph|graph_html]"
3
3
  exit(1)
4
4
  end
5
5