1. 17 1月, 2019 1 次提交
  2. 11 1月, 2019 1 次提交
  3. 06 1月, 2019 1 次提交
  4. 05 1月, 2019 1 次提交
  5. 28 12月, 2018 1 次提交
  6. 21 12月, 2018 1 次提交
  7. 23 10月, 2018 1 次提交
  8. 22 10月, 2018 3 次提交
  9. 20 10月, 2018 1 次提交
  10. 09 10月, 2018 2 次提交
  11. 05 10月, 2018 1 次提交
  12. 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
  13. 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
  14. 22 2月, 2018 1 次提交
  15. 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
  16. 26 12月, 2017 1 次提交
  17. 24 12月, 2017 1 次提交
  18. 09 11月, 2017 1 次提交
  19. 08 11月, 2017 1 次提交
  20. 07 11月, 2017 2 次提交
    • B
      `rails new` runs `rails active_storage:install` · 0835527d
      bogdanvlviv 提交于
      Omit `rails activestorage:install` for jdbcmysql, jdbc and shebang tests
      
      AppGeneratorTest#test_config_jdbcmysql_database
      
        rails aborted!
        LoadError: Could not load 'active_record/connection_adapters/mysql_adapter'.
        Make sure that the adapter in config/database.yml is valid.
        If you use an adapter other than 'mysql2', 'postgresql' or 'sqlite3' add
        the necessary adapter gem to the Gemfile.
        (compressed)
        bin/rails:4:in `<main>'
        Tasks: TOP => activestorage:install => environment
        (See full trace by running task with --trace)
      
      AppGeneratorTest#test_config_jdbc_database
      
        rails aborted!
        LoadError: Could not load 'active_record/connection_adapters/jdbc_adapter'.
        Make sure that the adapter in config/database.yml is valid.
        If you use an adapter other than 'mysql2', 'postgresql' or 'sqlite3' add
        the necessary adapter gem to the Gemfile.
        (compressed)
        bin/rails:4:in `<main>'
        Tasks: TOP => activestorage:install => environment
        (See full trace by running task with --trace)
      
      AppGeneratorTest#test_shebang_is_added_to_rails_file
      
        /home/ubuntu/.rbenv/versions/2.4.1/bin/ruby: no Ruby script found in input (LoadError)
      
      Prevent PendingMigrationError in tests
      
       * Run `bin/rails db:migrate RAILS_ENV=test` in test_cases before start tests to prevent PendingMigrationError
       * FileUtils.rm_r("db/migrate")
       * --skip-active-storage
      
      Fix failed tests in `railties/test/railties/engine_test.rb`
      
      Related to #30111
      
      Imporve `SharedGeneratorTests#test_default_frameworks_are_required_when_others_are_removed`
      
       - Explicitly skip active_storage
       - Ensure that skipped frameworks are commented
       - Ensure that default frameworks are not commented
      
      Fix error `Errno::ENOSPC: No space left on device - sendfile`
      
      Since `rails new` runs `rails active_storage:install`
      that boots an app.
      
      Since adding Bootsnap 0312a5c6
      during booting an app, it creates the cache:
      
         264K    tmp/cache/bootsnap-load-path-cache
         27M     tmp/cache/bootsnap-compile-cache
      
      * teardown_app must remove app
      0835527d
    • B
      Add --skip-active-storage and do so automatically when --skip-active-record is used · 4a835aa3
      bogdanvlviv 提交于
      Closes #30102
      
      Revert part 787fe90d
      
      --skip-active-storage pass throughs `rails plugin new`
      
      Add changelog entry about default initialization of Active Storage
      4a835aa3
  21. 12 9月, 2017 1 次提交
    • D
      Add credentials using a generic EncryptedConfiguration class (#30067) · 69f976b8
      David Heinemeier Hansson 提交于
      * WIP: Add credentials using a generic EncryptedConfiguration class
      
      This is sketch code so far.
      
      * Flesh out EncryptedConfiguration and test it
      
      * Better name
      
      * Add command and generator for credentials
      
      * Use the Pathnames
      
      * Extract EncryptedFile from EncryptedConfiguration and add serializers
      
      * Test EncryptedFile
      
      * Extract serializer validation
      
      * Stress the point about losing comments
      
      * Allow encrypted configuration to be read without parsing for display
      
      * Use credentials by default and base them on the master key
      
      * Derive secret_key_base in test/dev, source it from credentials in other envs
      
      And document the usage.
      
      * Document the new credentials setup
      
      * Stop generating the secrets.yml file now that we have credentials
      
      * Document what we should have instead
      
      Still need to make it happen, tho.
      
      * [ci skip] Keep wording to `key base`; prefer defaults.
      
      Usually we say we change defaults, not "spec" out a release.
      
      Can't use backticks in our sdoc generated documentation either.
      
      * Abstract away OpenSSL; prefer MessageEncryptor.
      
      * Spare needless new when raising.
      
      * Encrypted file test shouldn't depend on subclass.
      
      * [ci skip] Some woordings.
      
      * Ditch serializer future coding.
      
      * I said flip it. Flip it good.
      
      * [ci skip] Move require_master_key to the real production.rb.
      
      * Add require_master_key to abort the boot process.
      
      In case the master key is required in a certain environment
      we should inspect that the key is there and abort if it isn't.
      
      * Print missing key message and exit immediately.
      
      Spares us a lengthy backtrace and prevents further execution.
      
      I've verified the behavior in a test app, but couldn't figure the
      test out as loading the app just exits immediately with:
      
      ```
      /Users/kasperhansen/Documents/code/rails/activesupport/lib/active_support/testing/isolation.rb:23:in `load': marshal data too short (ArgumentError)
      	from /Users/kasperhansen/Documents/code/rails/activesupport/lib/active_support/testing/isolation.rb:23:in `run'
      	from /Users/kasperhansen/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/minitest-5.10.2/lib/minitest.rb:830:in `run_one_method'
      	from /Users/kasperhansen/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/minitest-5.10.2/lib/minitest/parallel.rb:32:in `block (2 levels) in start'
      ```
      
      It's likely we need to capture and prevent the exit somehow.
      Kernel.stub(:exit) didn't work. Leaving it for tomorrow.
      
      * Fix require_master_key config test.
      
      Loading the app would trigger the `exit 1` per require_master_key's
      semantics, which then aborted the test.
      
      Fork and wait for the child process to finish, then inspect the
      exit status.
      
      Also check we aborted because of a missing master key, so something
      else didn't just abort the boot.
      
      Much <3 to @tenderlove for the tip.
      
      * Support reading/writing configs via methods.
      
      * Skip needless deep symbolizing.
      
      * Remove save; test config reader elsewhere.
      
      * Move secret_key_base check to when we're reading it.
      
      Otherwise we'll abort too soon since we don't assign the secret_key_base
      to secrets anymore.
      
      * Add missing string literal comments; require unneeded yaml require.
      
      * ya ya ya, rubocop.
      
      * Add master_key/credentials after bundle.
      
      Then we can reuse the existing message on `rails new bc4`.
      
      It'll look like:
      
      ```
      Using web-console 3.5.1 from https://github.com/rails/web-console.git (at master@ce985eb)
      Using rails 5.2.0.alpha from source at `/Users/kasperhansen/Documents/code/rails`
      Using sass-rails 5.0.6
      Bundle complete! 16 Gemfile dependencies, 72 gems now installed.
      Use `bundle info [gemname]` to see where a bundled gem is installed.
      Adding config/master.key to store the master encryption key: 97070158c44b4675b876373a6bc9d5a0
      
      Save this in a password manager your team can access.
      
      If you lose the key, no one, including you, can access anything encrypted with it.
      
            create  config/master.key
      ```
      
      And that'll be executed even if `--skip-bundle` was passed.
      
      * Ensure test app has secret_key_base.
      
      * Assign secret_key_base to app or omit.
      
      * Merge noise
      
      * Split options for dynamic delegation into its own method and use deep symbols to make it work
      
      * Update error to point to credentials instead
      
      * Appease Rubocop
      
      * Validate secret_key_base when reading it.
      
      Instead of relying on the validation in key_generator move that into
      secret_key_base itself.
      
      * Fix generator and secrets test.
      
      Manually add config.read_encrypted_secrets since it's not there by default
      anymore.
      
      Move mentions of config/secrets.yml to config/credentials.yml.enc.
      
      * Remove files I have no idea how they got here.
      
      * [ci skip] swap secrets for credentials.
      
      * [ci skip] And now, changelogs are coming.
      69f976b8
  22. 17 8月, 2017 1 次提交
  23. 16 8月, 2017 1 次提交
  24. 15 8月, 2017 2 次提交
  25. 02 7月, 2017 1 次提交
  26. 01 7月, 2017 1 次提交
  27. 07 5月, 2017 1 次提交
  28. 13 1月, 2017 1 次提交
  29. 29 10月, 2016 1 次提交
  30. 16 8月, 2016 1 次提交
  31. 07 8月, 2016 1 次提交
  32. 02 7月, 2016 1 次提交
  33. 18 12月, 2015 1 次提交
  34. 23 9月, 2015 1 次提交
  35. 22 9月, 2015 1 次提交