1. 05 10月, 2018 1 次提交
  2. 01 10月, 2018 1 次提交
    • 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
  3. 23 9月, 2018 1 次提交
    • Y
      Enable `Performance/UnfreezeString` cop · 1b86d901
      yuuji.yaginuma 提交于
      In Ruby 2.3 or later, `String#+@` is available and `+@` is faster than `dup`.
      
      ```ruby
      # frozen_string_literal: true
      
      require "bundler/inline"
      
      gemfile(true) do
        source "https://rubygems.org"
      
        gem "benchmark-ips"
      end
      
      Benchmark.ips do |x|
        x.report('+@') { +"" }
        x.report('dup') { "".dup }
        x.compare!
      end
      ```
      
      ```
      $ ruby -v benchmark.rb
      ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
      Warming up --------------------------------------
                        +@   282.289k i/100ms
                       dup   187.638k i/100ms
      Calculating -------------------------------------
                        +@      6.775M (± 3.6%) i/s -     33.875M in   5.006253s
                       dup      3.320M (± 2.2%) i/s -     16.700M in   5.032125s
      
      Comparison:
                        +@:  6775299.3 i/s
                       dup:  3320400.7 i/s - 2.04x  slower
      
      ```
      1b86d901
  4. 14 9月, 2018 1 次提交
  5. 11 8月, 2018 1 次提交
  6. 24 6月, 2018 3 次提交
  7. 19 6月, 2018 1 次提交
    • B
      Fix Ruby version in `.ruby-version` · 1aace5e2
      bogdanvlviv 提交于
      Since #30016 Rails generates `.ruby-version` file
      in order to help Ruby version manager tools like `rbenv`, `rvm`
      determine which Ruby version should be used for the current Rails
      project.
      
      Since #32649 Rails sets Ruby version to the file compatible with MRI/JRuby
      by default.
      
      Pull Request #31496 reports that `.ruby-version` doesn't match ruby version other
      than stable version and recommends to use `ENV["RBENV_VERSION"]`, and
      `ENV["rvm_ruby_string"]` in order to set correct Ruby version to the file
      that `rbenv` or `rvm` can understand.
      Also, there is another similar issue that reports the same case if use
      JRuby https://github.com/jruby/jruby/issues/5144.
      
      Closes #31496, https://github.com/jruby/jruby/issues/5144.
      1aace5e2
  8. 16 5月, 2018 1 次提交
  9. 13 5月, 2018 1 次提交
  10. 07 5月, 2018 1 次提交
  11. 05 5月, 2018 1 次提交
    • T
      Don't generate assets' initializer in `app:update` task if sprockets is skipped · 59c3d539
      Tsukuru Tanimichi 提交于
      Execute `rails new myapp -S` and then upgrade the app by using the `app:update` task, `bin/rails c` results in `NoMethodError`.
      
      ```
      $ bin/rails app:update
      
      $ bin/rails c
      Traceback (most recent call last):
          44: from bin/rails:4:in `<main>'
      (snip)
           1: from /Users/tanimichi.tsukuru/ghq/github.com/moneyforward/moneyplus/config/initializers/assets.rb:4:in `<top (required)>'
      /Users/tanimichi.tsukuru/ghq/github.com/moneyforward/moneyplus/vendor/bundle/ruby/2.5.0/gems/railties-5.2.0/lib/rails/railtie/configuration.rb:97:in `method_missing': undefined method `assets' for #<Rails::Application::Configuration:0x00007fcb8d3697e0> (NoMethodError)
      Did you mean?  asset_host
      ```
      59c3d539
  12. 29 4月, 2018 1 次提交
  13. 25 4月, 2018 2 次提交
  14. 24 4月, 2018 1 次提交
  15. 22 4月, 2018 1 次提交
  16. 21 4月, 2018 1 次提交
  17. 20 4月, 2018 1 次提交
  18. 19 4月, 2018 1 次提交
    • J
      Make the master.key readable only by the owner · 4c6c3575
      Jose Luis Duran 提交于
      This change may only apply to POSIX-compliant systems.
      
      Previously:
      
          $ ls -l config/master.key
          -rw-r--r--   1 owner  group      32 Jan 1 00:00 master.key
      
      Now:
      
          $ ls -l config/master.key
          -rw-------   1 owner  group      32 Jan 1 00:00 master.key
      4c6c3575
  19. 18 4月, 2018 1 次提交
    • J
      Use ImageProcessing gem for ActiveStorage variants · ca129685
      Janko Marohnić 提交于
      ImageProcessing gem is a wrapper around MiniMagick and ruby-vips, and
      implements an interface for common image resizing and processing. This
      is the canonical image processing gem recommended in [Shrine], and
      that's where it developed from. The initial implementation was extracted
      from Refile, which also implements on-the-fly transformations.
      
      Some features that ImageProcessing gem adds on top of MiniMagick:
      
        * resizing macros
          - #resize_to_limit
          - #resize_to_fit
          - #resize_to_fill
          - #resize_and_pad
        * automatic orientation
        * automatic thumbnail sharpening
        * avoids the complex and inefficient MiniMagick::Image class
        * will use "magick" instead of "convert" on ImageMagick 7
      
      However, the biggest feature of the ImageProcessing gem is that it has
      an alternative implementation that uses libvips. Libvips is an
      alternative to ImageMagick that can process images very rapidly (we've
      seen up 10x faster than ImageMagick).
      
      What's great is that the ImageProcessing gem provides the same interface
      for both implementations. The macros are named the same, and the libvips
      implementation does auto orientation and thumbnail sharpening as well;
      only the operations/options specific to ImageMagick/libvips differ. The
      integration provided by this PR should work for both implementations.
      
      The plan is to introduce the ImageProcessing backend in Rails 6.0 as the
      default backend and deprecate the MiniMagick backend, then in Rails 6.1
      remove the MiniMagick backend.
      ca129685
  20. 22 3月, 2018 1 次提交
    • R
      Fix `test_config_another_database` failure · 958c5ad9
      Ryuta Kamizono 提交于
      Somehow `test_config_another_database` didn't fail on CI, but it will
      fail locally.
      
      https://travis-ci.org/rails/rails/jobs/356212950#L2474-L2482
      
      ```
      % bundle exec ruby -w -Itest test/generators/app_generator_test.rb -n test_config_another_database
      Run options: -n test_config_another_database --seed 7260
      
      # Running:
      
      F
      
      Failure:
      AppGeneratorTest#test_config_another_database [test/generators/app_generator_test.rb:417]:
      Expected /^\s*gem\s+["']mysql2["'], '~> 0.4.4'$*/ to match "source 'https://rubygems.org'\ngit_source(:github) { |repo| \"https://github.com/\#{repo}.git\" }\n\nruby '2.5.0'\n\n# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'\ngem 'rails', '~> 6.0.0.alpha'\n# Use mysql as the database for Active Record\ngem 'mysql2', '>= 0.4.4', '< 0.6.0'\n# Use Puma as the app server\ngem 'puma', '~> 3.11'\n# Use SCSS for stylesheets\ngem 'sass-rails', '~> 5.0'\n# Use Uglifier as compressor for JavaScript assets\ngem 'uglifier', '>= 1.3.0'\n# See https://github.com/rails/execjs#readme for more supported runtimes\n# gem 'mini_racer', platforms: :ruby\n\n# Use CoffeeScript for .coffee assets and views\ngem 'coffee-rails', '~> 4.2'\n# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks\ngem 'turbolinks', '~> 5'\n# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder\ngem 'jbuilder', '~> 2.5'\n# Use Redis adapter to run Action Cable in production\n# gem 'redis', '~> 4.0'\n# Use ActiveModel has_secure_password\n# gem 'bcrypt', '~> 3.1.7'\n\n# Use ActiveStorage variant\n# gem 'mini_magick', '~> 4.8'\n\n# Use Capistrano for deployment\n# gem 'capistrano-rails', group: :development\n\n# Reduces boot times through caching; required in config/boot.rb\ngem 'bootsnap', '>= 1.1.0', require: false\n\ngroup :development, :test do\n  # Call 'byebug' anywhere in the code to stop execution and get a debugger console\n  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]\nend\n\ngroup :development do\n  # Access an interactive console on exception pages or by calling 'console' anywhere in the code.\n  gem 'web-console', '>= 3.3.0'\n  gem 'listen', '>= 3.0.5', '< 3.2'\n  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring\n  gem 'spring'\n  gem 'spring-watcher-listen', '~> 2.0.0'\nend\n\ngroup :test do\n  # Adds support for Capybara system testing and selenium driver\n  gem 'capybara', '>= 2.15', '< 4.0'\n  gem 'selenium-webdriver'\n  # Easy installation and use of chromedriver to run system tests with Chrome\n  gem 'chromedriver-helper'\nend\n\n# Windows does not include zoneinfo files, so bundle the tzinfo-data gem\ngem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]\n".
      
      bin/rails test test/generators/app_generator_test.rb:411
      
      Finished in 0.174681s, 5.7247 runs/s, 34.3483 assertions/s.
      1 runs, 6 assertions, 1 failures, 0 errors, 0 skips
      ```
      958c5ad9
  21. 27 2月, 2018 1 次提交
    • A
      Don't enforce UTF-8 by default · 96eeea53
      Andrew White 提交于
      With the disabling of TLS 1.0 by most major websites, continuing to run
      IE8 or lower becomes increasingly difficult so default to not enforcing
      UTF-8 encoding as it's not relevant to other browsers.
      96eeea53
  22. 20 2月, 2018 1 次提交
  23. 13 2月, 2018 2 次提交
  24. 12 2月, 2018 1 次提交
    • C
      Respect --force option for config/master.key · 24284fd3
      claudiob 提交于
      This is similar to #30700 which ensures the `--quiet` option of `rails new`
      is respected by the `MasterKeyGenerator` (missing from #30067).
      
      Before this commit, running `rails new app --force` would still prompt the
      user what to do with the conflict in `config/master.key`:
      
      ```
                    …
         identical  config/locales/en.yml
          conflict  config/master.key
      Overwrite /Users/claudiob/Desktop/pizza/config/master.key? (enter "h" for help) [Ynaqdh]
      ```
      
      After this commit, `config/master.key` is overwritten:
      
      ```
                 …
      identical  config/locales/en.yml
          force  config/master.key
         append  .gitignore
      ```
      
      The newly added test generates an app and then generates it again with
      `--force`. Without this commit, the test would just wait forever for user
      input.
      24284fd3
  25. 11 1月, 2018 1 次提交
  26. 10 1月, 2018 1 次提交
    • B
      Clean up railties tests · b6ed9a7f
      bogdanvlviv 提交于
        Remove `AppGeneratorTest#test_active_storage_install`.
        The test is added by 67db41aa,
        since #31534 this test doesn't test anything.
      
        Remove redundant assertions in `SharedGeneratorTests`.
        These assertions is added by 4a835aa3.
        Follows 67db41aa, #31534.
      b6ed9a7f
  27. 26 12月, 2017 1 次提交
  28. 24 12月, 2017 1 次提交
  29. 19 12月, 2017 1 次提交
  30. 16 12月, 2017 1 次提交
    • Y
      Add `skip_bootsnap` option · 838b40da
      yuuji.yaginuma 提交于
      `bootsnap` is a useful gem normally. However, `bootsnap` is unnecessary
      when generating a Rails application to be used only for testing.
      So I want to control whether use this or not by option.
      838b40da
  31. 15 12月, 2017 1 次提交
  32. 05 12月, 2017 2 次提交
  33. 04 12月, 2017 1 次提交
  34. 03 12月, 2017 1 次提交
    • C
      Fix typo in test error message · a71bbed7
      claudiob 提交于
      With the current code, a failing test shows this error, which is missing
      the number of times called and has two periods at the end.
      
      ```
      /railties$ be ruby -Itest test/generators/app_generator_test.rb -n test_active_storage_install
      
      Failure:
      AppGeneratorTest#test_active_storage_install [test/generators/app_generator_test.rb:313]:
      active_storage:install expected to be called once, but was called  times..
      Expected: 1
        Actual: 2
      ```
      
      After the fix, the error message looks correct:
      
      ```
      /railties$ be ruby -Itest test/generators/app_generator_test.rb -n test_active_storage_install
      
      Failure:
      AppGeneratorTest#test_active_storage_install [test/generators/app_generator_test.rb:313]:
      active_storage:install expected to be called once, but was called 2 times.
      Expected: 1
        Actual: 2
      ```
      a71bbed7
  35. 28 11月, 2017 1 次提交