- 12 9月, 2017 1 次提交
-
-
由 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.
-
- 11 9月, 2017 4 次提交
-
-
由 Ryuta Kamizono 提交于
PERF: Incorrect memoization in `ActiveRecord::Associations::Preloader…
-
由 Guo Xiang Tan 提交于
``` require 'active_record' require 'benchmark/ips' ActiveRecord::Base.establish_connection(ENV.fetch('DATABASE_URL')) ActiveRecord::Migration.verbose = false ActiveRecord::Schema.define do create_table :users, force: true do |t| t.string :name, :email t.integer :topic_id t.timestamps null: false end create_table :topics, force: true do |t| t.string :title t.timestamps null: false end end attributes = { name: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', email: 'foobar@email.com' } class Topic < ActiveRecord::Base has_many :users end class User < ActiveRecord::Base belongs_to :topic end 100.times do User.create!(attributes) end users = User.first(50) 100.times do Topic.create!(title: 'This is a topic', users: users) end Benchmark.ips do |x| x.config(time: 10, warmup: 5) x.report("preload") do User.includes(:topic).all.to_a end end ``` ``` Calculating ------------------------------------- preload 25.000 i/100ms ------------------------------------------------- preload 251.772 (± 1.2%) i/s - 2.525k ``` ``` Calculating ------------------------------------- preload 26.000 i/100ms ------------------------------------------------- preload 270.392 (± 1.1%) i/s - 2.704k ```
-
由 Ryuta Kamizono 提交于
Remove not used gems by default [ci skip]
-
由 yuuji.yaginuma 提交于
`rack-mount` switched to journey with 5f0b37c4. Also, `rack-cache` will not be used unless you explicitly specify it. Ref: https://github.com/rails/rails/commit/037e50ec39c7c3d58a102a6584e2740652420d1d https://github.com/rails/rails/commit/1fc795468525d8622cdca474a54c8310a514aa46
-
- 10 9月, 2017 1 次提交
-
-
由 Yuji Yaginuma 提交于
-
- 09 9月, 2017 2 次提交
-
-
由 Ryuta Kamizono 提交于
Remove needless `silence_warnings`
-
由 yuuji.yaginuma 提交于
Since ff30db13, warning is not shown.
-
- 08 9月, 2017 10 次提交
-
-
由 Matthew Draper 提交于
Reorganize secrets test to use only `isolation/abstract_unit`
-
由 Ryuta Kamizono 提交于
Do not install unused gem
-
由 Sean Griffin 提交于
PERF: Recover `ActiveRecord::pluck` performance.
-
由 Ryuta Kamizono 提交于
This method was moved from `JoinHelper` in 0fddc3c1, but it is only used for `table.create_join` in the internal and `Nodes::InnerJoin` is default join klass. So it is not needed to pass it explicitly.
-
由 yuuji.yaginuma 提交于
`qu-redis` is need for qu adapter test. However, since 8ecc5ab1, qu adapter test has not been executed, it is unnecessary now.
-
由 yuuji.yaginuma 提交于
-
由 Ryuta Kamizono 提交于
The superclass (`MacroReflection`) already have the same method definition.
-
由 Ryuta Kamizono 提交于
`primary_key_type` is no longer used since #26718. `quoted_table_name` is no longer used since Rails 3.1.
-
由 Ryuta Kamizono 提交于
-
由 Ryuta Kamizono 提交于
Fixes #30539.
-
- 07 9月, 2017 7 次提交
-
-
由 yuuji.yaginuma 提交于
Currently, secrets test uses `abstract_unit` and `isolation/abstract_unit`. This is a bit odd. Therefore, reorganize it so that use only `isolation/abstract_unit`. Context: https://github.com/rails/rails/pull/30520#issuecomment-327409586
-
由 Guillermo Iguaran 提交于
CI against JRuby 9.1.13.0
-
-
由 Ryuta Kamizono 提交于
Because `table` is part of `reflection`, don't need to pass it explicitly. And also, naming `alias_name` to `table` is a little confusing. `aliased_table` is preferable than `alias_name`.
-
由 Ryuta Kamizono 提交于
`PolymorphicReflection` is an internal class that is used in `ThroughReflection`. But `RuntimeReflection` is used for the head of chain in `AssociationScope`. These are totally different things.
-
由 Ryuta Kamizono 提交于
The order of scope evaluation should be from through scope to the association's own scope. Otherwise the association's scope cannot affect to through scope. Fixes #13677. Closes #28449.
-
由 Ryuta Kamizono 提交于
[ci skip]
-
- 06 9月, 2017 4 次提交
-
-
由 Vipul A M 提交于
fix type fully qualified [ci skip]
-
由 Yauheni Dakuka 提交于
-
由 Guo Xiang Tan 提交于
```ruby require 'active_record' require 'benchmark/ips' ActiveRecord::Base.establish_connection(ENV.fetch('DATABASE_URL')) ActiveRecord::Migration.verbose = false ActiveRecord::Schema.define do create_table :users, force: true do |t| t.string :name, :email t.timestamps null: false end end attributes = { name: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', email: 'foobar@email.com' } class User < ActiveRecord::Base; end 1000.times do User.create!(attributes) end Benchmark.ips do |x| x.config(time: 10, warmup: 2) x.report('pluck 1 column') do User.pluck(:id) end x.report('pluck 2 columns') do User.pluck(:id, :email) end x.report('pluck 1 column with scope') do User.where(id: 1000).pluck(:id) end x.report('pluck 2 columns with scope') do User.where(id: 1000).pluck(:id, :email) end end ``` ``` Calculating ------------------------------------- pluck 1 column 122.000 i/100ms pluck 2 columns 74.000 i/100ms pluck 1 column with scope 615.000 i/100ms pluck 2 columns with scope 515.000 i/100ms ------------------------------------------------- pluck 1 column 1.272k (± 3.9%) i/s - 12.810k pluck 2 columns 750.096 (± 3.3%) i/s - 7.548k pluck 1 column with scope 6.074k (± 4.1%) i/s - 60.885k pluck 2 columns with scope 5.158k (± 2.7%) i/s - 52.015k ``` ``` Calculating ------------------------------------- pluck 1 column 126.000 i/100ms pluck 2 columns 78.000 i/100ms pluck 1 column with scope 457.000 i/100ms pluck 2 columns with scope 434.000 i/100ms ------------------------------------------------- pluck 1 column 1.266k (± 2.1%) i/s - 12.726k pluck 2 columns 795.061 (± 3.0%) i/s - 7.956k pluck 1 column with scope 4.660k (± 2.1%) i/s - 46.614k pluck 2 columns with scope 4.355k (± 2.3%) i/s - 43.834k ``` ``` Calculating ------------------------------------- pluck 1 column 126.000 i/100ms pluck 2 columns 78.000 i/100ms pluck 1 column with scope 539.000 i/100ms pluck 2 columns with scope 481.000 i/100ms ------------------------------------------------- pluck 1 column 1.308k (± 3.4%) i/s - 13.104k pluck 2 columns 798.604 (± 2.8%) i/s - 8.034k pluck 1 column with scope 5.530k (± 3.4%) i/s - 55.517k pluck 2 columns with scope 4.914k (± 2.7%) i/s - 49.543k ``` ``` Calculating ------------------------------------- pluck 1 column 139.000 i/100ms pluck 2 columns 79.000 i/100ms pluck 1 column with scope 580.000 i/100ms pluck 2 columns with scope 526.000 i/100ms ------------------------------------------------- pluck 1 column 1.337k (± 3.0%) i/s - 13.483k pluck 2 columns 806.776 (± 2.7%) i/s - 8.137k pluck 1 column with scope 5.924k (± 4.1%) i/s - 59.160k pluck 2 columns with scope 5.276k (± 3.1%) i/s - 53.126k ```
-
由 Aaron Patterson 提交于
Normalize/process Cache-Control headers consistently
-
- 05 9月, 2017 8 次提交
-
-
由 Ryuta Kamizono 提交于
Do not pass an instance variable to a private method
-
由 Matthew Draper 提交于
Run in-app rails commands via fork+load where possible
-
由 Ryuta Kamizono 提交于
Because `refl.scope` is the same meaning with `chain_head.scope`.
-
由 Kasper Timm Hansen 提交于
Explicitly require `test_unit/reporter`
-
由 Kasper Timm Hansen 提交于
Add Documentation For Duration Support & Expiry Meta Data Added to Signed / Encrypted Cookies
-
由 Ryuta Kamizono 提交于
Because `reflection_scope.values` will create extra new hash.
-
由 Ryuta Kamizono 提交于
If `reflection.scope` isn't given, `reflection_scope` is always `klass.unscoped`. it is unnecessary to merge it.
-
- 04 9月, 2017 3 次提交
-
-
由 Ryuta Kamizono 提交于
Otherwise using reserved words as composite primary key names will be failed as an invalid SQL. Fixes #30518.
-
由 Matthew Draper 提交于
While this avoids shell argument parsing, we still pass through everything in our stack.
-
由 Assain 提交于
* Documentation for Duration support added to signed/encrypted cookies * Changelog entries for the duration support and expiry metadata added to cookies [ci skip]
-