• D
    Make Webpacker the default JavaScript compiler for Rails 6 (#33079) · 4838c171
    David Heinemeier Hansson 提交于
    * Use Webpacker by default on new apps
    
    * Stop including coffee-rails by default
    
    * Drop using a js_compressor by default
    
    * Drop extra test for coffeescript inclusion by default
    
    * Stick with skip_javascript to signify skipping webpack
    
    * Don't install a JS runtime by default any more
    
    * app/javascript will be the new default directory for JS
    
    * Make it clear that this is just for configuring the default Webpack framework setup now
    
    * Start using the Webpack tag in the default layout
    
    * Irrelevant test
    
    * jQuery is long gone
    
    * Stop having asset pipeline compile default application.js
    
    * Add rails-ujs by default to the Webpack setup
    
    * Add Active Storage JavaScript to application.js pack by default
    
    * Consistent quoting
    
    * Add Turbolinks to default pack
    
    * Add Action Cable to default pack
    
    Need some work on how to set the global consumer that channels will
    work with. @javan?
    
    * Require all channels by default and use a separate consumer stub
    
    * Channel generator now targets Webpack style
    
    * Update task docs to match new generator style
    
    * Use uniform import style
    
    * Drop the JS assets generator
    
    It was barely helpful as it was. It’s no longer helpful in a Webpacked
    world. Sayonara!
    
    * Add app/javascript to the stats directories
    
    * Simpler import style
    
    Which match the other imports.
    
    * Address test failures from dropping JS compilation (and compression)
    
    * webpacker-default: Modify `AssetsGeneratorTest`
    
    Before:
    
    ```
    $ bin/test test/generators/assets_generator_test.rb
    Run options: --seed 46201
    
    F
    
    Failure:
    AssetsGeneratorTest#test_assets [/Users/ttanimichi/ghq/github.com/ttanimichi/rails/railties/test/generators/assets_generator_test.rb:12]:
    Expected file "app/assets/javascripts/posts.js" to exist, but does not
    
    bin/test /Users/ttanimichi/ghq/github.com/ttanimichi/rails/railties/test/generators/assets_generator_test.rb:10
    
    .
    
    Finished in 0.031343s, 63.8101 runs/s, 95.7152 assertions/s.
    2 runs, 3 assertions, 1 failures, 0 errors, 0 skips
    ```
    
    After:
    
    ```
    $ bin/test test/generators/assets_generator_test.rb
    Run options: --seed 43571
    
    ..
    
    Finished in 0.030370s, 65.8545 runs/s, 65.8545 assertions/s.
    2 runs, 2 assertions, 0 failures, 0 errors, 0 skips
    ```
    
    * webpacker-default: Modify `ChannelGeneratorTest`
    
    Before:
    
    ```
    $ bin/test test/generators/channel_generator_test.rb
    Run options: --seed 8986
    
    .F
    
    Failure:
    ChannelGeneratorTest#test_channel_with_multiple_actions_is_created [/Users/ttanimichi/ghq/github.com/ttanimichi/rails/railties/test/generators/channel_generator_test.rb:43]:
    Expected file "app/assets/javascripts/channels/chat.js" to exist, but does not
    
    bin/test /Users/ttanimichi/ghq/github.com/ttanimichi/rails/railties/test/generators/channel_generator_test.rb:34
    
    .F
    
    Failure:
    ChannelGeneratorTest#test_channel_is_created [/Users/ttanimichi/ghq/github.com/ttanimichi/rails/railties/test/generators/channel_generator_test.rb:29]:
    Expected file "app/assets/javascripts/channels/chat.js" to exist, but does not
    
    bin/test /Users/ttanimichi/ghq/github.com/ttanimichi/rails/railties/test/generators/channel_generator_test.rb:22
    
    E
    
    Error:
    ChannelGeneratorTest#test_cable_js_is_created_if_not_present_already:
    Errno::ENOENT: No such file or directory @ apply2files - /Users/ttanimichi/ghq/github.com/ttanimichi/rails/railties/test/fixtures/tmp/app/assets/javascripts/cable.js
    
    bin/test /Users/ttanimichi/ghq/github.com/ttanimichi/rails/railties/test/generators/channel_generator_test.rb:60
    
    F
    
    Failure:
    ChannelGeneratorTest#test_channel_suffix_is_not_duplicated [/Users/ttanimichi/ghq/github.com/ttanimichi/rails/railties/test/generators/channel_generator_test.rb:87]:
    Expected file "app/assets/javascripts/channels/chat.js" to exist, but does not
    
    bin/test /Users/ttanimichi/ghq/github.com/ttanimichi/rails/railties/test/generators/channel_generator_test.rb:80
    
    F
    
    Failure:
    ChannelGeneratorTest#test_channel_on_revoke [/Users/ttanimichi/ghq/github.com/ttanimichi/rails/railties/test/generators/channel_generator_test.rb:77]:
    Expected file "app/assets/javascripts/cable.js" to exist, but does not
    
    bin/test /Users/ttanimichi/ghq/github.com/ttanimichi/rails/railties/test/generators/channel_generator_test.rb:68
    
    Finished in 0.064384s, 108.7227 runs/s, 481.4861 assertions/s.
    7 runs, 31 assertions, 4 failures, 1 errors, 0 skips
    ```
    
    After:
    
    ```
    $ bin/test test/generators/channel_generator_test.rb
    Run options: --seed 44857
    
    .......
    
    Finished in 0.060243s, 116.1961 runs/s, 697.1764 assertions/s.
    7 runs, 42 assertions, 0 failures, 0 errors, 0 skips
    ```
    
    * Fix shared generator tests.
    
    * webpacker-default: Modify `ControllerGeneratorTest`
    
    The JS assets generator was dropped. ref. https://github.com/rails/rails/commit/46215b179483d3e4d264555f5a4952f43eb8142a
    
    * Revert "Simpler import style". It's currently failing with an error of "TypeError: undefined is not an object (evaluating '__WEBPACK_IMPORTED_MODULE_2_activestorage___default.a.start')". Waiting for @javan to have a look.
    
    This reverts commit 5d3ebb71059f635d3756cbda4ab9752027e09256.
    
    * require webpacker in test app
    
    * Add webpacker without making the build hang/timeout. (#33640)
    
    * use yarn workspaces to allow for installing unreleased packages and only generate js/bootsnap when required
    
    * no longer need to have webpacker in env templates as webpacker moved this config to yml file
    
    * Fix rubocop violation
    
    * Got the test passing for the running scaffold
    
    * update expected lines of code
    
    * update middleware tests to account for webpacker
    
    * disable js in plugins be default to get the tests passing (#34009)
    
    * clear codeclimate report issues
    
    * Anything newer than currently released is good
    
    * Use Webpacker development version during development of Rails
    
    * Edge should get development webpacker as well
    
    * Add changelog entry for Webpacker change
    4838c171
app_generator_test.rb 31.3 KB