railties 3.2.22.5 → 4.0.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +186 -78
- data/README.rdoc +4 -2
- data/lib/rails.rb +11 -44
- data/lib/rails/all.rb +0 -1
- data/lib/rails/app_rails_loader.rb +37 -0
- data/lib/rails/application.rb +176 -124
- data/lib/rails/application/bootstrap.rb +29 -23
- data/lib/rails/application/configuration.rb +54 -48
- data/lib/rails/application/finisher.rb +8 -12
- data/lib/rails/application/routes_reloader.rb +2 -2
- data/lib/rails/backtrace_cleaner.rb +1 -16
- data/lib/rails/cli.rb +2 -2
- data/lib/rails/code_statistics.rb +30 -45
- data/lib/rails/code_statistics_calculator.rb +79 -0
- data/lib/rails/commands.rb +44 -37
- data/lib/rails/commands/application.rb +14 -9
- data/lib/rails/commands/console.rb +77 -33
- data/lib/rails/commands/dbconsole.rb +115 -64
- data/lib/rails/commands/destroy.rb +2 -3
- data/lib/rails/commands/generate.rb +2 -3
- data/lib/rails/commands/plugin_new.rb +0 -2
- data/lib/rails/commands/runner.rb +4 -5
- data/lib/rails/commands/server.rb +28 -9
- data/lib/rails/commands/update.rb +1 -1
- data/lib/rails/configuration.rb +35 -8
- data/lib/rails/console/app.rb +0 -4
- data/lib/rails/deprecation.rb +19 -0
- data/lib/rails/engine.rb +111 -92
- data/lib/rails/engine/commands.rb +1 -3
- data/lib/rails/engine/configuration.rb +26 -19
- data/lib/rails/engine/railties.rb +14 -18
- data/lib/rails/generators.rb +30 -50
- data/lib/rails/generators/actions.rb +38 -103
- data/lib/rails/generators/active_model.rb +14 -6
- data/lib/rails/generators/app_base.rb +70 -83
- data/lib/rails/generators/base.rb +23 -35
- data/lib/rails/generators/css/assets/assets_generator.rb +3 -3
- data/lib/rails/generators/css/scaffold/scaffold_generator.rb +3 -3
- data/lib/rails/generators/erb.rb +2 -2
- data/lib/rails/generators/erb/controller/controller_generator.rb +4 -4
- data/lib/rails/generators/erb/mailer/mailer_generator.rb +3 -3
- data/lib/rails/generators/erb/scaffold/scaffold_generator.rb +4 -4
- data/lib/rails/generators/erb/scaffold/templates/index.html.erb +18 -14
- data/lib/rails/generators/erb/scaffold/templates/show.html.erb +1 -1
- data/lib/rails/generators/generated_attribute.rb +51 -16
- data/lib/rails/generators/js/assets/assets_generator.rb +3 -3
- data/lib/rails/generators/migration.rb +1 -5
- data/lib/rails/generators/named_base.rb +20 -25
- data/lib/rails/generators/rails/app/app_generator.rb +40 -48
- data/lib/rails/generators/rails/app/templates/Gemfile +8 -7
- data/lib/rails/generators/rails/app/templates/README.rdoc +28 -0
- data/lib/rails/generators/rails/app/templates/Rakefile +0 -1
- data/lib/rails/generators/rails/app/templates/app/assets/javascripts/application.js.tt +2 -1
- data/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb.tt +5 -0
- data/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt +2 -2
- data/lib/rails/generators/rails/app/templates/bin/bundle +2 -0
- data/lib/rails/generators/rails/app/templates/bin/rails +3 -0
- data/lib/rails/generators/rails/app/templates/bin/rake +3 -0
- data/lib/rails/generators/rails/app/templates/config/application.rb +5 -43
- data/lib/rails/generators/rails/app/templates/config/boot.rb +0 -2
- data/lib/rails/generators/rails/app/templates/config/databases/jdbcpostgresql.yml +2 -2
- data/lib/rails/generators/rails/app/templates/config/databases/mysql.yml +1 -4
- data/lib/rails/generators/rails/app/templates/config/databases/postgresql.yml +8 -3
- data/lib/rails/generators/rails/app/templates/config/databases/sqlserver.yml +57 -0
- data/lib/rails/generators/rails/app/templates/config/environment.rb +2 -2
- data/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt +9 -19
- data/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +40 -29
- data/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt +12 -15
- data/lib/rails/generators/rails/app/templates/config/initializers/filter_parameter_logging.rb +4 -0
- data/lib/rails/generators/rails/app/templates/config/initializers/inflections.rb +6 -5
- data/lib/rails/generators/rails/app/templates/config/initializers/secret_token.rb.tt +6 -1
- data/lib/rails/generators/rails/app/templates/config/initializers/session_store.rb.tt +1 -6
- data/lib/rails/generators/rails/app/templates/config/initializers/wrap_parameters.rb.tt +6 -6
- data/lib/rails/generators/rails/app/templates/config/locales/en.yml +20 -2
- data/lib/rails/generators/rails/app/templates/config/routes.rb +15 -24
- data/lib/rails/generators/rails/app/templates/db/seeds.rb.tt +2 -2
- data/lib/rails/generators/rails/app/templates/gitignore +3 -2
- data/lib/rails/generators/rails/app/templates/public/404.html +2 -1
- data/lib/rails/generators/rails/app/templates/public/422.html +1 -1
- data/lib/rails/generators/rails/app/templates/public/500.html +2 -1
- data/lib/rails/generators/rails/app/templates/public/robots.txt +1 -1
- data/lib/rails/generators/rails/app/templates/test/test_helper.rb +3 -1
- data/lib/rails/generators/rails/assets/assets_generator.rb +5 -5
- data/lib/rails/generators/rails/controller/USAGE +7 -7
- data/lib/rails/generators/rails/controller/controller_generator.rb +3 -3
- data/lib/rails/generators/rails/controller/templates/controller.rb +1 -1
- data/lib/rails/generators/rails/generator/generator_generator.rb +4 -4
- data/lib/rails/generators/rails/helper/USAGE +1 -1
- data/lib/rails/generators/rails/helper/helper_generator.rb +2 -2
- data/lib/rails/generators/rails/integration_test/integration_test_generator.rb +2 -2
- data/lib/rails/generators/rails/migration/USAGE +12 -6
- data/lib/rails/generators/rails/migration/migration_generator.rb +3 -3
- data/lib/rails/generators/rails/model/USAGE +53 -4
- data/lib/rails/generators/rails/model/model_generator.rb +3 -3
- data/lib/rails/generators/rails/plugin_new/plugin_new_generator.rb +81 -39
- data/lib/rails/generators/rails/plugin_new/templates/%name%.gemspec +2 -2
- data/lib/rails/generators/rails/plugin_new/templates/Gemfile +16 -1
- data/lib/rails/generators/rails/plugin_new/templates/Rakefile +3 -9
- data/lib/rails/generators/rails/plugin_new/templates/app/controllers/%name%/application_controller.rb.tt +0 -1
- data/lib/rails/generators/rails/plugin_new/templates/app/views/layouts/%name%/application.html.erb.tt +1 -1
- data/lib/rails/generators/rails/plugin_new/templates/{script → bin}/rails.tt +0 -0
- data/lib/rails/generators/rails/plugin_new/templates/gitignore +3 -0
- data/lib/rails/generators/rails/plugin_new/templates/lib/%name%.rb +1 -1
- data/lib/rails/generators/rails/plugin_new/templates/rails/application.rb +0 -1
- data/lib/rails/generators/rails/plugin_new/templates/rails/boot.rb +0 -1
- data/lib/rails/generators/rails/resource/resource_generator.rb +5 -5
- data/lib/rails/generators/rails/resource_route/resource_route_generator.rb +2 -2
- data/lib/rails/generators/rails/scaffold/scaffold_generator.rb +11 -7
- data/lib/rails/generators/rails/scaffold_controller/USAGE +4 -4
- data/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb +9 -7
- data/lib/rails/generators/rails/scaffold_controller/templates/controller.rb +27 -48
- data/lib/rails/generators/rails/task/task_generator.rb +2 -2
- data/lib/rails/generators/rails/task/templates/task.rb +1 -1
- data/lib/rails/generators/resource_helpers.rb +3 -5
- data/lib/rails/generators/test_case.rb +22 -28
- data/lib/rails/generators/test_unit.rb +3 -3
- data/lib/rails/generators/test_unit/controller/controller_generator.rb +6 -6
- data/lib/rails/generators/test_unit/helper/helper_generator.rb +5 -5
- data/lib/rails/generators/test_unit/integration/integration_generator.rb +4 -4
- data/lib/rails/generators/test_unit/mailer/mailer_generator.rb +6 -6
- data/lib/rails/generators/test_unit/model/model_generator.rb +7 -7
- data/lib/rails/generators/test_unit/model/templates/fixtures.yml +8 -2
- data/lib/rails/generators/test_unit/plugin/plugin_generator.rb +4 -4
- data/lib/rails/generators/test_unit/plugin/templates/test_helper.rb +1 -2
- data/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +10 -19
- data/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb +5 -5
- data/lib/rails/info.rb +3 -3
- data/lib/rails/info_controller.rb +26 -8
- data/lib/rails/initializable.rb +2 -2
- data/lib/rails/paths.rb +59 -54
- data/lib/rails/rack/debugger.rb +2 -2
- data/lib/rails/rack/logger.rb +33 -8
- data/lib/rails/railtie.rb +24 -24
- data/lib/rails/railtie/configurable.rb +1 -1
- data/lib/rails/railtie/configuration.rb +15 -5
- data/lib/rails/ruby_version_check.rb +3 -13
- data/lib/rails/rubyprof_ext.rb +1 -1
- data/lib/rails/source_annotation_extractor.rb +40 -17
- data/lib/rails/tasks/annotations.rake +1 -1
- data/lib/rails/tasks/documentation.rake +10 -57
- data/lib/rails/tasks/engine.rake +1 -1
- data/lib/rails/tasks/framework.rake +9 -9
- data/lib/rails/tasks/log.rake +18 -4
- data/lib/rails/tasks/middleware.rake +1 -1
- data/lib/rails/tasks/misc.rake +2 -9
- data/lib/rails/tasks/routes.rake +4 -6
- data/lib/rails/tasks/statistics.rake +8 -2
- data/lib/rails/tasks/tmp.rake +12 -4
- data/lib/rails/templates/layouts/application.html.erb +36 -0
- data/lib/rails/templates/rails/info/properties.html.erb +1 -0
- data/lib/rails/templates/rails/info/routes.html.erb +9 -0
- data/lib/rails/{generators/rails/app/templates/public/index.html → templates/rails/welcome/index.html.erb} +18 -14
- data/lib/rails/test_help.rb +6 -29
- data/lib/rails/test_unit/railtie.rb +2 -3
- data/lib/rails/test_unit/testing.rake +45 -33
- data/lib/rails/version.rb +4 -4
- data/lib/rails/welcome_controller.rb +7 -0
- metadata +86 -378
- data/guides/assets/images/belongs_to.png +0 -0
- data/guides/assets/images/book_icon.gif +0 -0
- data/guides/assets/images/bullet.gif +0 -0
- data/guides/assets/images/challenge.png +0 -0
- data/guides/assets/images/chapters_icon.gif +0 -0
- data/guides/assets/images/check_bullet.gif +0 -0
- data/guides/assets/images/credits_pic_blank.gif +0 -0
- data/guides/assets/images/csrf.png +0 -0
- data/guides/assets/images/customized_error_messages.png +0 -0
- data/guides/assets/images/edge_badge.png +0 -0
- data/guides/assets/images/error_messages.png +0 -0
- data/guides/assets/images/feature_tile.gif +0 -0
- data/guides/assets/images/footer_tile.gif +0 -0
- data/guides/assets/images/fxn.png +0 -0
- data/guides/assets/images/grey_bullet.gif +0 -0
- data/guides/assets/images/habtm.png +0 -0
- data/guides/assets/images/has_many.png +0 -0
- data/guides/assets/images/has_many_through.png +0 -0
- data/guides/assets/images/has_one.png +0 -0
- data/guides/assets/images/has_one_through.png +0 -0
- data/guides/assets/images/header_backdrop.png +0 -0
- data/guides/assets/images/header_tile.gif +0 -0
- data/guides/assets/images/i18n/demo_html_safe.png +0 -0
- data/guides/assets/images/i18n/demo_localized_pirate.png +0 -0
- data/guides/assets/images/i18n/demo_translated_en.png +0 -0
- data/guides/assets/images/i18n/demo_translated_pirate.png +0 -0
- data/guides/assets/images/i18n/demo_translation_missing.png +0 -0
- data/guides/assets/images/i18n/demo_untranslated.png +0 -0
- data/guides/assets/images/icons/README +0 -5
- data/guides/assets/images/icons/callouts/1.png +0 -0
- data/guides/assets/images/icons/callouts/10.png +0 -0
- data/guides/assets/images/icons/callouts/11.png +0 -0
- data/guides/assets/images/icons/callouts/12.png +0 -0
- data/guides/assets/images/icons/callouts/13.png +0 -0
- data/guides/assets/images/icons/callouts/14.png +0 -0
- data/guides/assets/images/icons/callouts/15.png +0 -0
- data/guides/assets/images/icons/callouts/2.png +0 -0
- data/guides/assets/images/icons/callouts/3.png +0 -0
- data/guides/assets/images/icons/callouts/4.png +0 -0
- data/guides/assets/images/icons/callouts/5.png +0 -0
- data/guides/assets/images/icons/callouts/6.png +0 -0
- data/guides/assets/images/icons/callouts/7.png +0 -0
- data/guides/assets/images/icons/callouts/8.png +0 -0
- data/guides/assets/images/icons/callouts/9.png +0 -0
- data/guides/assets/images/icons/caution.png +0 -0
- data/guides/assets/images/icons/example.png +0 -0
- data/guides/assets/images/icons/home.png +0 -0
- data/guides/assets/images/icons/important.png +0 -0
- data/guides/assets/images/icons/next.png +0 -0
- data/guides/assets/images/icons/note.png +0 -0
- data/guides/assets/images/icons/prev.png +0 -0
- data/guides/assets/images/icons/tip.png +0 -0
- data/guides/assets/images/icons/up.png +0 -0
- data/guides/assets/images/icons/warning.png +0 -0
- data/guides/assets/images/jaimeiniesta.jpg +0 -0
- data/guides/assets/images/nav_arrow.gif +0 -0
- data/guides/assets/images/polymorphic.png +0 -0
- data/guides/assets/images/posts_index.png +0 -0
- data/guides/assets/images/radar.png +0 -0
- data/guides/assets/images/rails_guides_kindle_cover.jpg +0 -0
- data/guides/assets/images/rails_guides_logo.gif +0 -0
- data/guides/assets/images/rails_logo_remix.gif +0 -0
- data/guides/assets/images/rails_welcome.png +0 -0
- data/guides/assets/images/session_fixation.png +0 -0
- data/guides/assets/images/tab_grey.gif +0 -0
- data/guides/assets/images/tab_info.gif +0 -0
- data/guides/assets/images/tab_note.gif +0 -0
- data/guides/assets/images/tab_red.gif +0 -0
- data/guides/assets/images/tab_yellow.gif +0 -0
- data/guides/assets/images/tab_yellow.png +0 -0
- data/guides/assets/images/validation_error_messages.png +0 -0
- data/guides/assets/images/vijaydev.jpg +0 -0
- data/guides/assets/javascripts/guides.js +0 -7
- data/guides/assets/javascripts/syntaxhighlighter/shBrushAS3.js +0 -59
- data/guides/assets/javascripts/syntaxhighlighter/shBrushAppleScript.js +0 -75
- data/guides/assets/javascripts/syntaxhighlighter/shBrushBash.js +0 -59
- data/guides/assets/javascripts/syntaxhighlighter/shBrushCSharp.js +0 -65
- data/guides/assets/javascripts/syntaxhighlighter/shBrushColdFusion.js +0 -100
- data/guides/assets/javascripts/syntaxhighlighter/shBrushCpp.js +0 -97
- data/guides/assets/javascripts/syntaxhighlighter/shBrushCss.js +0 -91
- data/guides/assets/javascripts/syntaxhighlighter/shBrushDelphi.js +0 -55
- data/guides/assets/javascripts/syntaxhighlighter/shBrushDiff.js +0 -41
- data/guides/assets/javascripts/syntaxhighlighter/shBrushErlang.js +0 -52
- data/guides/assets/javascripts/syntaxhighlighter/shBrushGroovy.js +0 -67
- data/guides/assets/javascripts/syntaxhighlighter/shBrushJScript.js +0 -52
- data/guides/assets/javascripts/syntaxhighlighter/shBrushJava.js +0 -57
- data/guides/assets/javascripts/syntaxhighlighter/shBrushJavaFX.js +0 -58
- data/guides/assets/javascripts/syntaxhighlighter/shBrushPerl.js +0 -72
- data/guides/assets/javascripts/syntaxhighlighter/shBrushPhp.js +0 -88
- data/guides/assets/javascripts/syntaxhighlighter/shBrushPlain.js +0 -33
- data/guides/assets/javascripts/syntaxhighlighter/shBrushPowerShell.js +0 -74
- data/guides/assets/javascripts/syntaxhighlighter/shBrushPython.js +0 -64
- data/guides/assets/javascripts/syntaxhighlighter/shBrushRuby.js +0 -55
- data/guides/assets/javascripts/syntaxhighlighter/shBrushSass.js +0 -94
- data/guides/assets/javascripts/syntaxhighlighter/shBrushScala.js +0 -51
- data/guides/assets/javascripts/syntaxhighlighter/shBrushSql.js +0 -66
- data/guides/assets/javascripts/syntaxhighlighter/shBrushVb.js +0 -56
- data/guides/assets/javascripts/syntaxhighlighter/shBrushXml.js +0 -69
- data/guides/assets/javascripts/syntaxhighlighter/shCore.js +0 -17
- data/guides/assets/stylesheets/fixes.css +0 -16
- data/guides/assets/stylesheets/kindle.css +0 -11
- data/guides/assets/stylesheets/main.css +0 -453
- data/guides/assets/stylesheets/print.css +0 -52
- data/guides/assets/stylesheets/reset.css +0 -43
- data/guides/assets/stylesheets/style.css +0 -13
- data/guides/assets/stylesheets/syntaxhighlighter/shCore.css +0 -226
- data/guides/assets/stylesheets/syntaxhighlighter/shCoreDefault.css +0 -328
- data/guides/assets/stylesheets/syntaxhighlighter/shCoreDjango.css +0 -331
- data/guides/assets/stylesheets/syntaxhighlighter/shCoreEclipse.css +0 -339
- data/guides/assets/stylesheets/syntaxhighlighter/shCoreEmacs.css +0 -324
- data/guides/assets/stylesheets/syntaxhighlighter/shCoreFadeToGrey.css +0 -328
- data/guides/assets/stylesheets/syntaxhighlighter/shCoreMDUltra.css +0 -324
- data/guides/assets/stylesheets/syntaxhighlighter/shCoreMidnight.css +0 -324
- data/guides/assets/stylesheets/syntaxhighlighter/shCoreRDark.css +0 -324
- data/guides/assets/stylesheets/syntaxhighlighter/shThemeDefault.css +0 -117
- data/guides/assets/stylesheets/syntaxhighlighter/shThemeDjango.css +0 -120
- data/guides/assets/stylesheets/syntaxhighlighter/shThemeEclipse.css +0 -128
- data/guides/assets/stylesheets/syntaxhighlighter/shThemeEmacs.css +0 -113
- data/guides/assets/stylesheets/syntaxhighlighter/shThemeFadeToGrey.css +0 -117
- data/guides/assets/stylesheets/syntaxhighlighter/shThemeMDUltra.css +0 -113
- data/guides/assets/stylesheets/syntaxhighlighter/shThemeMidnight.css +0 -113
- data/guides/assets/stylesheets/syntaxhighlighter/shThemeRDark.css +0 -113
- data/guides/assets/stylesheets/syntaxhighlighter/shThemeRailsGuides.css +0 -116
- data/guides/code/getting_started/Gemfile +0 -38
- data/guides/code/getting_started/README.rdoc +0 -261
- data/guides/code/getting_started/Rakefile +0 -7
- data/guides/code/getting_started/app/assets/images/rails.png +0 -0
- data/guides/code/getting_started/app/assets/javascripts/application.js +0 -15
- data/guides/code/getting_started/app/assets/javascripts/comments.js.coffee +0 -3
- data/guides/code/getting_started/app/assets/javascripts/home.js.coffee +0 -3
- data/guides/code/getting_started/app/assets/javascripts/posts.js.coffee +0 -3
- data/guides/code/getting_started/app/assets/stylesheets/application.css +0 -13
- data/guides/code/getting_started/app/assets/stylesheets/comments.css.scss +0 -3
- data/guides/code/getting_started/app/assets/stylesheets/home.css.scss +0 -3
- data/guides/code/getting_started/app/assets/stylesheets/posts.css.scss +0 -3
- data/guides/code/getting_started/app/assets/stylesheets/scaffolds.css.scss +0 -56
- data/guides/code/getting_started/app/controllers/application_controller.rb +0 -3
- data/guides/code/getting_started/app/controllers/comments_controller.rb +0 -16
- data/guides/code/getting_started/app/controllers/home_controller.rb +0 -5
- data/guides/code/getting_started/app/controllers/posts_controller.rb +0 -84
- data/guides/code/getting_started/app/helpers/application_helper.rb +0 -2
- data/guides/code/getting_started/app/helpers/comments_helper.rb +0 -2
- data/guides/code/getting_started/app/helpers/home_helper.rb +0 -2
- data/guides/code/getting_started/app/helpers/posts_helper.rb +0 -5
- data/guides/code/getting_started/app/models/comment.rb +0 -3
- data/guides/code/getting_started/app/models/post.rb +0 -11
- data/guides/code/getting_started/app/models/tag.rb +0 -3
- data/guides/code/getting_started/app/views/comments/_comment.html.erb +0 -15
- data/guides/code/getting_started/app/views/comments/_form.html.erb +0 -13
- data/guides/code/getting_started/app/views/home/index.html.erb +0 -2
- data/guides/code/getting_started/app/views/layouts/application.html.erb +0 -14
- data/guides/code/getting_started/app/views/posts/_form.html.erb +0 -32
- data/guides/code/getting_started/app/views/posts/edit.html.erb +0 -6
- data/guides/code/getting_started/app/views/posts/index.html.erb +0 -27
- data/guides/code/getting_started/app/views/posts/new.html.erb +0 -5
- data/guides/code/getting_started/app/views/posts/show.html.erb +0 -31
- data/guides/code/getting_started/app/views/tags/_form.html.erb +0 -12
- data/guides/code/getting_started/config.ru +0 -4
- data/guides/code/getting_started/config/application.rb +0 -59
- data/guides/code/getting_started/config/boot.rb +0 -6
- data/guides/code/getting_started/config/database.yml +0 -25
- data/guides/code/getting_started/config/environment.rb +0 -5
- data/guides/code/getting_started/config/environments/development.rb +0 -37
- data/guides/code/getting_started/config/environments/production.rb +0 -67
- data/guides/code/getting_started/config/environments/test.rb +0 -37
- data/guides/code/getting_started/config/initializers/backtrace_silencers.rb +0 -7
- data/guides/code/getting_started/config/initializers/inflections.rb +0 -15
- data/guides/code/getting_started/config/initializers/mime_types.rb +0 -5
- data/guides/code/getting_started/config/initializers/secret_token.rb +0 -7
- data/guides/code/getting_started/config/initializers/session_store.rb +0 -8
- data/guides/code/getting_started/config/initializers/wrap_parameters.rb +0 -14
- data/guides/code/getting_started/config/locales/en.yml +0 -5
- data/guides/code/getting_started/config/routes.rb +0 -64
- data/guides/code/getting_started/db/migrate/20110901012504_create_posts.rb +0 -11
- data/guides/code/getting_started/db/migrate/20110901012815_create_comments.rb +0 -12
- data/guides/code/getting_started/db/migrate/20110901013701_create_tags.rb +0 -11
- data/guides/code/getting_started/db/schema.rb +0 -43
- data/guides/code/getting_started/db/seeds.rb +0 -7
- data/guides/code/getting_started/doc/README_FOR_APP +0 -2
- data/guides/code/getting_started/public/404.html +0 -26
- data/guides/code/getting_started/public/422.html +0 -26
- data/guides/code/getting_started/public/500.html +0 -25
- data/guides/code/getting_started/public/favicon.ico +0 -0
- data/guides/code/getting_started/public/robots.txt +0 -5
- data/guides/code/getting_started/script/rails +0 -6
- data/guides/code/getting_started/test/fixtures/comments.yml +0 -11
- data/guides/code/getting_started/test/fixtures/posts.yml +0 -11
- data/guides/code/getting_started/test/fixtures/tags.yml +0 -9
- data/guides/code/getting_started/test/functional/comments_controller_test.rb +0 -7
- data/guides/code/getting_started/test/functional/home_controller_test.rb +0 -9
- data/guides/code/getting_started/test/functional/posts_controller_test.rb +0 -49
- data/guides/code/getting_started/test/performance/browsing_test.rb +0 -12
- data/guides/code/getting_started/test/test_helper.rb +0 -13
- data/guides/code/getting_started/test/unit/comment_test.rb +0 -7
- data/guides/code/getting_started/test/unit/helpers/comments_helper_test.rb +0 -4
- data/guides/code/getting_started/test/unit/helpers/home_helper_test.rb +0 -4
- data/guides/code/getting_started/test/unit/helpers/posts_helper_test.rb +0 -4
- data/guides/code/getting_started/test/unit/post_test.rb +0 -7
- data/guides/code/getting_started/test/unit/tag_test.rb +0 -7
- data/guides/rails_guides.rb +0 -50
- data/guides/rails_guides/generator.rb +0 -310
- data/guides/rails_guides/helpers.rb +0 -45
- data/guides/rails_guides/indexer.rb +0 -69
- data/guides/rails_guides/levenshtein.rb +0 -31
- data/guides/rails_guides/textile_extensions.rb +0 -63
- data/guides/source/2_2_release_notes.textile +0 -422
- data/guides/source/2_3_release_notes.textile +0 -610
- data/guides/source/3_0_release_notes.textile +0 -595
- data/guides/source/3_1_release_notes.textile +0 -553
- data/guides/source/3_2_release_notes.textile +0 -540
- data/guides/source/_license.html.erb +0 -2
- data/guides/source/_welcome.html.erb +0 -19
- data/guides/source/action_controller_overview.textile +0 -820
- data/guides/source/action_mailer_basics.textile +0 -516
- data/guides/source/action_view_overview.textile +0 -1497
- data/guides/source/active_model_basics.textile +0 -205
- data/guides/source/active_record_basics.textile +0 -218
- data/guides/source/active_record_querying.textile +0 -1433
- data/guides/source/active_record_validations_callbacks.textile +0 -1287
- data/guides/source/active_resource_basics.textile +0 -120
- data/guides/source/active_support_core_extensions.textile +0 -3715
- data/guides/source/api_documentation_guidelines.textile +0 -185
- data/guides/source/asset_pipeline.textile +0 -707
- data/guides/source/association_basics.textile +0 -1959
- data/guides/source/caching_with_rails.textile +0 -437
- data/guides/source/command_line.textile +0 -574
- data/guides/source/configuring.textile +0 -643
- data/guides/source/contributing_to_ruby_on_rails.textile +0 -448
- data/guides/source/credits.html.erb +0 -72
- data/guides/source/debugging_rails_applications.textile +0 -714
- data/guides/source/documents.yaml +0 -157
- data/guides/source/engines.textile +0 -618
- data/guides/source/form_helpers.textile +0 -798
- data/guides/source/generators.textile +0 -621
- data/guides/source/getting_started.textile +0 -1931
- data/guides/source/i18n.textile +0 -931
- data/guides/source/index.html.erb +0 -30
- data/guides/source/initialization.textile +0 -1116
- data/guides/source/kindle/KINDLE.md +0 -26
- data/guides/source/kindle/copyright.html.erb +0 -1
- data/guides/source/kindle/layout.html.erb +0 -27
- data/guides/source/kindle/rails_guides.opf.erb +0 -52
- data/guides/source/kindle/toc.html.erb +0 -24
- data/guides/source/kindle/toc.ncx.erb +0 -64
- data/guides/source/kindle/welcome.html.erb +0 -5
- data/guides/source/layout.html.erb +0 -124
- data/guides/source/layouts_and_rendering.textile +0 -1237
- data/guides/source/migrations.textile +0 -900
- data/guides/source/nested_model_forms.textile +0 -222
- data/guides/source/performance_testing.textile +0 -597
- data/guides/source/plugins.textile +0 -464
- data/guides/source/rails_application_templates.textile +0 -240
- data/guides/source/rails_on_rack.textile +0 -236
- data/guides/source/routing.textile +0 -885
- data/guides/source/ruby_on_rails_guides_guidelines.textile +0 -79
- data/guides/source/security.textile +0 -1004
- data/guides/source/testing.textile +0 -947
- data/guides/w3c_validator.rb +0 -91
- data/lib/rails/application/railties.rb +0 -13
- data/lib/rails/application/route_inspector.rb +0 -84
- data/lib/rails/commands/benchmarker.rb +0 -34
- data/lib/rails/commands/plugin.rb +0 -544
- data/lib/rails/commands/profiler.rb +0 -33
- data/lib/rails/generators/rails/app/templates/README +0 -261
- data/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb +0 -3
- data/lib/rails/generators/rails/app/templates/app/mailers/.empty_directory +0 -0
- data/lib/rails/generators/rails/app/templates/app/models/.empty_directory +0 -0
- data/lib/rails/generators/rails/app/templates/doc/README_FOR_APP +0 -2
- data/lib/rails/generators/rails/app/templates/public/stylesheets/.empty_directory +0 -0
- data/lib/rails/generators/rails/app/templates/script/rails +0 -5
- data/lib/rails/generators/rails/app/templates/test/fixtures/.empty_directory +0 -0
- data/lib/rails/generators/rails/app/templates/test/functional/.empty_directory +0 -0
- data/lib/rails/generators/rails/app/templates/test/integration/.empty_directory +0 -0
- data/lib/rails/generators/rails/app/templates/test/performance/browsing_test.rb +0 -12
- data/lib/rails/generators/rails/app/templates/test/unit/.empty_directory +0 -0
- data/lib/rails/generators/rails/generator/templates/templates/.empty_directory +0 -0
- data/lib/rails/generators/rails/observer/USAGE +0 -12
- data/lib/rails/generators/rails/observer/observer_generator.rb +0 -7
- data/lib/rails/generators/rails/performance_test/USAGE +0 -10
- data/lib/rails/generators/rails/performance_test/performance_test_generator.rb +0 -7
- data/lib/rails/generators/rails/plugin_new/templates/app/mailers/.empty_directory +0 -0
- data/lib/rails/generators/rails/plugin_new/templates/app/models/.empty_directory +0 -0
- data/lib/rails/generators/rails/session_migration/USAGE +0 -8
- data/lib/rails/generators/rails/session_migration/session_migration_generator.rb +0 -8
- data/lib/rails/generators/test_unit/observer/observer_generator.rb +0 -13
- data/lib/rails/generators/test_unit/observer/templates/unit_test.rb +0 -9
- data/lib/rails/generators/test_unit/performance/performance_generator.rb +0 -13
- data/lib/rails/generators/test_unit/performance/templates/performance_test.rb +0 -12
- data/lib/rails/performance_test_help.rb +0 -3
- data/lib/rails/plugin.rb +0 -92
- data/lib/rails/script_rails_loader.rb +0 -29
@@ -1,10 +1,9 @@
|
|
1
1
|
require 'rails/generators'
|
2
|
-
require 'active_support/core_ext/object/inclusion'
|
3
2
|
|
4
|
-
if
|
3
|
+
if [nil, "-h", "--help"].include?(ARGV.first)
|
5
4
|
Rails::Generators.help 'destroy'
|
6
5
|
exit
|
7
6
|
end
|
8
7
|
|
9
8
|
name = ARGV.shift
|
10
|
-
Rails::Generators.invoke name, ARGV, :
|
9
|
+
Rails::Generators.invoke name, ARGV, behavior: :revoke, destination_root: Rails.root
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'rails/generators'
|
2
|
-
require 'active_support/core_ext/object/inclusion'
|
3
2
|
|
4
|
-
if
|
3
|
+
if [nil, "-h", "--help"].include?(ARGV.first)
|
5
4
|
Rails::Generators.help 'generate'
|
6
5
|
exit
|
7
6
|
end
|
@@ -9,4 +8,4 @@ end
|
|
9
8
|
name = ARGV.shift
|
10
9
|
|
11
10
|
root = defined?(ENGINE_ROOT) ? ENGINE_ROOT : Rails.root
|
12
|
-
Rails::Generators.invoke name, ARGV, :
|
11
|
+
Rails::Generators.invoke name, ARGV, behavior: :invoke, destination_root: root
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'optparse'
|
2
2
|
require 'rbconfig'
|
3
3
|
|
4
|
-
options = { :
|
4
|
+
options = { environment: (ENV['RAILS_ENV'] || ENV['RACK_ENV'] || "development").dup }
|
5
5
|
code_or_file = nil
|
6
6
|
|
7
7
|
if ARGV.first.nil?
|
@@ -9,8 +9,7 @@ if ARGV.first.nil?
|
|
9
9
|
end
|
10
10
|
|
11
11
|
ARGV.clone.options do |opts|
|
12
|
-
|
13
|
-
opts.banner = "Usage: runner [options] ('Some.ruby(code)' or a filename)"
|
12
|
+
opts.banner = "Usage: rails runner [options] ('Some.ruby(code)' or a filename)"
|
14
13
|
|
15
14
|
opts.separator ""
|
16
15
|
|
@@ -25,7 +24,7 @@ ARGV.clone.options do |opts|
|
|
25
24
|
|
26
25
|
if RbConfig::CONFIG['host_os'] !~ /mswin|mingw/
|
27
26
|
opts.separator ""
|
28
|
-
opts.separator "You can also use runner as a shebang line for your
|
27
|
+
opts.separator "You can also use runner as a shebang line for your executables:"
|
29
28
|
opts.separator "-------------------------------------------------------------"
|
30
29
|
opts.separator "#!/usr/bin/env #{File.expand_path($0)} runner"
|
31
30
|
opts.separator ""
|
@@ -42,7 +41,7 @@ ENV["RAILS_ENV"] = options[:environment]
|
|
42
41
|
|
43
42
|
require APP_PATH
|
44
43
|
Rails.application.require_environment!
|
45
|
-
|
44
|
+
Rails.application.load_runner
|
46
45
|
|
47
46
|
if code_or_file.nil?
|
48
47
|
$stderr.puts "Run '#{$0} -h' for help."
|
@@ -17,7 +17,7 @@ module Rails
|
|
17
17
|
opts.on("-c", "--config=file", String,
|
18
18
|
"Use custom rackup configuration file") { |v| options[:config] = v }
|
19
19
|
opts.on("-d", "--daemon", "Make server run as a Daemon.") { options[:daemonize] = true }
|
20
|
-
opts.on("-u", "--debugger", "Enable
|
20
|
+
opts.on("-u", "--debugger", "Enable the debugger") { options[:debugger] = true }
|
21
21
|
opts.on("-e", "--environment=name", String,
|
22
22
|
"Specifies the environment to run this server under (test/development/production).",
|
23
23
|
"Default: development") { |v| options[:environment] = v }
|
@@ -64,7 +64,17 @@ module Rails
|
|
64
64
|
|
65
65
|
#Create required tmp directories if not found
|
66
66
|
%w(cache pids sessions sockets).each do |dir_to_make|
|
67
|
-
FileUtils.mkdir_p(Rails.root
|
67
|
+
FileUtils.mkdir_p(File.join(Rails.root, 'tmp', dir_to_make))
|
68
|
+
end
|
69
|
+
|
70
|
+
unless options[:daemonize]
|
71
|
+
wrapped_app # touch the app so the logger is set up
|
72
|
+
|
73
|
+
console = ActiveSupport::Logger.new($stdout)
|
74
|
+
console.formatter = Rails.logger.formatter
|
75
|
+
console.level = Rails.logger.level
|
76
|
+
|
77
|
+
Rails.logger.extend(ActiveSupport::Logger.broadcast(console))
|
68
78
|
end
|
69
79
|
|
70
80
|
super
|
@@ -76,9 +86,17 @@ module Rails
|
|
76
86
|
|
77
87
|
def middleware
|
78
88
|
middlewares = []
|
79
|
-
middlewares << [Rails::Rack::LogTailer, log_path] unless options[:daemonize]
|
80
89
|
middlewares << [Rails::Rack::Debugger] if options[:debugger]
|
81
90
|
middlewares << [::Rack::ContentLength]
|
91
|
+
|
92
|
+
# FIXME: add Rack::Lock in the case people are using webrick.
|
93
|
+
# This is to remain backwards compatible for those who are
|
94
|
+
# running webrick in production. We should consider removing this
|
95
|
+
# in development.
|
96
|
+
if server.name == 'Rack::Handler::WEBrick'
|
97
|
+
middlewares << [::Rack::Lock]
|
98
|
+
end
|
99
|
+
|
82
100
|
Hash.new(middlewares)
|
83
101
|
end
|
84
102
|
|
@@ -88,12 +106,13 @@ module Rails
|
|
88
106
|
|
89
107
|
def default_options
|
90
108
|
super.merge({
|
91
|
-
:
|
92
|
-
:
|
93
|
-
:
|
94
|
-
:
|
95
|
-
:
|
96
|
-
:
|
109
|
+
Port: 3000,
|
110
|
+
DoNotReverseLookup: true,
|
111
|
+
environment: (ENV['RAILS_ENV'] || ENV['RACK_ENV'] || "development").dup,
|
112
|
+
daemonize: false,
|
113
|
+
debugger: false,
|
114
|
+
pid: File.expand_path("tmp/pids/server.pid"),
|
115
|
+
config: File.expand_path("config.ru")
|
97
116
|
})
|
98
117
|
end
|
99
118
|
end
|
data/lib/rails/configuration.rb
CHANGED
@@ -1,39 +1,66 @@
|
|
1
1
|
require 'active_support/deprecation'
|
2
2
|
require 'active_support/ordered_options'
|
3
|
-
require 'active_support/core_ext/
|
3
|
+
require 'active_support/core_ext/object'
|
4
4
|
require 'rails/paths'
|
5
5
|
require 'rails/rack'
|
6
6
|
|
7
7
|
module Rails
|
8
8
|
module Configuration
|
9
|
-
|
9
|
+
# MiddlewareStackProxy is a proxy for the Rails middleware stack that allows
|
10
|
+
# you to configure middlewares in your application. It works basically as a
|
11
|
+
# command recorder, saving each command to be applied after initialization
|
12
|
+
# over the default middleware stack, so you can add, swap, or remove any
|
13
|
+
# middleware in Rails.
|
14
|
+
#
|
15
|
+
# You can add your own middlewares by using the +config.middleware.use+ method:
|
16
|
+
#
|
17
|
+
# config.middleware.use Magical::Unicorns
|
18
|
+
#
|
19
|
+
# This will put the <tt>Magical::Unicorns</tt> middleware on the end of the stack.
|
20
|
+
# You can use +insert_before+ if you wish to add a middleware before another:
|
21
|
+
#
|
22
|
+
# config.middleware.insert_before ActionDispatch::Head, Magical::Unicorns
|
23
|
+
#
|
24
|
+
# There's also +insert_after+ which will insert a middleware after another:
|
25
|
+
#
|
26
|
+
# config.middleware.insert_after ActionDispatch::Head, Magical::Unicorns
|
27
|
+
#
|
28
|
+
# Middlewares can also be completely swapped out and replaced with others:
|
29
|
+
#
|
30
|
+
# config.middleware.swap ActionDispatch::Flash, Magical::Unicorns
|
31
|
+
#
|
32
|
+
# And finally they can also be removed from the stack completely:
|
33
|
+
#
|
34
|
+
# config.middleware.delete ActionDispatch::Flash
|
35
|
+
#
|
36
|
+
class MiddlewareStackProxy
|
10
37
|
def initialize
|
11
38
|
@operations = []
|
12
39
|
end
|
13
40
|
|
14
41
|
def insert_before(*args, &block)
|
15
|
-
@operations << [
|
42
|
+
@operations << [__method__, args, block]
|
16
43
|
end
|
17
44
|
|
18
45
|
alias :insert :insert_before
|
19
46
|
|
20
47
|
def insert_after(*args, &block)
|
21
|
-
@operations << [
|
48
|
+
@operations << [__method__, args, block]
|
22
49
|
end
|
23
50
|
|
24
51
|
def swap(*args, &block)
|
25
|
-
@operations << [
|
52
|
+
@operations << [__method__, args, block]
|
26
53
|
end
|
27
54
|
|
28
55
|
def use(*args, &block)
|
29
|
-
@operations << [
|
56
|
+
@operations << [__method__, args, block]
|
30
57
|
end
|
31
58
|
|
32
59
|
def delete(*args, &block)
|
33
|
-
@operations << [
|
60
|
+
@operations << [__method__, args, block]
|
34
61
|
end
|
35
62
|
|
36
|
-
def merge_into(other)
|
63
|
+
def merge_into(other) #:nodoc:
|
37
64
|
@operations.each do |operation, args, block|
|
38
65
|
other.send(operation, *args, &block)
|
39
66
|
end
|
data/lib/rails/console/app.rb
CHANGED
@@ -1,10 +1,6 @@
|
|
1
1
|
require 'active_support/all'
|
2
|
-
require 'active_support/test_case'
|
3
2
|
require 'action_controller'
|
4
3
|
|
5
|
-
# work around the at_exit hook in test/unit, which kills IRB
|
6
|
-
Test::Unit.run = true if Test::Unit.respond_to?(:run=)
|
7
|
-
|
8
4
|
module Rails
|
9
5
|
module ConsoleMethods
|
10
6
|
# reference the global "app" instance, created on demand. To recreate the
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'active_support/deprecation/proxy_wrappers'
|
2
|
+
|
3
|
+
module Rails
|
4
|
+
class DeprecatedConstant < ActiveSupport::Deprecation::DeprecatedConstantProxy
|
5
|
+
def self.deprecate(old, current)
|
6
|
+
# double assignment is used to avoid "assigned but unused variable" warning
|
7
|
+
constant = constant = new(old, current)
|
8
|
+
eval "::#{old} = constant"
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def target
|
14
|
+
::Kernel.eval @new_const.to_s
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
DeprecatedConstant.deprecate('RAILS_CACHE', '::Rails.cache')
|
19
|
+
end
|
data/lib/rails/engine.rb
CHANGED
@@ -2,12 +2,11 @@ require 'rails/railtie'
|
|
2
2
|
require 'active_support/core_ext/module/delegation'
|
3
3
|
require 'pathname'
|
4
4
|
require 'rbconfig'
|
5
|
-
require 'rails/engine/railties'
|
6
5
|
|
7
6
|
module Rails
|
8
7
|
# <tt>Rails::Engine</tt> allows you to wrap a specific Rails application or subset of
|
9
|
-
# functionality and share it with other applications
|
10
|
-
# <tt>Rails::Application</tt> is just an engine, which allows for simple
|
8
|
+
# functionality and share it with other applications or within a larger packaged application.
|
9
|
+
# Since Rails 3.0, every <tt>Rails::Application</tt> is just an engine, which allows for simple
|
11
10
|
# feature and application sharing.
|
12
11
|
#
|
13
12
|
# Any <tt>Rails::Engine</tt> is also a <tt>Rails::Railtie</tt>, so the same
|
@@ -39,8 +38,6 @@ module Rails
|
|
39
38
|
# and <tt>autoload_once_paths</tt>, which, differently from a <tt>Railtie</tt>, are scoped to
|
40
39
|
# the current engine.
|
41
40
|
#
|
42
|
-
# Example:
|
43
|
-
#
|
44
41
|
# class MyEngine < Rails::Engine
|
45
42
|
# # Add a load path for this specific Engine
|
46
43
|
# config.autoload_paths << File.expand_path("../lib/some/path", __FILE__)
|
@@ -109,7 +106,7 @@ module Rails
|
|
109
106
|
#
|
110
107
|
# The <tt>Application</tt> class adds a couple more paths to this set. And as in your
|
111
108
|
# <tt>Application</tt>, all folders under +app+ are automatically added to the load path.
|
112
|
-
# If you have an <tt>app/
|
109
|
+
# If you have an <tt>app/services/tt> folder for example, it will be added by default.
|
113
110
|
#
|
114
111
|
# == Endpoint
|
115
112
|
#
|
@@ -148,7 +145,7 @@ module Rails
|
|
148
145
|
#
|
149
146
|
# # ENGINE/config/routes.rb
|
150
147
|
# MyEngine::Engine.routes.draw do
|
151
|
-
#
|
148
|
+
# get "/" => "posts#index"
|
152
149
|
# end
|
153
150
|
#
|
154
151
|
# == Mount priority
|
@@ -158,7 +155,7 @@ module Rails
|
|
158
155
|
#
|
159
156
|
# MyRailsApp::Application.routes.draw do
|
160
157
|
# mount MyEngine::Engine => "/blog"
|
161
|
-
#
|
158
|
+
# get "/blog/omg" => "main#omg"
|
162
159
|
# end
|
163
160
|
#
|
164
161
|
# +MyEngine+ is mounted at <tt>/blog</tt>, and <tt>/blog/omg</tt> points to application's
|
@@ -167,7 +164,7 @@ module Rails
|
|
167
164
|
# It's much better to swap that:
|
168
165
|
#
|
169
166
|
# MyRailsApp::Application.routes.draw do
|
170
|
-
#
|
167
|
+
# get "/blog/omg" => "main#omg"
|
171
168
|
# mount MyEngine::Engine => "/blog"
|
172
169
|
# end
|
173
170
|
#
|
@@ -178,9 +175,8 @@ module Rails
|
|
178
175
|
# There are some places where an Engine's name is used:
|
179
176
|
#
|
180
177
|
# * routes: when you mount an Engine with <tt>mount(MyEngine::Engine => '/my_engine')</tt>,
|
181
|
-
# it's used as default
|
182
|
-
# *
|
183
|
-
# <tt>my_engine:install:assets</tt>
|
178
|
+
# it's used as default <tt>:as</tt> option
|
179
|
+
# * rake task for installing migrations <tt>my_engine:install:migrations</tt>
|
184
180
|
#
|
185
181
|
# Engine name is set by default based on class name. For <tt>MyEngine::Engine</tt> it will be
|
186
182
|
# <tt>my_engine_engine</tt>. You can change it manually using the <tt>engine_name</tt> method:
|
@@ -228,7 +224,7 @@ module Rails
|
|
228
224
|
# resources :articles
|
229
225
|
# end
|
230
226
|
#
|
231
|
-
# The routes above will automatically point to <tt>MyEngine::
|
227
|
+
# The routes above will automatically point to <tt>MyEngine::ArticlesController</tt>. Furthermore, you don't
|
232
228
|
# need to use longer url helpers like <tt>my_engine_articles_path</tt>. Instead, you should simply use
|
233
229
|
# <tt>articles_path</tt> as you would do with your application.
|
234
230
|
#
|
@@ -255,8 +251,8 @@ module Rails
|
|
255
251
|
#
|
256
252
|
# # config/routes.rb
|
257
253
|
# MyApplication::Application.routes.draw do
|
258
|
-
# mount MyEngine::Engine => "/my_engine", :
|
259
|
-
#
|
254
|
+
# mount MyEngine::Engine => "/my_engine", as: "my_engine"
|
255
|
+
# get "/foo" => "foo#index"
|
260
256
|
# end
|
261
257
|
#
|
262
258
|
# Now, you can use the <tt>my_engine</tt> helper inside your application:
|
@@ -300,7 +296,7 @@ module Rails
|
|
300
296
|
# helper MyEngine::SharedEngineHelper
|
301
297
|
# end
|
302
298
|
#
|
303
|
-
# If you want to include all of the engine's helpers, you can use #
|
299
|
+
# If you want to include all of the engine's helpers, you can use #helper method on an engine's
|
304
300
|
# instance:
|
305
301
|
#
|
306
302
|
# class ApplicationController < ActionController::Base
|
@@ -326,40 +322,33 @@ module Rails
|
|
326
322
|
# migration in the application and rerun copying migrations.
|
327
323
|
#
|
328
324
|
# If your engine has migrations, you may also want to prepare data for the database in
|
329
|
-
# the <tt>seeds.rb</tt> file. You can load that data using the <tt>load_seed</tt> method, e.g.
|
325
|
+
# the <tt>db/seeds.rb</tt> file. You can load that data using the <tt>load_seed</tt> method, e.g.
|
330
326
|
#
|
331
327
|
# MyEngine::Engine.load_seed
|
332
328
|
#
|
333
329
|
# == Loading priority
|
334
330
|
#
|
335
|
-
# In order to change engine's priority you can use config.railties_order in main application.
|
331
|
+
# In order to change engine's priority you can use +config.railties_order+ in main application.
|
336
332
|
# It will affect the priority of loading views, helpers, assets and all the other files
|
337
333
|
# related to engine or application.
|
338
334
|
#
|
339
|
-
# Example:
|
340
|
-
#
|
341
335
|
# # load Blog::Engine with highest priority, followed by application and other railties
|
342
336
|
# config.railties_order = [Blog::Engine, :main_app, :all]
|
343
|
-
#
|
344
337
|
class Engine < Railtie
|
345
338
|
autoload :Configuration, "rails/engine/configuration"
|
346
|
-
autoload :Railties, "rails/engine/railties"
|
347
|
-
|
348
|
-
def load_generators(app=self)
|
349
|
-
initialize_generators
|
350
|
-
railties.all { |r| r.load_generators(app) }
|
351
|
-
Rails::Generators.configure!(app.config.generators)
|
352
|
-
super
|
353
|
-
self
|
354
|
-
end
|
355
339
|
|
356
340
|
class << self
|
357
341
|
attr_accessor :called_from, :isolated
|
342
|
+
|
358
343
|
alias :isolated? :isolated
|
359
344
|
alias :engine_name :railtie_name
|
360
345
|
|
346
|
+
delegate :eager_load!, to: :instance
|
347
|
+
|
361
348
|
def inherited(base)
|
362
349
|
unless base.abstract_railtie?
|
350
|
+
Rails::Railtie::Configuration.eager_load_namespaces << base
|
351
|
+
|
363
352
|
base.called_from = begin
|
364
353
|
# Remove the line number from backtraces making sure we don't leave anything behind
|
365
354
|
call_stack = caller.map { |p| p.sub(/:\d+.*/, '') }
|
@@ -379,7 +368,7 @@ module Rails
|
|
379
368
|
def isolate_namespace(mod)
|
380
369
|
engine_name(generate_railtie_name(mod))
|
381
370
|
|
382
|
-
self.routes.default_scope = { :
|
371
|
+
self.routes.default_scope = { module: ActiveSupport::Inflector.underscore(mod.name) }
|
383
372
|
self.isolated = true
|
384
373
|
|
385
374
|
unless mod.respond_to?(:railtie_namespace)
|
@@ -401,7 +390,7 @@ module Rails
|
|
401
390
|
end
|
402
391
|
|
403
392
|
unless mod.respond_to?(:railtie_routes_url_helpers)
|
404
|
-
define_method(:railtie_routes_url_helpers) { railtie.
|
393
|
+
define_method(:railtie_routes_url_helpers) { railtie.routes.url_helpers }
|
405
394
|
end
|
406
395
|
end
|
407
396
|
end
|
@@ -409,35 +398,66 @@ module Rails
|
|
409
398
|
|
410
399
|
# Finds engine with given path
|
411
400
|
def find(path)
|
412
|
-
expanded_path = File.expand_path path
|
413
|
-
Rails::Engine
|
414
|
-
|
415
|
-
|
401
|
+
expanded_path = File.expand_path path
|
402
|
+
Rails::Engine.subclasses.each do |klass|
|
403
|
+
engine = klass.instance
|
404
|
+
return engine if File.expand_path(engine.root) == expanded_path
|
405
|
+
end
|
406
|
+
nil
|
416
407
|
end
|
417
408
|
end
|
418
409
|
|
419
|
-
delegate :middleware, :root, :paths, :
|
420
|
-
delegate :engine_name, :isolated?, :
|
410
|
+
delegate :middleware, :root, :paths, to: :config
|
411
|
+
delegate :engine_name, :isolated?, to: :class
|
421
412
|
|
422
|
-
def
|
423
|
-
|
413
|
+
def initialize
|
414
|
+
@_all_autoload_paths = nil
|
415
|
+
@_all_load_paths = nil
|
416
|
+
@app = nil
|
417
|
+
@config = nil
|
418
|
+
@env_config = nil
|
419
|
+
@helpers = nil
|
420
|
+
@routes = nil
|
424
421
|
super
|
425
|
-
paths["lib/tasks"].existent.sort.each { |ext| load(ext) }
|
426
422
|
end
|
427
423
|
|
424
|
+
# Load console and invoke the registered hooks.
|
425
|
+
# Check <tt>Rails::Railtie.console</tt> for more info.
|
428
426
|
def load_console(app=self)
|
429
|
-
|
430
|
-
|
427
|
+
require "pp"
|
428
|
+
require "rails/console/app"
|
429
|
+
require "rails/console/helpers"
|
430
|
+
run_console_blocks(app)
|
431
|
+
self
|
431
432
|
end
|
432
433
|
|
434
|
+
# Load Rails runner and invoke the registered hooks.
|
435
|
+
# Check <tt>Rails::Railtie.runner</tt> for more info.
|
433
436
|
def load_runner(app=self)
|
434
|
-
|
435
|
-
|
437
|
+
run_runner_blocks(app)
|
438
|
+
self
|
436
439
|
end
|
437
440
|
|
438
|
-
|
439
|
-
|
441
|
+
# Load Rake, railties tasks and invoke the registered hooks.
|
442
|
+
# Check <tt>Rails::Railtie.rake_tasks</tt> for more info.
|
443
|
+
def load_tasks(app=self)
|
444
|
+
require "rake"
|
445
|
+
run_tasks_blocks(app)
|
446
|
+
self
|
447
|
+
end
|
440
448
|
|
449
|
+
# Load rails generators and invoke the registered hooks.
|
450
|
+
# Check <tt>Rails::Railtie.generators</tt> for more info.
|
451
|
+
def load_generators(app=self)
|
452
|
+
require "rails/generators"
|
453
|
+
run_generators_blocks(app)
|
454
|
+
Rails::Generators.configure!(app.config.generators)
|
455
|
+
self
|
456
|
+
end
|
457
|
+
|
458
|
+
# Eager load the application by loading all ruby
|
459
|
+
# files inside eager_load paths.
|
460
|
+
def eager_load!
|
441
461
|
config.eager_load_paths.each do |load_path|
|
442
462
|
matcher = /\A#{Regexp.escape(load_path)}\/(.*)\.rb\Z/
|
443
463
|
Dir.glob("#{load_path}/**/*.rb").sort.each do |file|
|
@@ -447,9 +467,10 @@ module Rails
|
|
447
467
|
end
|
448
468
|
|
449
469
|
def railties
|
450
|
-
@railties ||= self.class::Railties.new
|
470
|
+
@railties ||= self.class::Railties.new
|
451
471
|
end
|
452
472
|
|
473
|
+
# Returns a module with all the helpers defined for the engine.
|
453
474
|
def helpers
|
454
475
|
@helpers ||= begin
|
455
476
|
helpers = Module.new
|
@@ -461,14 +482,12 @@ module Rails
|
|
461
482
|
end
|
462
483
|
end
|
463
484
|
|
485
|
+
# Returns all registered helpers paths.
|
464
486
|
def helpers_paths
|
465
487
|
paths["app/helpers"].existent
|
466
488
|
end
|
467
489
|
|
468
|
-
|
469
|
-
routes.url_helpers
|
470
|
-
end
|
471
|
-
|
490
|
+
# Returns the underlying rack application for this engine.
|
472
491
|
def app
|
473
492
|
@app ||= begin
|
474
493
|
config.middleware = config.middleware.merge_into(default_middleware_stack)
|
@@ -476,42 +495,37 @@ module Rails
|
|
476
495
|
end
|
477
496
|
end
|
478
497
|
|
498
|
+
# Returns the endpoint for this engine. If none is registered,
|
499
|
+
# defaults to an ActionDispatch::Routing::RouteSet.
|
479
500
|
def endpoint
|
480
501
|
self.class.endpoint || routes
|
481
502
|
end
|
482
503
|
|
504
|
+
# Define the Rack API for this engine.
|
483
505
|
def call(env)
|
484
|
-
|
506
|
+
env.merge!(env_config)
|
507
|
+
if env['SCRIPT_NAME']
|
508
|
+
env.merge! "ROUTES_#{routes.object_id}_SCRIPT_NAME" => env['SCRIPT_NAME'].dup
|
509
|
+
end
|
510
|
+
app.call(env)
|
485
511
|
end
|
486
512
|
|
513
|
+
# Defines additional Rack env configuration that is added on each call.
|
487
514
|
def env_config
|
488
515
|
@env_config ||= {
|
489
516
|
'action_dispatch.routes' => routes
|
490
517
|
}
|
491
518
|
end
|
492
519
|
|
520
|
+
# Defines the routes for this engine. If a block is given to
|
521
|
+
# routes, it is appended to the engine.
|
493
522
|
def routes
|
494
523
|
@routes ||= ActionDispatch::Routing::RouteSet.new
|
495
524
|
@routes.append(&Proc.new) if block_given?
|
496
525
|
@routes
|
497
526
|
end
|
498
527
|
|
499
|
-
|
500
|
-
railties.all + [self]
|
501
|
-
end
|
502
|
-
|
503
|
-
def initializers
|
504
|
-
initializers = []
|
505
|
-
ordered_railties.each do |r|
|
506
|
-
if r == self
|
507
|
-
initializers += super
|
508
|
-
else
|
509
|
-
initializers += r.initializers
|
510
|
-
end
|
511
|
-
end
|
512
|
-
initializers
|
513
|
-
end
|
514
|
-
|
528
|
+
# Define the configuration object for the engine.
|
515
529
|
def config
|
516
530
|
@config ||= Engine::Configuration.new(find_root_with_flag("lib"))
|
517
531
|
end
|
@@ -521,12 +535,12 @@ module Rails
|
|
521
535
|
#
|
522
536
|
# Blog::Engine.load_seed
|
523
537
|
def load_seed
|
524
|
-
seed_file = paths["db/seeds"].existent.first
|
538
|
+
seed_file = paths["db/seeds.rb"].existent.first
|
525
539
|
load(seed_file) if seed_file
|
526
540
|
end
|
527
541
|
|
528
542
|
# Add configured load paths to ruby load paths and remove duplicates.
|
529
|
-
initializer :set_load_path, :
|
543
|
+
initializer :set_load_path, before: :bootstrap_hook do
|
530
544
|
_all_load_paths.reverse_each do |path|
|
531
545
|
$LOAD_PATH.unshift(path) if File.directory?(path)
|
532
546
|
end
|
@@ -538,7 +552,7 @@ module Rails
|
|
538
552
|
#
|
539
553
|
# This needs to be an initializer, since it needs to run once
|
540
554
|
# per engine and get the engine as a block parameter
|
541
|
-
initializer :set_autoload_paths, :
|
555
|
+
initializer :set_autoload_paths, before: :bootstrap_hook do |app|
|
542
556
|
ActiveSupport::Dependencies.autoload_paths.unshift(*_all_autoload_paths)
|
543
557
|
ActiveSupport::Dependencies.autoload_once_paths.unshift(*_all_autoload_once_paths)
|
544
558
|
|
@@ -549,7 +563,7 @@ module Rails
|
|
549
563
|
end
|
550
564
|
|
551
565
|
initializer :add_routing_paths do |app|
|
552
|
-
paths = self.paths["config/routes"].existent
|
566
|
+
paths = self.paths["config/routes.rb"].existent
|
553
567
|
|
554
568
|
if routes? || paths.any?
|
555
569
|
app.routes_reloader.paths.unshift(*paths)
|
@@ -566,17 +580,18 @@ module Rails
|
|
566
580
|
initializer :add_view_paths do
|
567
581
|
views = paths["app/views"].existent
|
568
582
|
unless views.empty?
|
569
|
-
ActiveSupport.on_load(:action_controller){ prepend_view_path(views) }
|
583
|
+
ActiveSupport.on_load(:action_controller){ prepend_view_path(views) if respond_to?(:prepend_view_path) }
|
570
584
|
ActiveSupport.on_load(:action_mailer){ prepend_view_path(views) }
|
571
585
|
end
|
572
586
|
end
|
573
587
|
|
574
|
-
initializer :load_environment_config, :
|
575
|
-
|
576
|
-
|
588
|
+
initializer :load_environment_config, before: :load_environment_hook, group: :all do
|
589
|
+
paths["config/environments"].existent.each do |environment|
|
590
|
+
require environment
|
591
|
+
end
|
577
592
|
end
|
578
593
|
|
579
|
-
initializer :append_assets_path, :
|
594
|
+
initializer :append_assets_path, group: :all do |app|
|
580
595
|
app.config.assets.paths.unshift(*paths["vendor/assets"].existent_directories)
|
581
596
|
app.config.assets.paths.unshift(*paths["lib/assets"].existent_directories)
|
582
597
|
app.config.assets.paths.unshift(*paths["app/assets"].existent_directories)
|
@@ -608,27 +623,32 @@ module Rails
|
|
608
623
|
desc "Copy migrations from #{railtie_name} to application"
|
609
624
|
task :migrations do
|
610
625
|
ENV["FROM"] = railtie_name
|
611
|
-
Rake::Task
|
626
|
+
if Rake::Task.task_defined?("railties:install:migrations")
|
627
|
+
Rake::Task["railties:install:migrations"].invoke
|
628
|
+
else
|
629
|
+
Rake::Task["app:railties:install:migrations"].invoke
|
630
|
+
end
|
612
631
|
end
|
613
632
|
end
|
614
633
|
end
|
615
634
|
end
|
616
635
|
|
617
|
-
|
636
|
+
protected
|
618
637
|
|
619
|
-
def
|
620
|
-
|
638
|
+
def run_tasks_blocks(*) #:nodoc:
|
639
|
+
super
|
640
|
+
paths["lib/tasks"].existent.sort.each { |ext| load(ext) }
|
621
641
|
end
|
622
642
|
|
623
|
-
def routes?
|
624
|
-
|
643
|
+
def routes? #:nodoc:
|
644
|
+
@routes
|
625
645
|
end
|
626
646
|
|
627
|
-
def has_migrations?
|
647
|
+
def has_migrations? #:nodoc:
|
628
648
|
paths["db/migrate"].existent.any?
|
629
649
|
end
|
630
650
|
|
631
|
-
def find_root_with_flag(flag, default=nil)
|
651
|
+
def find_root_with_flag(flag, default=nil) #:nodoc:
|
632
652
|
root_path = self.class.called_from
|
633
653
|
|
634
654
|
while root_path && File.directory?(root_path) && !File.exist?("#{root_path}/#{flag}")
|
@@ -639,23 +659,22 @@ module Rails
|
|
639
659
|
root = File.exist?("#{root_path}/#{flag}") ? root_path : default
|
640
660
|
raise "Could not find root path for #{self}" unless root
|
641
661
|
|
642
|
-
|
643
|
-
Pathname.new(root).expand_path : Pathname.new(root).realpath
|
662
|
+
Pathname.new File.realpath root
|
644
663
|
end
|
645
664
|
|
646
|
-
def default_middleware_stack
|
665
|
+
def default_middleware_stack #:nodoc:
|
647
666
|
ActionDispatch::MiddlewareStack.new
|
648
667
|
end
|
649
668
|
|
650
|
-
def _all_autoload_once_paths
|
669
|
+
def _all_autoload_once_paths #:nodoc:
|
651
670
|
config.autoload_once_paths
|
652
671
|
end
|
653
672
|
|
654
|
-
def _all_autoload_paths
|
673
|
+
def _all_autoload_paths #:nodoc:
|
655
674
|
@_all_autoload_paths ||= (config.autoload_paths + config.eager_load_paths + config.autoload_once_paths).uniq
|
656
675
|
end
|
657
676
|
|
658
|
-
def _all_load_paths
|
677
|
+
def _all_load_paths #:nodoc:
|
659
678
|
@_all_load_paths ||= (config.paths.load_paths + _all_autoload_paths).uniq
|
660
679
|
end
|
661
680
|
end
|