railties 5.1.1 → 5.1.2.rc1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 935898d05c4eaa13390dc01c86a6ebc63c6f8842
4
- data.tar.gz: f3c166c76c84f36c106d61f38facfa16fadad0d7
3
+ metadata.gz: 5e44cca337ea7f274f92834486bb9c2de9ce0b02
4
+ data.tar.gz: '0553712679d7424e515a6a6f9e479382557a5a02'
5
5
  SHA512:
6
- metadata.gz: 898ea53fede6af21c7f734fe7b5aafa4676fb0b8cc64142a026d9044b7e6685b7a75050e46d0b03dbe9a61de428d4d41ad85f3b5768919561df4371c37b5ebca
7
- data.tar.gz: 5e1ff34efd72f10fa9e0f60b0ef9e4aa47714a3c3889f6c5b0a71405b9cdcf063c29f689fd084490f444e77b8362371c7773162d5403ffbce18d2daf1ef05f1c
6
+ metadata.gz: b7f7d106175a3c34dfa56423aab89575a800625c144be7bea53ba8ef316827f3314a1e06cb8b78adfb31995d79c67c924eb46dc138d886a93f4a94ee925f2705
7
+ data.tar.gz: 589d690092457a528f4e1f8f083118cfbeb4bd56e27b36d88f94845761fcfdc4ea6fa21c86e7b341fcc2050f633b46503957f18bce56249cc5e3d492b72047f0
@@ -1,3 +1,14 @@
1
+ ## Rails 5.1.2.rc1 (June 20, 2017) ##
2
+
3
+ * Add Windows support to `rails secrets:edit`.
4
+
5
+ *Kasper Timm Hansen*
6
+
7
+ ## Rails 5.1.1 (May 12, 2017) ##
8
+
9
+ * No changes.
10
+
11
+
1
12
  ## Rails 5.1.0 (April 27, 2017) ##
2
13
 
3
14
  * Namespace error pages' CSS selectors to stop the styles from bleeding into other pages
@@ -1,13 +1,14 @@
1
1
  The most common rails commands are:
2
- generate Generate new code (short-cut alias: "g")
3
- console Start the Rails console (short-cut alias: "c")
4
- server Start the Rails server (short-cut alias: "s")
5
- test Run tests (short-cut alias: "t")
6
- dbconsole Start a console for the database specified in config/database.yml
7
- (short-cut alias: "db")
2
+ generate Generate new code (short-cut alias: "g")
3
+ console Start the Rails console (short-cut alias: "c")
4
+ server Start the Rails server (short-cut alias: "s")
5
+ test Run tests except system tests (short-cut alias: "t")
6
+ test:system Run system tests
7
+ dbconsole Start a console for the database specified in config/database.yml
8
+ (short-cut alias: "db")
8
9
  <% unless engine? %>
9
- new Create a new Rails application. "rails new my_app" creates a
10
- new application called MyApp in "./my_app"
10
+ new Create a new Rails application. "rails new my_app" creates a
11
+ new application called MyApp in "./my_app"
11
12
  <% end %>
12
13
 
13
14
  All commands can be run with -h (or --help) for more information.
@@ -13,10 +13,7 @@ module Rails
13
13
  end
14
14
 
15
15
  def setup
16
- require "rails/generators"
17
- require "rails/generators/rails/encrypted_secrets/encrypted_secrets_generator"
18
-
19
- Rails::Generators::EncryptedSecretsGenerator.start
16
+ generator.start
20
17
  end
21
18
 
22
19
  def edit
@@ -34,8 +31,7 @@ module Rails
34
31
  require_application_and_environment!
35
32
 
36
33
  Rails::Secrets.read_for_editing do |tmp_path|
37
- say "Waiting for secrets file to be saved. Abort with Ctrl-C."
38
- system("\$EDITOR #{tmp_path}")
34
+ system("#{ENV["EDITOR"]} #{tmp_path}")
39
35
  end
40
36
 
41
37
  say "New secrets encrypted and saved."
@@ -43,7 +39,22 @@ module Rails
43
39
  say "Aborted changing encrypted secrets: nothing saved."
44
40
  rescue Rails::Secrets::MissingKeyError => error
45
41
  say error.message
42
+ rescue Errno::ENOENT => error
43
+ raise unless error.message =~ /secrets\.yml\.enc/
44
+
45
+ Rails::Secrets.read_template_for_editing do |tmp_path|
46
+ system("#{ENV["EDITOR"]} #{tmp_path}")
47
+ generator.skip_secrets_file { setup }
48
+ end
46
49
  end
50
+
51
+ private
52
+ def generator
53
+ require "rails/generators"
54
+ require "rails/generators/rails/encrypted_secrets/encrypted_secrets_generator"
55
+
56
+ Rails::Generators::EncryptedSecretsGenerator
57
+ end
47
58
  end
48
59
  end
49
60
  end
@@ -11,7 +11,7 @@ module Rails
11
11
  end
12
12
 
13
13
  def perform(*)
14
- $LOAD_PATH << Rails::Command.root.join("test")
14
+ $LOAD_PATH << Rails::Command.root.join("test").to_s
15
15
 
16
16
  Minitest.run_via = :rails
17
17
 
@@ -7,8 +7,8 @@ module Rails
7
7
  module VERSION
8
8
  MAJOR = 5
9
9
  MINOR = 1
10
- TINY = 1
11
- PRE = nil
10
+ TINY = 2
11
+ PRE = "rc1"
12
12
 
13
13
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
14
14
  end
@@ -13,7 +13,6 @@ module Rails
13
13
  DATABASES = %w( mysql postgresql sqlite3 oracle frontbase ibm_db sqlserver )
14
14
  JDBC_DATABASES = %w( jdbcmysql jdbcsqlite3 jdbcpostgresql jdbc )
15
15
  DATABASES.concat(JDBC_DATABASES)
16
- WEBPACKS = %w( react vue angular )
17
16
 
18
17
  attr_accessor :rails_template
19
18
  add_shebang_option!
@@ -31,9 +30,6 @@ module Rails
31
30
  class_option :database, type: :string, aliases: "-d", default: "sqlite3",
32
31
  desc: "Preconfigure for selected database (options: #{DATABASES.join('/')})"
33
32
 
34
- class_option :webpack, type: :string, default: nil,
35
- desc: "Preconfigure for app-like JavaScript with Webpack (options: #{WEBPACKS.join('/')})"
36
-
37
33
  class_option :skip_yarn, type: :boolean, default: false,
38
34
  desc: "Don't use Yarn for managing JavaScript dependencies"
39
35
 
@@ -212,6 +212,8 @@ module Rails
212
212
  RESERVED_NAMES = %w[application destroy plugin runner test]
213
213
 
214
214
  class AppGenerator < AppBase # :nodoc:
215
+ WEBPACKS = %w( react vue angular )
216
+
215
217
  add_shared_options_for "application"
216
218
 
217
219
  # Add bin/rails options
@@ -224,6 +226,9 @@ module Rails
224
226
  class_option :skip_bundle, type: :boolean, aliases: "-B", default: false,
225
227
  desc: "Don't run bundle install"
226
228
 
229
+ class_option :webpack, type: :string, default: nil,
230
+ desc: "Preconfigure for app-like JavaScript with Webpack (options: #{WEBPACKS.join('/')})"
231
+
227
232
  def initialize(*args)
228
233
  super
229
234
 
@@ -36,25 +36,29 @@ module Rails
36
36
  end
37
37
 
38
38
  def add_encrypted_secrets_file
39
- unless File.exist?("config/secrets.yml.enc")
39
+ unless (defined?(@@skip_secrets_file) && @@skip_secrets_file) || File.exist?("config/secrets.yml.enc")
40
40
  say "Adding config/secrets.yml.enc to store secrets that needs to be encrypted."
41
41
  say ""
42
+ say "For now the file contains this but it's been encrypted with the generated key:"
43
+ say ""
44
+ say Secrets.template, :on_green
45
+ say ""
42
46
 
43
- template "config/secrets.yml.enc" do |prefill|
44
- say ""
45
- say "For now the file contains this but it's been encrypted with the generated key:"
46
- say ""
47
- say prefill, :on_green
48
- say ""
49
-
50
- Secrets.encrypt(prefill)
51
- end
47
+ Secrets.write(Secrets.template)
52
48
 
53
49
  say "You can edit encrypted secrets with `bin/rails secrets:edit`."
54
-
55
- say "Add this to your config/environments/production.rb:"
56
- say "config.read_encrypted_secrets = true"
50
+ say ""
57
51
  end
52
+
53
+ say "Add this to your config/environments/production.rb:"
54
+ say "config.read_encrypted_secrets = true"
55
+ end
56
+
57
+ def self.skip_secrets_file
58
+ @@skip_secrets_file = true
59
+ yield
60
+ ensure
61
+ @@skip_secrets_file = false
58
62
  end
59
63
 
60
64
  private
@@ -1,5 +1,6 @@
1
1
  require "yaml"
2
2
  require "active_support/message_encryptor"
3
+ require "active_support/core_ext/string/strip"
3
4
 
4
5
  module Rails
5
6
  # Greatly inspired by Ara T. Howard's magnificent sekrets gem. 😘
@@ -37,6 +38,15 @@ module Rails
37
38
  ENV["RAILS_MASTER_KEY"] || read_key_file || handle_missing_key
38
39
  end
39
40
 
41
+ def template
42
+ <<-end_of_template.strip_heredoc
43
+ # See `secrets.yml` for tips on generating suitable keys.
44
+ # production:
45
+ # external_api_key: 1466aac22e6a869134be3d09b9e89232fc2c2289…
46
+
47
+ end_of_template
48
+ end
49
+
40
50
  def encrypt(data)
41
51
  encryptor.encrypt_and_sign(data)
42
52
  end
@@ -54,15 +64,12 @@ module Rails
54
64
  FileUtils.mv("#{path}.tmp", path)
55
65
  end
56
66
 
57
- def read_for_editing
58
- tmp_path = File.join(Dir.tmpdir, File.basename(path))
59
- IO.binwrite(tmp_path, read)
60
-
61
- yield tmp_path
67
+ def read_for_editing(&block)
68
+ writing(read, &block)
69
+ end
62
70
 
63
- write(IO.binread(tmp_path))
64
- ensure
65
- FileUtils.rm(tmp_path) if File.exist?(tmp_path)
71
+ def read_template_for_editing(&block)
72
+ writing(template, &block)
66
73
  end
67
74
 
68
75
  private
@@ -92,6 +99,17 @@ module Rails
92
99
  end
93
100
  end
94
101
 
102
+ def writing(contents)
103
+ tmp_path = File.join(Dir.tmpdir, File.basename(path))
104
+ File.write(tmp_path, contents)
105
+
106
+ yield tmp_path
107
+
108
+ write(File.read(tmp_path))
109
+ ensure
110
+ FileUtils.rm(tmp_path) if File.exist?(tmp_path)
111
+ end
112
+
95
113
  def encryptor
96
114
  @encryptor ||= ActiveSupport::MessageEncryptor.new([ key ].pack("H*"), cipher: @cipher)
97
115
  end
@@ -48,6 +48,7 @@ namespace :test do
48
48
  Minitest.rake_run(["test/controllers", "test/mailers", "test/functional"])
49
49
  end
50
50
 
51
+ desc "Run system tests only"
51
52
  task system: "test:prepare" do
52
53
  $: << "test"
53
54
  Minitest.rake_run(["test/system"])
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: railties
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.1.1
4
+ version: 5.1.2.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-05-12 00:00:00.000000000 Z
11
+ date: 2017-06-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 5.1.1
19
+ version: 5.1.2.rc1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 5.1.1
26
+ version: 5.1.2.rc1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: actionpack
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 5.1.1
33
+ version: 5.1.2.rc1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 5.1.1
40
+ version: 5.1.2.rc1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -92,14 +92,14 @@ dependencies:
92
92
  requirements:
93
93
  - - '='
94
94
  - !ruby/object:Gem::Version
95
- version: 5.1.1
95
+ version: 5.1.2.rc1
96
96
  type: :development
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - '='
101
101
  - !ruby/object:Gem::Version
102
- version: 5.1.1
102
+ version: 5.1.2.rc1
103
103
  description: 'Rails internals: application bootup, plugins, generators, and rake tasks.'
104
104
  email: david@loudthinking.com
105
105
  executables:
@@ -269,7 +269,6 @@ files:
269
269
  - lib/rails/generators/rails/controller/controller_generator.rb
270
270
  - lib/rails/generators/rails/controller/templates/controller.rb
271
271
  - lib/rails/generators/rails/encrypted_secrets/encrypted_secrets_generator.rb
272
- - lib/rails/generators/rails/encrypted_secrets/templates/config/secrets.yml.enc
273
272
  - lib/rails/generators/rails/generator/USAGE
274
273
  - lib/rails/generators/rails/generator/generator_generator.rb
275
274
  - lib/rails/generators/rails/generator/templates/%file_name%_generator.rb.tt
@@ -422,14 +421,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
422
421
  version: 2.2.2
423
422
  required_rubygems_version: !ruby/object:Gem::Requirement
424
423
  requirements:
425
- - - ">="
424
+ - - ">"
426
425
  - !ruby/object:Gem::Version
427
- version: '0'
426
+ version: 1.3.1
428
427
  requirements: []
429
428
  rubyforge_project:
430
- rubygems_version: 2.6.10
429
+ rubygems_version: 2.6.12
431
430
  signing_key:
432
431
  specification_version: 4
433
432
  summary: Tools for creating, working with, and running Rails applications.
434
433
  test_files: []
435
- has_rdoc:
@@ -1,3 +0,0 @@
1
- # See `secrets.yml` for tips on generating suitable keys.
2
- # production:
3
- # external_api_key: 1466aac22e6a869134be3d09b9e89232fc2c2289…