jets 2.0.6 → 2.1.0

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
  SHA256:
3
- metadata.gz: cdb8cb528f7e05335c066a9239d76b06a57b198cd2fce9fe653aa4a351f8b12b
4
- data.tar.gz: d31c7c09ec2e31be38578d0bdfbeb8a687b3df47b0b728e8ab8e3f9e400bcaaf
3
+ metadata.gz: 7210442948a1180913859f3afbd0aebb049560adfdf53faf02357c4f299bb246
4
+ data.tar.gz: b94be0bc50ec242e9c6e908050a4ddd342874e9026cdf12f28ae54e465d12303
5
5
  SHA512:
6
- metadata.gz: 174ef5bc4919d1bb6b9ae6eba16dfdebbebfec44d0501750ada68dfc03fcd119a43de47f85acfbe9a198e3d32eb9b7303f20769f9672a56575e6367520394634
7
- data.tar.gz: a540230d02d1570fffc08df01ea0f109994984f242afaf61bbec8d539e24c69996de533e048fff454a608dc32dfe2b7bafe1938bbf7e5d24db8f469c92a230cf
6
+ metadata.gz: 95f6b7c61d0867b09c6af7f099fc84ec3de07defec86707f8aaadc8aac2da318557260b828142133384350163bd0bcbccc0a0f5bd204eb1c2645be0791e9637e
7
+ data.tar.gz: 0cb91a7f2593103a557a59f0d3d8b2732f9ba196725ed2825d12b34db2f2879e72bff137e8193411aecb0e31522c704bacbf2bbf9b5329242dad514655f38b5d
data/CHANGELOG.md CHANGED
@@ -3,6 +3,9 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  This project *loosely tries* to adhere to [Semantic Versioning](http://semver.org/).
5
5
 
6
+ ## [2.1.0]
7
+ - #345 upgrade to use rails 6 components
8
+
6
9
  ## [2.0.6]
7
10
  - #344 controller `helper_method` macro
8
11
 
data/jets.gemspec CHANGED
@@ -27,11 +27,11 @@ Gem::Specification.new do |spec|
27
27
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
28
28
  spec.require_paths = ["lib"]
29
29
 
30
- spec.add_dependency "actionmailer", "~> 5.2.1"
31
- spec.add_dependency "actionpack", "~> 5.2.1"
32
- spec.add_dependency "actionview", "~> 5.2.1"
33
- spec.add_dependency "activerecord", "~> 5.2.1"
34
- spec.add_dependency "activesupport", "~> 5.2.1"
30
+ spec.add_dependency "actionmailer", "~> 6.0.0"
31
+ spec.add_dependency "actionpack", "~> 6.0.0"
32
+ spec.add_dependency "actionview", "~> 6.0.0"
33
+ spec.add_dependency "activerecord", "~> 6.0.0"
34
+ spec.add_dependency "activesupport", "~> 6.0.0"
35
35
  spec.add_dependency "aws-sdk-apigateway"
36
36
  spec.add_dependency "aws-sdk-cloudformation"
37
37
  spec.add_dependency "aws-sdk-cloudwatchlogs"
@@ -53,7 +53,7 @@ Gem::Specification.new do |spec|
53
53
  spec.add_dependency "memoist"
54
54
  spec.add_dependency "mimemagic"
55
55
  spec.add_dependency "rack"
56
- spec.add_dependency "railties", "~> 5.2.1" # ActiveRecord database_tasks.rb require this
56
+ spec.add_dependency "railties", "~> 6.0.0" # for ActiveRecord database_tasks.rb
57
57
  spec.add_dependency "rainbow"
58
58
  spec.add_dependency "recursive-open-struct"
59
59
  spec.add_dependency "shotgun"
@@ -175,15 +175,16 @@ class Jets::Application
175
175
  end
176
176
  end
177
177
 
178
- def load_db_config
178
+ def load_db_config(database_yml="#{Jets.root}/config/database.yml")
179
179
  config.database = {}
180
180
 
181
181
  Jets::Dotenv.load!
182
- database_yml = "#{Jets.root}/config/database.yml"
183
182
  if File.exist?(database_yml)
183
+ require "active_record/database_configurations" # lazy require
184
184
  text = Jets::Erb.result(database_yml)
185
- db_config = YAML.load(text)
186
- config.database = db_config
185
+ db_configs = YAML.load(text)
186
+ configurations = ActiveRecord::DatabaseConfigurations.new(db_configs)
187
+ config.database = configurations
187
188
  end
188
189
  end
189
190
 
data/lib/jets/booter.rb CHANGED
@@ -23,16 +23,48 @@ class Jets::Booter
23
23
  run_turbines(:after_initializers)
24
24
  Jets.application.finish!
25
25
 
26
- # Eager load project code. Rather have user find out early than later on AWS Lambda.
27
- Jets::Autoloaders.main.eager_load
26
+ setup_db # establish db connections in Lambda Execution Context.
27
+ # The eager load calls connects_to in models and establish those connections in Lambda Execution Context also.
28
+ Jets::Autoloaders.main.eager_load # Eager load project code. Rather have user find out early than later on AWS Lambda.
28
29
 
29
- setup_db
30
30
  # TODO: Figure out how to build middleware during Jets.boot without breaking jets new and webpacker:install
31
31
  # build_middleware_stack
32
32
 
33
33
  @booted = true
34
34
  end
35
35
 
36
+ # Using ActiveRecord outside of Rails, so we need to set up the db connection ourself.
37
+ #
38
+ # Only connects to database for ActiveRecord and when config/database.yml exists.
39
+ # Dynomite handles connecting to the clients lazily.
40
+ def setup_db
41
+ return unless File.exist?("#{Jets.root}/config/database.yml")
42
+
43
+ db_configs = Jets.application.config.database
44
+ # DatabaseTasks.database_configuration for db:create db:migrate tasks
45
+ # Documented in DatabaseTasks that this is the right way to set it when
46
+ # using ActiveRecord rake tasks outside of Rails.
47
+ ActiveRecord::Tasks::DatabaseTasks.database_configuration = db_configs
48
+
49
+ if db_configs[Jets.env].blank?
50
+ abort("ERROR: config/database.yml exists but no environment section configured for #{Jets.env}")
51
+ end
52
+ ActiveRecord::Base.configurations = db_configs
53
+ connect_db
54
+ end
55
+
56
+ # Eager connect to database, so connections are established in the Lambda Execution Context and get reused.
57
+ # Interestingly, the connections info is stored in the shared state but the connection doesnt show up on
58
+ # `show processlist` until after a query. Have confirmed that the connection is reused and the connection count stays
59
+ # the same.
60
+ def connect_db
61
+ primary_hash_config = ActiveRecord::Base.configurations.configs_for(env_name: Jets.env).find { |hash_config|
62
+ hash_config.spec_name == "primary"
63
+ }
64
+ primary_config = primary_hash_config.config # config is a normal Ruby Hash
65
+ ActiveRecord::Base.establish_connection(primary_config)
66
+ end
67
+
36
68
  def load_internal_turbines
37
69
  Dir.glob("#{__dir__}/internal/turbines/**/*.rb").each do |path|
38
70
  Jets::Autoloaders.once.preload(path)
@@ -72,27 +104,6 @@ class Jets::Booter
72
104
  Jets.application.build_stack
73
105
  end
74
106
 
75
- # Only connects connect to database for ActiveRecord and when
76
- # config/database.yml exists.
77
- # Dynomite handles connecting to the clients lazily.
78
- def setup_db
79
- return unless File.exist?("#{Jets.root}/config/database.yml")
80
-
81
- db_configs = Jets.application.config.database
82
- # DatabaseTasks.database_configuration for db:create db:migrate tasks
83
- # Documented in DatabaseTasks that this is the right way to set it when
84
- # using ActiveRecord rake tasks outside of Rails.
85
- ActiveRecord::Tasks::DatabaseTasks.database_configuration = db_configs
86
-
87
- current_config = db_configs[Jets.env]
88
- if current_config.blank?
89
- abort("ERROR: config/database.yml exists but no environment section configured for #{Jets.env}")
90
- end
91
- # Using ActiveRecord rake tasks outside of Rails, so we need to set up the
92
- # db connection ourselves
93
- ActiveRecord::Base.establish_connection(current_config)
94
- end
95
-
96
107
  # Cannot call this for the jets new
97
108
  def confirm_jets_project!
98
109
  unless File.exist?("#{Jets.root}/config/application.rb")
@@ -0,0 +1,21 @@
1
+ require "recursive-open-struct"
2
+
3
+ module Jets::Commands::Db::Tasks::Dummy
4
+ class App
5
+ def config
6
+ Config.new(
7
+ paths: {
8
+ db: ["db"],
9
+ }
10
+ )
11
+ end
12
+
13
+ def paths
14
+ RecursiveOpenStruct.new(
15
+ paths: {
16
+ "db/migrate": ["db/migrate"]
17
+ }
18
+ )
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,14 @@
1
+ require "recursive-open-struct"
2
+
3
+ module Jets::Commands::Db::Tasks::Dummy
4
+ class Config < RecursiveOpenStruct
5
+ def load_database_yaml # :nodoc:
6
+ require "rails/application/dummy_erb_compiler"
7
+
8
+ path = "#{Jets.root}/config/database.yml"
9
+ yaml = Pathname.new(path)
10
+ erb = DummyERB.new(yaml.read)
11
+ YAML.load(erb.result) || {}
12
+ end
13
+ end
14
+ end
@@ -4,7 +4,6 @@ class Jets::Commands::Db::Tasks
4
4
  # Lazy require rails so Rails const is only defined in jets db:* tasks
5
5
  require "rails"
6
6
  require "active_record"
7
- require "recursive-open-struct"
8
7
 
9
8
  # Jets.boot # Jets.boot here screws up jets -h, the db_config doesnt seem to match exactly
10
9
  # but seems to be working anyway.
@@ -15,21 +14,12 @@ class Jets::Commands::Db::Tasks
15
14
 
16
15
  # Need to mock out the usage of Rails.application in:
17
16
  # activerecord-5.1.4/lib/active_record/tasks/database_tasks.rb
18
- Rails.application = RecursiveOpenStruct.new(
19
- config: {
20
- paths: {
21
- db: ["db"],
22
- }
23
- },
24
- paths: {
25
- "db/migrate": ["db/migrate"]
26
- }
27
- )
17
+ Rails.application = Dummy::App.new
28
18
  load "active_record/railties/databases.rake"
29
-
30
19
  load File.expand_path("../environment-task.rake", __FILE__)
31
20
  end
32
21
 
22
+
33
23
  # Thanks: https://stackoverflow.com/questions/19206764/how-can-i-load-activerecord-database-tasks-on-a-ruby-project-outside-rails/24840749
34
24
  class Seeder
35
25
  def initialize(seed_file)
@@ -1,6 +1,6 @@
1
1
  default: &default
2
2
  adapter: <%= @adapter %>
3
- encoding: utf8
3
+ encoding: utf8mb4
4
4
  pool: <%%= ENV["DB_POOL"] || 5 %>
5
5
  database: <%%= ENV['DB_NAME'] || '<%= @database_development %>' %>
6
6
  <% if @adapter == 'postgresql' -%>
@@ -1,9 +1,10 @@
1
1
  default: &default
2
2
  adapter: <%= @database == 'mysql' ? 'mysql2' : 'postgresql' %>
3
- encoding: utf8
3
+ encoding: utf8mb4
4
4
  pool: <%%= ENV["DB_POOL"] || 5 %>
5
5
  database: <%%= ENV['DB_NAME'] || '<%= @project_name %>_development' %>
6
6
  <% if @database == 'mysql' -%>
7
+ encoding: utf8mb4
7
8
  username: <%%= ENV['DB_USER'] || 'root' %>
8
9
  <% else -%>
9
10
  username: <%%= ENV['DB_USER'] || ENV['USER'] %>
@@ -1,6 +1,6 @@
1
1
  default: &default
2
2
  adapter: <%= @adapter %>
3
- encoding: utf8
3
+ encoding: utf8mb4
4
4
  pool: <%%= ENV["DB_POOL"] || 5 %>
5
5
  database: <%%= ENV['DB_NAME'] || '<%= @database_development %>' %>
6
6
  <% if @adapter == 'postgresql' -%>
data/lib/jets/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Jets
2
- VERSION = "2.0.6"
2
+ VERSION = "2.1.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jets
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.6
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
@@ -16,70 +16,70 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 5.2.1
19
+ version: 6.0.0
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.2.1
26
+ version: 6.0.0
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.2.1
33
+ version: 6.0.0
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.2.1
40
+ version: 6.0.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: actionview
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 5.2.1
47
+ version: 6.0.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 5.2.1
54
+ version: 6.0.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: activerecord
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 5.2.1
61
+ version: 6.0.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 5.2.1
68
+ version: 6.0.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: activesupport
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 5.2.1
75
+ version: 6.0.0
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 5.2.1
82
+ version: 6.0.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: aws-sdk-apigateway
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -380,14 +380,14 @@ dependencies:
380
380
  requirements:
381
381
  - - "~>"
382
382
  - !ruby/object:Gem::Version
383
- version: 5.2.1
383
+ version: 6.0.0
384
384
  type: :runtime
385
385
  prerelease: false
386
386
  version_requirements: !ruby/object:Gem::Requirement
387
387
  requirements:
388
388
  - - "~>"
389
389
  - !ruby/object:Gem::Version
390
- version: 5.2.1
390
+ version: 6.0.0
391
391
  - !ruby/object:Gem::Dependency
392
392
  name: rainbow
393
393
  requirement: !ruby/object:Gem::Requirement
@@ -636,6 +636,8 @@ files:
636
636
  - lib/jets/commands/db.rb
637
637
  - lib/jets/commands/db/environment-task.rake
638
638
  - lib/jets/commands/db/tasks.rb
639
+ - lib/jets/commands/db/tasks/dummy/app.rb
640
+ - lib/jets/commands/db/tasks/dummy/config.rb
639
641
  - lib/jets/commands/dbconsole.rb
640
642
  - lib/jets/commands/delete.rb
641
643
  - lib/jets/commands/deploy.rb