graphiti 1.1.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +12 -0
  4. data/Appraisals +20 -5
  5. data/{lib/generators → deprecated_generators}/graphiti/api_test_generator.rb +2 -3
  6. data/{lib/generators → deprecated_generators}/graphiti/generator_mixin.rb +0 -0
  7. data/{lib/generators → deprecated_generators}/graphiti/install_generator.rb +1 -2
  8. data/{lib/generators → deprecated_generators}/graphiti/resource_generator.rb +1 -2
  9. data/{lib/generators → deprecated_generators}/graphiti/resource_test_generator.rb +1 -2
  10. data/{lib/generators → deprecated_generators}/graphiti/templates/application_resource.rb.erb +0 -0
  11. data/{lib/generators → deprecated_generators}/graphiti/templates/controller.rb.erb +0 -0
  12. data/{lib/generators → deprecated_generators}/graphiti/templates/create_request_spec.rb.erb +0 -0
  13. data/{lib/generators → deprecated_generators}/graphiti/templates/destroy_request_spec.rb.erb +0 -0
  14. data/{lib/generators → deprecated_generators}/graphiti/templates/index_request_spec.rb.erb +0 -0
  15. data/{lib/generators → deprecated_generators}/graphiti/templates/resource.rb.erb +0 -0
  16. data/{lib/generators → deprecated_generators}/graphiti/templates/resource_reads_spec.rb.erb +0 -0
  17. data/{lib/generators → deprecated_generators}/graphiti/templates/resource_writes_spec.rb.erb +0 -0
  18. data/{lib/generators → deprecated_generators}/graphiti/templates/show_request_spec.rb.erb +0 -0
  19. data/{lib/generators → deprecated_generators}/graphiti/templates/update_request_spec.rb.erb +0 -0
  20. data/gemfiles/rails_4.gemfile +0 -1
  21. data/gemfiles/rails_5.gemfile +0 -1
  22. data/gemfiles/rails_5_graphiti_rails.gemfile +20 -0
  23. data/gemfiles/rails_6.gemfile +2 -3
  24. data/gemfiles/rails_6_graphiti_rails.gemfile +20 -0
  25. data/graphiti.gemspec +2 -2
  26. data/lib/graphiti.rb +88 -78
  27. data/lib/graphiti/configuration.rb +15 -7
  28. data/lib/graphiti/debugger.rb +7 -6
  29. data/lib/graphiti/{tasks.rb → deprecated_tasks.rb} +0 -0
  30. data/lib/graphiti/rails.rb +3 -0
  31. data/lib/graphiti/railtie.rb +8 -2
  32. data/lib/graphiti/renderer.rb +2 -1
  33. data/lib/graphiti/resource/remote.rb +1 -0
  34. data/lib/graphiti/resource/sideloading.rb +3 -2
  35. data/lib/graphiti/responders.rb +2 -0
  36. data/lib/graphiti/schema.rb +2 -1
  37. data/lib/graphiti/scope.rb +3 -1
  38. data/lib/graphiti/sideload.rb +10 -13
  39. data/lib/graphiti/util/serializer_relationships.rb +3 -2
  40. data/lib/graphiti/version.rb +1 -1
  41. metadata +20 -30
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4afe1b88c18d728d9a2fc0a3f80cb425c08ee5effa28f1e5237bde5b08d944ce
4
- data.tar.gz: 1a2545e6c20612bf12b0684c0a4e92d95fb618ca210b8b3db80a7822ffd9821c
3
+ metadata.gz: 787f7fb976a85d75236bafedc2fc5c2e798757dc82a0cf17d6ec6d46ca2beef5
4
+ data.tar.gz: d1fa1569f15b1cdc336b722985bf64f929167cd151201efbb694d78ace9eccef
5
5
  SHA512:
6
- metadata.gz: efbc08d434992a6d797e0c0b29b97d6a6f074094c09e2248faac1b9a4f109f743d40591b2d6bb8fd0d39bda89755c510273aaaceb51bac57b9fcf451fcd9f7e6
7
- data.tar.gz: 13b954fe3312e9b6652a20c85b86e0fd28b42cd572062e83665251305242a056f060986b0e4e122738f92ccdff8d9d33e6b65092c8948c591524394ef1b6dc8f
6
+ metadata.gz: 9cf5251b0dc07f16affcd69dc2ee6ef7e8ff756bf0170d1a1a5c881cbc2510ae0e5d0e5465d8accfd8dbd17a2ab4d9fe4d1d87fde16af8b2d4f2e59eae748f5d
7
+ data.tar.gz: f05e5bb7f5b88bcf71a94023f71cd1c29da8ddcc6d71c719d6285a9acdc49cf411d4e4b89fb62e8ddfaec13fc0b45ae1284af654bfa23947bda579136fc90002
data/.gitignore CHANGED
@@ -8,6 +8,7 @@
8
8
  /gemfiles/*.lock
9
9
  /tmp/
10
10
  .byebug_history
11
+ spec/.rspec-examples
11
12
  spec/dummy/log/*
12
13
  *~
13
14
  .vscode/
@@ -9,6 +9,8 @@ gemfile:
9
9
  - gemfiles/rails_4.gemfile
10
10
  - gemfiles/rails_5.gemfile
11
11
  - gemfiles/rails_6.gemfile
12
+ - gemfiles/rails_5_graphiti_rails.gemfile
13
+ - gemfiles/rails_6_graphiti_rails.gemfile
12
14
  env:
13
15
  - COMMAND=standardrb --no-fix --format progress
14
16
  - COMMAND=rspec
@@ -21,6 +23,10 @@ matrix:
21
23
  gemfile: gemfiles/rails_5.gemfile
22
24
  - env: COMMAND=standardrb --no-fix --format progress
23
25
  gemfile: gemfiles/rails_6.gemfile
26
+ - env: COMMAND=standardrb --no-fix --format progress
27
+ gemfile: gemfiles/rails_5_graphiti_rails.gemfile
28
+ - env: COMMAND=standardrb --no-fix --format progress
29
+ gemfile: gemfiles/rails_6_graphiti_rails.gemfile
24
30
  - env: COMMAND=rspec APPRAISAL_INITIALIZED=true
25
31
  gemfile: Gemfile
26
32
  - env: COMMAND=rspec
@@ -29,8 +35,14 @@ matrix:
29
35
  gemfile: gemfiles/rails_5.gemfile
30
36
  - env: COMMAND=rspec
31
37
  gemfile: gemfiles/rails_6.gemfile
38
+ - env: COMMAND=rspec
39
+ gemfile: gemfiles/rails_5_graphiti_rails.gemfile
40
+ - env: COMMAND=rspec
41
+ gemfile: gemfiles/rails_6_graphiti_rails.gemfile
32
42
  - gemfile: gemfiles/rails_6.gemfile
33
43
  rvm: 2.4
44
+ - gemfile: gemfiles/rails_6_graphiti_rails.gemfile
45
+ rvm: 2.4
34
46
  - gemfile: gemfiles/rails_4.gemfile
35
47
  rvm: 2.5
36
48
  - gemfile: gemfiles/rails_4.gemfile
data/Appraisals CHANGED
@@ -3,7 +3,6 @@ appraise "rails-4" do
3
3
  gem "rspec-rails"
4
4
  gem "sqlite3", "~> 1.3.6"
5
5
  gem "database_cleaner"
6
- gem "kaminari", "~> 0.17"
7
6
  end
8
7
 
9
8
  appraise "rails-5" do
@@ -11,13 +10,29 @@ appraise "rails-5" do
11
10
  gem "rspec-rails"
12
11
  gem "sqlite3", "~> 1.3.6"
13
12
  gem "database_cleaner"
14
- gem "kaminari", "~> 0.17"
15
13
  end
16
14
 
17
- appraise "rails-6" do
18
- gem "rails", "~> 6.0.0.beta2"
15
+ appraise "rails-5-graphiti-rails" do
16
+ gem "rails", "~> 5.2"
19
17
  gem "rspec-rails"
20
18
  gem "sqlite3", "~> 1.3.6"
21
19
  gem "database_cleaner"
22
- gem "kaminari", "~> 0.17"
20
+ gem "rescue_registry", git: "https://github.com/wagenet/rescue_registry.git", branch: "master"
21
+ gem "graphiti-rails", git: "https://github.com/wagenet/graphiti-rails.git", branch: "master"
22
+ end
23
+
24
+ appraise "rails-6" do
25
+ gem "rails", "~> 6.0.0.rc1"
26
+ gem "rspec-rails"
27
+ gem "sqlite3", "~> 1.4.0"
28
+ gem "database_cleaner"
29
+ end
30
+
31
+ appraise "rails-6-graphiti-rails" do
32
+ gem "rails", "~> 6.0.0.rc1"
33
+ gem "rspec-rails"
34
+ gem "sqlite3", "~> 1.4.0"
35
+ gem "database_cleaner"
36
+ gem "rescue_registry", git: "https://github.com/wagenet/rescue_registry.git", branch: "master"
37
+ gem "graphiti-rails", git: "https://github.com/wagenet/graphiti-rails.git", branch: "master"
23
38
  end
@@ -1,11 +1,10 @@
1
- $:.unshift File.dirname(__FILE__)
2
- require "generator_mixin"
1
+ require_relative "generator_mixin"
3
2
 
4
3
  module Graphiti
5
4
  class ApiTestGenerator < ::Rails::Generators::Base
6
5
  include GeneratorMixin
7
6
 
8
- source_root File.expand_path("../templates", __FILE__)
7
+ source_root File.expand_path("templates", __dir__)
9
8
 
10
9
  argument :resource, type: :string
11
10
  class_option :actions,
@@ -1,5 +1,4 @@
1
- $:.unshift File.dirname(__FILE__)
2
- require "generator_mixin"
1
+ require_relative "generator_mixin"
3
2
 
4
3
  module Graphiti
5
4
  class InstallGenerator < ::Rails::Generators::Base
@@ -1,5 +1,4 @@
1
- $:.unshift File.dirname(__FILE__)
2
- require "generator_mixin"
1
+ require_relative "generator_mixin"
3
2
 
4
3
  module Graphiti
5
4
  class ResourceGenerator < ::Rails::Generators::NamedBase
@@ -1,5 +1,4 @@
1
- $:.unshift File.dirname(__FILE__)
2
- require "generator_mixin"
1
+ require_relative "generator_mixin"
3
2
 
4
3
  module Graphiti
5
4
  class ResourceTestGenerator < ::Rails::Generators::Base
@@ -6,7 +6,6 @@ gem "rails", "~> 4.1"
6
6
  gem "rspec-rails"
7
7
  gem "sqlite3", "~> 1.3.6"
8
8
  gem "database_cleaner"
9
- gem "kaminari", "~> 0.17"
10
9
 
11
10
  group :test do
12
11
  gem "pry"
@@ -6,7 +6,6 @@ gem "rails", "~> 5.2"
6
6
  gem "rspec-rails"
7
7
  gem "sqlite3", "~> 1.3.6"
8
8
  gem "database_cleaner"
9
- gem "kaminari", "~> 0.17"
10
9
 
11
10
  group :test do
12
11
  gem "pry"
@@ -0,0 +1,20 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 5.2"
6
+ gem "rspec-rails"
7
+ gem "sqlite3", "~> 1.3.6"
8
+ gem "database_cleaner"
9
+ gem "rescue_registry", git: "https://github.com/wagenet/rescue_registry.git", branch: "master"
10
+ gem "graphiti-rails", git: "https://github.com/wagenet/graphiti-rails.git", branch: "master"
11
+
12
+ group :test do
13
+ gem "pry"
14
+ gem "pry-byebug", platform: [:mri]
15
+ gem "appraisal"
16
+ gem "guard"
17
+ gem "guard-rspec"
18
+ end
19
+
20
+ gemspec path: "../"
@@ -2,11 +2,10 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rails", "~> 6.0.0.beta2"
5
+ gem "rails", "~> 6.0.0.rc1"
6
6
  gem "rspec-rails"
7
- gem "sqlite3", "~> 1.4"
7
+ gem "sqlite3", "~> 1.4.0"
8
8
  gem "database_cleaner"
9
- gem "kaminari", "~> 0.17"
10
9
 
11
10
  group :test do
12
11
  gem "pry"
@@ -0,0 +1,20 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 6.0.0.rc1"
6
+ gem "rspec-rails"
7
+ gem "sqlite3", "~> 1.4.0"
8
+ gem "database_cleaner"
9
+ gem "rescue_registry", git: "https://github.com/wagenet/rescue_registry.git", branch: "master"
10
+ gem "graphiti-rails", git: "https://github.com/wagenet/graphiti-rails.git", branch: "master"
11
+
12
+ group :test do
13
+ gem "pry"
14
+ gem "pry-byebug", platform: [:mri]
15
+ gem "appraisal"
16
+ gem "guard"
17
+ gem "guard-rspec"
18
+ end
19
+
20
+ gemspec path: "../"
@@ -22,13 +22,13 @@ Gem::Specification.new do |spec|
22
22
  spec.add_dependency "dry-types", "~> 0.15"
23
23
  spec.add_dependency "graphiti_errors", "~> 1.1.0"
24
24
  spec.add_dependency "concurrent-ruby", "~> 1.0"
25
- spec.add_dependency "activesupport", [">= 4.1", "< 6"]
25
+ spec.add_dependency "activesupport", ">= 4.1"
26
26
 
27
27
  spec.add_development_dependency "faraday", "~> 0.15"
28
28
  spec.add_development_dependency "kaminari", "~> 0.17"
29
29
  spec.add_development_dependency "bundler"
30
30
  spec.add_development_dependency "rake", "~> 10.0"
31
- spec.add_development_dependency "activemodel", [">= 4.1", "< 6"]
31
+ spec.add_development_dependency "activemodel", ">= 4.1"
32
32
  spec.add_development_dependency "graphiti_spec_helpers", "1.0.beta.4"
33
33
  spec.add_development_dependency "standard"
34
34
  end
@@ -12,84 +12,9 @@ require "graphiti_errors"
12
12
 
13
13
  require "jsonapi/serializable"
14
14
 
15
- require "graphiti/version"
16
- require "graphiti/jsonapi_serializable_ext"
17
- require "graphiti/configuration"
18
- require "graphiti/context"
19
- require "graphiti/errors"
20
- require "graphiti/types"
21
- require "graphiti/schema"
22
- require "graphiti/schema_diff"
23
- require "graphiti/adapters/abstract"
24
- require "graphiti/resource/sideloading"
25
- require "graphiti/resource/links"
26
- require "graphiti/resource/configuration"
27
- require "graphiti/resource/dsl"
28
- require "graphiti/resource/interface"
29
- require "graphiti/resource/polymorphism"
30
- require "graphiti/resource/documentation"
31
- require "graphiti/resource/persistence"
32
- require "graphiti/resource/remote"
33
- require "graphiti/sideload"
34
- require "graphiti/sideload/has_many"
35
- require "graphiti/sideload/belongs_to"
36
- require "graphiti/sideload/has_one"
37
- require "graphiti/sideload/many_to_many"
38
- require "graphiti/sideload/polymorphic_belongs_to"
39
- require "graphiti/resource"
40
- require "graphiti/resource_proxy"
41
- require "graphiti/request_validator"
42
- require "graphiti/query"
43
- require "graphiti/scope"
44
- require "graphiti/deserializer"
45
- require "graphiti/renderer"
46
- require "graphiti/hash_renderer"
47
- require "graphiti/filter_operators"
48
- require "graphiti/scoping/base"
49
- require "graphiti/scoping/sort"
50
- require "graphiti/scoping/paginate"
51
- require "graphiti/scoping/extra_attributes"
52
- require "graphiti/scoping/filterable"
53
- require "graphiti/scoping/default_filter"
54
- require "graphiti/scoping/filter"
55
- require "graphiti/stats/dsl"
56
- require "graphiti/stats/payload"
57
- require "graphiti/delegates/pagination"
58
- require "graphiti/util/include_params"
59
- require "graphiti/util/field_params"
60
- require "graphiti/util/hash"
61
- require "graphiti/util/relationship_payload"
62
- require "graphiti/util/persistence"
63
- require "graphiti/util/validation_response"
64
- require "graphiti/util/sideload"
65
- require "graphiti/util/simple_errors"
66
- require "graphiti/util/transaction_hooks_recorder"
67
- require "graphiti/util/attribute_check"
68
- require "graphiti/util/serializer_attributes"
69
- require "graphiti/util/serializer_relationships"
70
- require "graphiti/util/class"
71
- require "graphiti/util/link"
72
- require "graphiti/util/remote_serializer"
73
- require "graphiti/util/remote_params"
74
- require "graphiti/adapters/null"
75
- require "graphiti/adapters/graphiti_api"
76
- require "graphiti/extensions/extra_attribute"
77
- require "graphiti/extensions/boolean_attribute"
78
- require "graphiti/extensions/temp_id"
79
- require "graphiti/serializer"
80
- require "graphiti/debugger"
81
-
82
- if defined?(ActiveRecord)
83
- require "graphiti/adapters/active_record"
84
- end
85
-
86
- if defined?(Rails)
87
- require "graphiti/railtie"
88
- require "graphiti/rails"
89
- require "graphiti/responders"
90
- end
91
-
92
15
  module Graphiti
16
+ DEPRECATOR = ActiveSupport::Deprecation.new('2.0', 'Graphiti')
17
+
93
18
  # @api private
94
19
  def self.context
95
20
  Thread.current[:context] ||= {}
@@ -128,7 +53,9 @@ module Graphiti
128
53
  end
129
54
 
130
55
  def self.broadcast(name, payload)
131
- name = "graphiti.#{name}"
56
+ # AS::N prefers domain naming format with more specific towards end
57
+ name = "#{name}.graphiti"
58
+
132
59
  ActiveSupport::Notifications.instrument(name, payload) do
133
60
  yield payload if block_given?
134
61
  end
@@ -170,6 +97,89 @@ module Graphiti
170
97
  end
171
98
  end
172
99
 
100
+ require "graphiti/version"
101
+ require "graphiti/jsonapi_serializable_ext"
102
+ require "graphiti/configuration"
103
+ require "graphiti/context"
104
+ require "graphiti/errors"
105
+ require "graphiti/types"
106
+ require "graphiti/schema"
107
+ require "graphiti/schema_diff"
108
+ require "graphiti/adapters/abstract"
109
+ require "graphiti/resource/sideloading"
110
+ require "graphiti/resource/links"
111
+ require "graphiti/resource/configuration"
112
+ require "graphiti/resource/dsl"
113
+ require "graphiti/resource/interface"
114
+ require "graphiti/resource/polymorphism"
115
+ require "graphiti/resource/documentation"
116
+ require "graphiti/resource/persistence"
117
+ require "graphiti/resource/remote"
118
+ require "graphiti/sideload"
119
+ require "graphiti/sideload/has_many"
120
+ require "graphiti/sideload/belongs_to"
121
+ require "graphiti/sideload/has_one"
122
+ require "graphiti/sideload/many_to_many"
123
+ require "graphiti/sideload/polymorphic_belongs_to"
124
+ require "graphiti/resource"
125
+ require "graphiti/resource_proxy"
126
+ require "graphiti/request_validator"
127
+ require "graphiti/query"
128
+ require "graphiti/scope"
129
+ require "graphiti/deserializer"
130
+ require "graphiti/renderer"
131
+ require "graphiti/hash_renderer"
132
+ require "graphiti/filter_operators"
133
+ require "graphiti/scoping/base"
134
+ require "graphiti/scoping/sort"
135
+ require "graphiti/scoping/paginate"
136
+ require "graphiti/scoping/extra_attributes"
137
+ require "graphiti/scoping/filterable"
138
+ require "graphiti/scoping/default_filter"
139
+ require "graphiti/scoping/filter"
140
+ require "graphiti/stats/dsl"
141
+ require "graphiti/stats/payload"
142
+ require "graphiti/delegates/pagination"
143
+ require "graphiti/util/include_params"
144
+ require "graphiti/util/field_params"
145
+ require "graphiti/util/hash"
146
+ require "graphiti/util/relationship_payload"
147
+ require "graphiti/util/persistence"
148
+ require "graphiti/util/validation_response"
149
+ require "graphiti/util/sideload"
150
+ require "graphiti/util/simple_errors"
151
+ require "graphiti/util/transaction_hooks_recorder"
152
+ require "graphiti/util/attribute_check"
153
+ require "graphiti/util/serializer_attributes"
154
+ require "graphiti/util/serializer_relationships"
155
+ require "graphiti/util/class"
156
+ require "graphiti/util/link"
157
+ require "graphiti/util/remote_serializer"
158
+ require "graphiti/util/remote_params"
159
+ require "graphiti/adapters/null"
160
+ require "graphiti/adapters/graphiti_api"
161
+ require "graphiti/extensions/extra_attribute"
162
+ require "graphiti/extensions/boolean_attribute"
163
+ require "graphiti/extensions/temp_id"
164
+ require "graphiti/serializer"
165
+ require "graphiti/debugger"
166
+
167
+ if defined?(ActiveRecord)
168
+ require "graphiti/adapters/active_record"
169
+ end
170
+
171
+ if defined?(Rails)
172
+ require "graphiti/rails"
173
+ require "graphiti/responders"
174
+
175
+ # graphiti-rails has own Railtie
176
+ begin
177
+ require "graphiti-rails"
178
+ rescue LoadError
179
+ require "graphiti/railtie"
180
+ end
181
+ end
182
+
173
183
  require "graphiti/runner"
174
184
 
175
185
  # Because we set 2 magic variables when processing the graph,
@@ -32,15 +32,20 @@ module Graphiti
32
32
  self.debug = ENV.fetch("GRAPHITI_DEBUG", true)
33
33
  self.debug_models = ENV.fetch("GRAPHITI_DEBUG_MODELS", false)
34
34
 
35
- if defined?(::Rails)
36
- if File.exist?("#{::Rails.root}/.graphiticfg.yml")
37
- cfg = YAML.load_file("#{::Rails.root}/.graphiticfg.yml")
38
- @schema_path = "#{::Rails.root}/public#{cfg["namespace"]}/schema.json"
35
+ # FIXME: Don't duplicate graphiti-rails efforts
36
+ if defined?(::Rails.root) && (root = ::Rails.root)
37
+ config_file = root.join(".graphiticfg.yml")
38
+ if config_file.exist?
39
+ cfg = YAML.load_file(config_file)
40
+ @schema_path = root.join("public#{cfg["namespace"]}/schema.json")
39
41
  else
40
- @schema_path = "#{::Rails.root}/public/schema.json"
42
+ @schema_path = root.join("public/schema.json")
43
+ end
44
+
45
+ if (logger = ::Rails.logger)
46
+ self.debug = logger.level.zero?
47
+ Graphiti.logger = logger
41
48
  end
42
- self.debug = ::Rails.logger.level.zero?
43
- Graphiti.logger = ::Rails.logger
44
49
  end
45
50
  end
46
51
 
@@ -66,4 +71,7 @@ module Graphiti
66
71
  send(:"#{key}=", original)
67
72
  end
68
73
  end
74
+
75
+ msg = "Use graphiti-rails's `config.graphiti.respond_to_formats`"
76
+ DEPRECATOR.deprecate_methods(Configuration, respond_to: msg, "respond_to=": msg)
69
77
  end
@@ -59,9 +59,10 @@ module Graphiti
59
59
  add_chunk(payload[:resource], payload[:parent]) do |logs, json|
60
60
  logs << [" \\_ #{sideload.name}", :yellow, true]
61
61
  json[:name] = sideload.name
62
- query = "#{payload[:resource].class.name}.all(#{params.inspect})"
63
- unless payload[:resource]
64
- query = "#{sideload.resource.class.name}: Manual sideload via .scope"
62
+ if sideload.class.scope_proc
63
+ query = "#{payload[:resource].class.name}: Manual sideload via .scope"
64
+ else
65
+ query = "#{payload[:resource].class.name}.all(#{params.inspect})"
65
66
  end
66
67
  logs << [" #{query}", :cyan, true]
67
68
  json[:query] = query
@@ -121,7 +122,7 @@ module Graphiti
121
122
  end
122
123
 
123
124
  def flush
124
- Graphiti.broadcast("debug.flush", {}) do |payload|
125
+ Graphiti.broadcast(:flush_debug, {}) do |payload|
125
126
  payload[:chunks] = chunks
126
127
  graph_statements.each do |chunk|
127
128
  flush_chunk(chunk)
@@ -187,8 +188,8 @@ module Graphiti
187
188
  end
188
189
 
189
190
  ActiveSupport::Notifications.subscribe \
190
- "graphiti.data", method(:on_data)
191
+ "resolve.graphiti", method(:on_data)
191
192
  ActiveSupport::Notifications.subscribe \
192
- "graphiti.render", method(:on_render)
193
+ "render.graphiti", method(:on_render)
193
194
  end
194
195
  end
@@ -8,6 +8,9 @@ module Graphiti
8
8
  # @see Base#wrap_context
9
9
  module Rails
10
10
  def self.included(klass)
11
+ backtrace = ::Rails::VERSION::MAJOR == 4 ? caller(2) : caller_locations(2)
12
+ Graphiti::DEPRECATOR.deprecation_warning("Including Graphiti::Rails", "Use graphiti-rails instead. See https://www.graphiti.dev/guides/graphiti-rails-migration for details.", backtrace)
13
+
11
14
  klass.class_eval do
12
15
  include Graphiti::Context
13
16
  include GraphitiErrors
@@ -1,8 +1,14 @@
1
1
  module Graphiti
2
+ # @deprecated Use graphiti-rails's Graphiti::Rails::Railtie
2
3
  class Railtie < ::Rails::Railtie
3
4
  rake_tasks do
4
- path = File.expand_path(__dir__)
5
- load "#{path}/tasks.rb"
5
+ load File.expand_path("deprecated_tasks.rb", __dir__)
6
+ end
7
+
8
+ generators do
9
+ Dir[File.expand_path("../../deprecated_generators/**/*.rb", __dir__)].each do |f|
10
+ require f
11
+ end
6
12
  end
7
13
 
8
14
  initializer "graphiti.require_activerecord_adapter" do
@@ -38,7 +38,8 @@ module Graphiti
38
38
  private
39
39
 
40
40
  def render(renderer)
41
- Graphiti.broadcast(:render, records: records, options: options) do
41
+ Graphiti.broadcast(:render, records: records, proxy: proxy, options: options) do
42
+ # TODO: If these aren't expensive to compute, set them before the broadcast block
42
43
  options[:fields] = proxy.fields
43
44
  options[:expose] ||= {}
44
45
  options[:expose][:extra_fields] = proxy.extra_fields
@@ -38,6 +38,7 @@ module Graphiti
38
38
  # Forward all headers
39
39
  def request_headers
40
40
  {}.tap do |headers|
41
+ # TODO: Maybe handle this in graphiti-rails
41
42
  if defined?(Rails) && context
42
43
  raw = context.request.headers.to_h
43
44
  if (auth = raw["HTTP_AUTHORIZATION"])
@@ -114,8 +114,9 @@ module Graphiti
114
114
  # If eager loading, ensure routes are loaded first, then apply
115
115
  # This happens in Railtie
116
116
  def eagerly_apply_sideload?(sideload)
117
- if defined?(::Rails)
118
- ::Rails.application.config.eager_load ? false : true
117
+ # TODO: Maybe handle this in graphiti-rails
118
+ if defined?(::Rails) && (app = ::Rails.application)
119
+ app.config.eager_load ? false : true
119
120
  else
120
121
  sideload.resource_class_loaded?
121
122
  end
@@ -4,6 +4,8 @@ module Graphiti
4
4
  extend ActiveSupport::Concern
5
5
 
6
6
  included do
7
+ backtrace = ::Rails::VERSION::MAJOR == 4 ? caller(2) : caller_locations(2)
8
+ DEPRECATOR.deprecation_warning("Including Graphiti::Responders", "Use graphiti-rails instead. See https://www.graphiti.dev/guides/graphiti-rails-migration for details.", backtrace)
7
9
  include ActionController::MimeResponds
8
10
  respond_to(*Graphiti.config.respond_to)
9
11
  end
@@ -3,6 +3,7 @@ module Graphiti
3
3
  attr_reader :resources
4
4
 
5
5
  def self.generate(resources = nil)
6
+ # TODO: Maybe handle this in graphiti-rails
6
7
  ::Rails.application.eager_load! if defined?(::Rails)
7
8
  resources ||= Graphiti.resources.reject(&:abstract_class?)
8
9
  resources.reject! { |r| r.name.nil? }
@@ -17,7 +18,7 @@ module Graphiti
17
18
  errors = Graphiti::SchemaDiff.new(old, schema).compare
18
19
  return errors if errors.any?
19
20
  end
20
- FileUtils.mkdir_p(Graphiti.config.schema_path.gsub("/schema.json", ""))
21
+ FileUtils.mkdir_p(Graphiti.config.schema_path.to_s.gsub("/schema.json", ""))
21
22
  File.write(Graphiti.config.schema_path, JSON.pretty_generate(schema))
22
23
  []
23
24
  end
@@ -76,8 +76,10 @@ module Graphiti
76
76
  params: @opts[:params],
77
77
  sideload: @opts[:sideload],
78
78
  parent: @opts[:parent],
79
+ # Set once data is resolved within block
80
+ # results: ...
79
81
  }
80
- Graphiti.broadcast("data", opts) do |payload|
82
+ Graphiti.broadcast(:resolve, opts) do |payload|
81
83
  yield payload
82
84
  end
83
85
  end
@@ -249,19 +249,16 @@ module Graphiti
249
249
  end
250
250
 
251
251
  if self.class.scope_proc
252
- Graphiti.broadcast("data", resource_class: resource.class, sideload: self) do |payload|
253
- sideload_scope = fire_scope(parents)
254
- sideload_scope = Scope.new sideload_scope,
255
- resource,
256
- query,
257
- parent: graph_parent,
258
- sideload: self,
259
- sideload_parent_length: parents.length,
260
- default_paginate: false
261
- sideload_scope.resolve do |sideload_results|
262
- payload[:results] = sideload_results
263
- fire_assign(parents, sideload_results)
264
- end
252
+ sideload_scope = fire_scope(parents)
253
+ sideload_scope = Scope.new sideload_scope,
254
+ resource,
255
+ query,
256
+ parent: graph_parent,
257
+ sideload: self,
258
+ sideload_parent_length: parents.length,
259
+ default_paginate: false
260
+ sideload_scope.resolve do |sideload_results|
261
+ fire_assign(parents, sideload_results)
265
262
  end
266
263
  else
267
264
  load(parents, query, graph_parent)
@@ -83,8 +83,9 @@ module Graphiti
83
83
  end
84
84
 
85
85
  def eagerly_validate_links?
86
- if defined?(::Rails)
87
- ::Rails.application.config.eager_load
86
+ # TODO: Maybe handle this in graphiti-rails
87
+ if defined?(::Rails) && (app = ::Rails.application)
88
+ app.config.eager_load
88
89
  else
89
90
  true
90
91
  end
@@ -1,3 +1,3 @@
1
1
  module Graphiti
2
- VERSION = "1.1.1"
2
+ VERSION = "1.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphiti
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lee Richmond
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-05-16 00:00:00.000000000 Z
11
+ date: 2019-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jsonapi-serializable
@@ -73,9 +73,6 @@ dependencies:
73
73
  - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '4.1'
76
- - - "<"
77
- - !ruby/object:Gem::Version
78
- version: '6'
79
76
  type: :runtime
80
77
  prerelease: false
81
78
  version_requirements: !ruby/object:Gem::Requirement
@@ -83,9 +80,6 @@ dependencies:
83
80
  - - ">="
84
81
  - !ruby/object:Gem::Version
85
82
  version: '4.1'
86
- - - "<"
87
- - !ruby/object:Gem::Version
88
- version: '6'
89
83
  - !ruby/object:Gem::Dependency
90
84
  name: faraday
91
85
  requirement: !ruby/object:Gem::Requirement
@@ -149,9 +143,6 @@ dependencies:
149
143
  - - ">="
150
144
  - !ruby/object:Gem::Version
151
145
  version: '4.1'
152
- - - "<"
153
- - !ruby/object:Gem::Version
154
- version: '6'
155
146
  type: :development
156
147
  prerelease: false
157
148
  version_requirements: !ruby/object:Gem::Requirement
@@ -159,9 +150,6 @@ dependencies:
159
150
  - - ">="
160
151
  - !ruby/object:Gem::Version
161
152
  version: '4.1'
162
- - - "<"
163
- - !ruby/object:Gem::Version
164
- version: '6'
165
153
  - !ruby/object:Gem::Dependency
166
154
  name: graphiti_spec_helpers
167
155
  requirement: !ruby/object:Gem::Requirement
@@ -215,27 +203,29 @@ files:
215
203
  - bin/console
216
204
  - bin/rspec
217
205
  - bin/setup
206
+ - deprecated_generators/graphiti/api_test_generator.rb
207
+ - deprecated_generators/graphiti/generator_mixin.rb
208
+ - deprecated_generators/graphiti/install_generator.rb
209
+ - deprecated_generators/graphiti/resource_generator.rb
210
+ - deprecated_generators/graphiti/resource_test_generator.rb
211
+ - deprecated_generators/graphiti/templates/application_resource.rb.erb
212
+ - deprecated_generators/graphiti/templates/controller.rb.erb
213
+ - deprecated_generators/graphiti/templates/create_request_spec.rb.erb
214
+ - deprecated_generators/graphiti/templates/destroy_request_spec.rb.erb
215
+ - deprecated_generators/graphiti/templates/index_request_spec.rb.erb
216
+ - deprecated_generators/graphiti/templates/resource.rb.erb
217
+ - deprecated_generators/graphiti/templates/resource_reads_spec.rb.erb
218
+ - deprecated_generators/graphiti/templates/resource_writes_spec.rb.erb
219
+ - deprecated_generators/graphiti/templates/show_request_spec.rb.erb
220
+ - deprecated_generators/graphiti/templates/update_request_spec.rb.erb
218
221
  - exe/graphiti
219
222
  - gemfiles/.bundle/config
220
223
  - gemfiles/rails_4.gemfile
221
224
  - gemfiles/rails_5.gemfile
225
+ - gemfiles/rails_5_graphiti_rails.gemfile
222
226
  - gemfiles/rails_6.gemfile
227
+ - gemfiles/rails_6_graphiti_rails.gemfile
223
228
  - graphiti.gemspec
224
- - lib/generators/graphiti/api_test_generator.rb
225
- - lib/generators/graphiti/generator_mixin.rb
226
- - lib/generators/graphiti/install_generator.rb
227
- - lib/generators/graphiti/resource_generator.rb
228
- - lib/generators/graphiti/resource_test_generator.rb
229
- - lib/generators/graphiti/templates/application_resource.rb.erb
230
- - lib/generators/graphiti/templates/controller.rb.erb
231
- - lib/generators/graphiti/templates/create_request_spec.rb.erb
232
- - lib/generators/graphiti/templates/destroy_request_spec.rb.erb
233
- - lib/generators/graphiti/templates/index_request_spec.rb.erb
234
- - lib/generators/graphiti/templates/resource.rb.erb
235
- - lib/generators/graphiti/templates/resource_reads_spec.rb.erb
236
- - lib/generators/graphiti/templates/resource_writes_spec.rb.erb
237
- - lib/generators/graphiti/templates/show_request_spec.rb.erb
238
- - lib/generators/graphiti/templates/update_request_spec.rb.erb
239
229
  - lib/graphiti.rb
240
230
  - lib/graphiti/adapters/abstract.rb
241
231
  - lib/graphiti/adapters/active_record.rb
@@ -251,6 +241,7 @@ files:
251
241
  - lib/graphiti/context.rb
252
242
  - lib/graphiti/debugger.rb
253
243
  - lib/graphiti/delegates/pagination.rb
244
+ - lib/graphiti/deprecated_tasks.rb
254
245
  - lib/graphiti/deserializer.rb
255
246
  - lib/graphiti/errors.rb
256
247
  - lib/graphiti/extensions/boolean_attribute.rb
@@ -296,7 +287,6 @@ files:
296
287
  - lib/graphiti/sideload/polymorphic_belongs_to.rb
297
288
  - lib/graphiti/stats/dsl.rb
298
289
  - lib/graphiti/stats/payload.rb
299
- - lib/graphiti/tasks.rb
300
290
  - lib/graphiti/types.rb
301
291
  - lib/graphiti/util/attribute_check.rb
302
292
  - lib/graphiti/util/class.rb