shopify_app 11.0.0 → 11.3.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: 99e91b542c6d5f2fb530c9d259e6d32d463bb6e8d0720dd11faa009e845d2ced
4
- data.tar.gz: '0214085b33d8ccbb7dfe929430f81b75296ac5cf201c6b9969ba0b5d78ea7351'
3
+ metadata.gz: 15eca48ef29e1c972ae2444aa0f87d0174a86fe429a5f006fb1dcad801040f89
4
+ data.tar.gz: f91ad649d3b251111a6b48ec0545e4716a18540e3efbe18c89bd8f36becd5d1c
5
5
  SHA512:
6
- metadata.gz: f8fb32cc915ecfeba1ee7db40f1cd3ec4e0c9b8c8bae697370248a8f6225f70504da6a3a160cdfb960426899c2d0abcbbe8f623a0771cef81c7ddb1e58ac779d
7
- data.tar.gz: 73c4b7f0f49130ea808fd7b4c24cef408025a5fcaf89a8b29ee2c0baa0e00d0837b11ec6ecd7f35d4c57269a39e357a9d3cb7d5b55b66a76ff25b0444f503405
6
+ metadata.gz: 16bebc85b8c03bc330c583d43310a33cb0dfa789087cc84a73722ffa02de045113ccdf69a25f1bb975ceae35ad60b6b938b80e57972bf654fc5d4d79299e4fde
7
+ data.tar.gz: 874b833abb3c157aecebecb62d2ecba4f886af24d476f6c55826cca1eec023f6109ec66b33ab2661c6dfab9a9db3da8b247d80beb39a4e8187066e0bae1c7acc
data/CHANGELOG.md CHANGED
@@ -1,3 +1,35 @@
1
+ 11.3.0
2
+ -----
3
+ * Update assets to be compatible with Rails 6 [#808](https://github.com/Shopify/shopify_app/pull/808)
4
+
5
+ 11.2.1
6
+ -----
7
+ * Adds ngrok whitelist in development [#802](https://github.com/Shopify/shopify_app/pull/802)
8
+
9
+ 11.2.0
10
+ -----
11
+
12
+ * Bump omniauth-shopify-oauth2 gem to v2.2.0
13
+
14
+ 11.1.0
15
+ -----
16
+
17
+ * Add Webmock and Pry as development dependencies
18
+ * Update install generator to leverage updates to ShopifyAPI::ApiVersion add in v8.0.0 of the shopify_api gem [#790](https://github.com/Shopify/shopify_app/pull/790)
19
+
20
+
21
+ 11.0.2
22
+ -----
23
+
24
+ * Lock shopify_api gem dependency to `~> 7.0` from `>= 7.0.0`.
25
+ * Remove flakey JS Tests
26
+ * bump sqlite3 development dependency to `~>1.4` from `~> 1.3.6`. [#789](https://github.com/Shopify/shopify_app/pull/789)
27
+
28
+ 11.0.1
29
+ -----
30
+
31
+ * Add dotenv-rails gem to install generator, so apps fetch credentials from `.env` by default: [#776](https://github.com/Shopify/shopify_app/pull/776)
32
+
1
33
  11.0.0
2
34
  -----
3
35
 
data/README.md CHANGED
@@ -26,7 +26,6 @@ Table of Contents
26
26
  * [App Proxy Controller Generator](#app-proxy-controller-generator)
27
27
  * [Controllers, Routes and Views](#controllers-routes-and-views)
28
28
  * [**Mounting the Engine**](#mounting-the-engine)
29
- * [**Managing Api Keys**](#managing-api-keys)
30
29
  * [**WebhooksManager**](#webhooksmanager)
31
30
  * [**ScripttagsManager**](#scripttagsmanager)
32
31
  * [**AfterAuthenticate Job**](#afterauthenticate-job)
@@ -104,11 +103,22 @@ Generators
104
103
  The default generator will run the `install`, `shop`, and `home_controller` generators. This is the recommended way to start your app.
105
104
 
106
105
  ```sh
107
- $ rails generate shopify_app --api_key <your_api_key> --secret <your_app_secret>
106
+ $ rails generate shopify_app
108
107
  ```
109
108
 
110
109
  After running the generator, you will need to run `rake db:migrate` to add tables to your database. You can start your app with `bundle exec rails server` and install your app by visiting localhost.
111
110
 
111
+ ### API Keys
112
+
113
+ The default and install generators have been updated to source Shopify API key and secret from a `.env` file, which you will need to create with the following format:
114
+
115
+ ```
116
+ SHOPIFY_API_KEY=your api key
117
+ SHOPIFY_API_SECRET=your api secret
118
+ ```
119
+
120
+ These values can be found on the "App Setup" page in the [Shopify Partners Dashboard][dashboard].
121
+
112
122
  ### Install Generator
113
123
 
114
124
  ```sh
@@ -116,7 +126,7 @@ $ rails generate shopify_app:install
116
126
 
117
127
  # or optionally with arguments:
118
128
 
119
- $ rails generate shopify_app:install --api_key <your_api_key> --secret <your_app_secret>
129
+ $ rails generate shopify_app:install
120
130
  ```
121
131
 
122
132
  Other options include:
@@ -244,21 +254,6 @@ The current Shopify user will be stored in the rails session at `session[:shopif
244
254
 
245
255
  This will change the type of token that Shopify returns and it will only be valid for a short time. Read more about `Online access` [here](https://help.shopify.com/api/getting-started/authentication/oauth). Note that this means you won't be able to use this token to respond to Webhooks.
246
256
 
247
- Managing Api Keys
248
- -----------------
249
-
250
- The `install` generator places your Api credentials directly into the shopify_app initializer which is convenient and fine for development but once your app goes into production **your api credentials should not be in source control**. When we develop apps we keep our keys in environment variables so a production shopify_app initializer would look like this:
251
-
252
- ```ruby
253
- ShopifyApp.configure do |config|
254
- config.application_name = 'Your app name' # Optional
255
- config.api_key = ENV['SHOPIFY_CLIENT_API_KEY']
256
- config.secret = ENV['SHOPIFY_CLIENT_API_SECRET']
257
- config.scope = 'read_customers, write_products'
258
- config.embedded_app = true
259
- end
260
- ```
261
-
262
257
 
263
258
  WebhooksManager
264
259
  ---------------
@@ -439,7 +434,7 @@ class ReviewsController < ApplicationController
439
434
  end
440
435
  ```
441
436
 
442
- Create your app proxy url in the [Shopify Partners' Dashboard](https://app.shopify.com/services/partners/api_clients), making sure to point it to `https://your_app_website.com/app_proxy`.
437
+ Create your app proxy url in the [Shopify Partners' Dashboard][dashboard], making sure to point it to `https://your_app_website.com/app_proxy`.
443
438
  ![Creating an App Proxy](/images/app-proxy-screenshot.png)
444
439
 
445
440
  Troubleshooting
@@ -462,6 +457,23 @@ Questions or problems?
462
457
  - [Ask questions!](https://ecommerce.shopify.com/c/shopify-apis-and-technology)
463
458
  - [Read the docs!](https://help.shopify.com/api/guides)
464
459
 
460
+ Rails 6 Compatibility
461
+ ---------------------------
462
+
463
+ ### Disable Webpacker
464
+ If you are using sprockets in rails 6 or want to generate a shopify_app without webpacker run the install task by running
465
+
466
+ ```
467
+ SHOPIFY_APP_DISABLE_WEBPACKER=1 rails generate shopify_app
468
+ ```
469
+
470
+ and then in your ShopifyApp configuration block, add
471
+
472
+ ```
473
+ ShopifyApp.configure do |config|
474
+ config.disable_webpacker = true
475
+ end
476
+ ```
465
477
 
466
478
  Upgrading from 8.6 to 9.0.0
467
479
  ---------------------------
@@ -476,7 +488,7 @@ config.api_version = '2019-04'
476
488
 
477
489
  ### Session storage change
478
490
 
479
- You will need to add an `api_version` method to you session storage object. The default implmentation for this is.
491
+ You will need to add an `api_version` method to you session storage object. The default implementation for this is.
480
492
  ```ruby
481
493
  def api_version
482
494
  ShopifyApp.configuration.api_version
@@ -485,7 +497,7 @@ end
485
497
 
486
498
  ### Generated file change
487
499
 
488
- `embedded_app.html.erb` the useage of `shop_session.url` needs to be changed to `shop_session.domain`
500
+ `embedded_app.html.erb` the usage of `shop_session.url` needs to be changed to `shop_session.domain`
489
501
  ```erb
490
502
  <script type="text/javascript">
491
503
  ShopifyApp.init({
@@ -515,3 +527,5 @@ is changed to
515
527
  ### ShopifyAPI changes
516
528
 
517
529
  You will need to also follow the ShopifyAPI [upgrade guide](https://github.com/Shopify/shopify_api/blob/master/README.md#-breaking-change-notice-for-version-700-) to ensure your app is ready to work with api versioning.
530
+
531
+ [dashboard]:https://partners.shopify.com
@@ -4,20 +4,20 @@ cs:
4
4
  could_not_log_in: Nelze se přihlásit do obchodu Shopify
5
5
  invalid_shop_url: Neplatná doména obchodu
6
6
  enable_cookies_heading: Zapnout soubory cookie z aplikace %{app}
7
- enable_cookies_body: Pokud chceš v Shopify používat aplikaci %{app}, musíš soubory
7
+ enable_cookies_body: Pokud chcete v Shopify používat aplikaci %{app}, musíte soubory
8
8
  cookie v tomto prohlížeči povolit ručně.
9
- enable_cookies_footer: Soubory cookie umožňují, aby aplikace ověřila pomocí dočasného
10
- uchování preferencí a osobních údajů. Jejich platnost vyprší po 30 dnech.
9
+ enable_cookies_footer: Soubory cookie umožňují, aby vás aplikace ověřila pomocí
10
+ dočasného uchování preferencí a osobních údajů. Jejich platnost vyprší po 30 dnech.
11
11
  enable_cookies_action: Povolit soubory cookie
12
- top_level_interaction_heading: Tvůj prohlížeč potřebuje ověřit aplikaci %{app}
13
- top_level_interaction_body: Tvůj prohlížeč vyžaduje, aby si od tebe aplikace, jako
14
- je %{app}, nejdřív vyžádaly přístup k souborům cookie, než je pro tebe Shopify
12
+ top_level_interaction_heading: Váš prohlížeč potřebuje ověřit aplikaci %{app}
13
+ top_level_interaction_body: Váš prohlížeč vyžaduje, aby si od vás aplikace, jako
14
+ je %{app}, nejdřív vyžádaly přístup k souborům cookie, než je pro vás Shopify
15
15
  otevře.
16
16
  top_level_interaction_action: Pokračovat
17
17
  request_storage_access_heading: Aplikace %{app} potřebuje získat přístup k souborům
18
18
  cookie
19
- request_storage_access_body: Tato aplikace ti umožní ověření prostřednictvím dočasného
20
- uchování tvých osobních údajů. Pokud chceš používat tuto aplikaci, klikni na tlačítko
21
- Pokračovat a povol soubory cookie.
19
+ request_storage_access_body: Tato aplikace vám umožní ověření prostřednictvím dočasného
20
+ uchování vašich osobních údajů. Pokud chcete používat tuto aplikaci, klikněte
21
+ na tlačítko Pokračovat a povolte soubory cookie.
22
22
  request_storage_access_footer: Platnost souborů cookie vyprší po 30 dnech.
23
23
  request_storage_access_action: Pokračovat
@@ -7,7 +7,7 @@ de:
7
7
  enable_cookies_body: Sie müssen Cookies in diesem Browser manuell aktivieren, um
8
8
  %{app} in Shopify verwenden zu können.
9
9
  enable_cookies_footer: Mithilfe von Cookies kann die App Sie authentifizieren, indem
10
- Ihre Einstellungen und persönlichen Informationen vorübergehend gespeichert werden.
10
+ Ihre Einstellungen und personenbezogenen Daten vorübergehend gespeichert werden.
11
11
  Sie laufen nach 30 Tagen ab.
12
12
  enable_cookies_action: Cookies aktivieren
13
13
  top_level_interaction_heading: Ihr Browser muss %{app} authentifizieren
@@ -16,7 +16,7 @@ de:
16
16
  top_level_interaction_action: Weiter
17
17
  request_storage_access_heading: "%{app} braucht Zugriff auf Cookies"
18
18
  request_storage_access_body: Damit kann die App Sie authentifizieren, indem Ihre
19
- Einstellungen und persönlichen Informationen vorübergehend gespeichert werden.
20
- Klicken Sie auf "Weiter" und erlauben Sie den Cookies, die App zu verwenden.
19
+ Einstellungen und personenbezogenen Daten vorübergehend gespeichert werden. Klicken
20
+ Sie auf "Weiter" und erlauben Sie den Cookies, die App zu verwenden.
21
21
  request_storage_access_footer: Cookies laufen nach 30 Tagen ab.
22
22
  request_storage_access_action: Weiter
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  es:
3
3
  logged_out: Cerrar sesión
4
- could_not_log_in: No se pudo iniciar sesión en tu tienda de Shopify
4
+ could_not_log_in: No se pudo iniciar sesión en tu tienda Shopify
5
5
  invalid_shop_url: Dominio de tienda inválido
6
6
  enable_cookies_heading: Habilitar cookies de %{app}
7
7
  enable_cookies_body: Debes habilitar manualmente las cookies en este navegador para
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  nl:
3
- logged_out: u bent afgemeld
3
+ logged_out: je bent afgemeld
4
4
  could_not_log_in: Kon niet aanmelden bij Shopify-winkel
5
5
  invalid_shop_url: Ongeldig winkeldomein
6
6
  enable_cookies_heading: Schakel cookies in van %{app}
@@ -1,15 +1,14 @@
1
1
  ---
2
2
  pt-BR:
3
- logged_out: Você saiu com sucesso
3
+ logged_out: Você saiu.
4
4
  could_not_log_in: Não foi possível fazer login na Shopify store
5
5
  invalid_shop_url: Domínio de loja inválido
6
- enable_cookies_heading: Ativar cookies de %{app}
7
- enable_cookies_body: Você deve ativar manualmente os cookies neste navegador para
8
- usar %{app} dentro da Shopify.
9
- enable_cookies_footer: Os cookies permitem que o aplicativo o autentique armazenando
10
- temporariamente suas preferências e informações pessoais. Eles expiram depois
11
- de 30 dias.
12
- enable_cookies_action: Ativar cookies
6
+ enable_cookies_heading: Habilitar cookies de %{app}
7
+ enable_cookies_body: Você deve habilitar manualmente os cookies neste navegador
8
+ para usar %{app} dentro da Shopify.
9
+ enable_cookies_footer: Os cookies permitem que o app o autentique armazenando temporariamente
10
+ suas preferências e dados pessoais. Eles expiram depois de 30 dias.
11
+ enable_cookies_action: Habilitar cookies
13
12
  top_level_interaction_heading: Seu navegador precisa autenticar %{app}
14
13
  top_level_interaction_body: Seu navegador exige que apps como o %{app} consultem
15
14
  você sobre o acesso a cookies antes que a Shopify os abra.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  zh-CN:
3
- logged_out: 已成功注销
3
+ logged_out: 已成功退出
4
4
  could_not_log_in: 无法登录到 Shopify 商店
5
5
  invalid_shop_url: 商店域名无效
6
6
  enable_cookies_heading: 从 %{app} 启用 Cookie
data/docs/Releasing.md CHANGED
@@ -3,7 +3,6 @@ Releasing ShopifyApp
3
3
  1. Check the Semantic Versioning page for info on how to version the new release: http://semver.org
4
4
  2. Create a pull request with the following changes:
5
5
  * Update the version of ShopifyApp in lib/shopify_app/version.rb
6
- * Update the version in package.json, then run `npm install` to make sure the lock file gets updated
7
6
  * Add a CHANGELOG entry for the new release with the date
8
7
  * Change the title of the PR to something like: "Packaging for release X.Y.Z"
9
8
  3. Merge your pull request
data/karma.conf.js CHANGED
@@ -26,6 +26,7 @@ module.exports = function(config) {
26
26
  preprocessors: {
27
27
  'test/javascripts/**/*test.js': ['webpack'],
28
28
  },
29
+ webpack: {},
29
30
  reporters: karmaReporters,
30
31
  port: 9876,
31
32
  colors: true,
@@ -7,20 +7,18 @@ module ShopifyApp
7
7
  source_root File.expand_path('../templates', __FILE__)
8
8
 
9
9
  class_option :application_name, type: :array, default: ['My', 'Shopify', 'App']
10
- class_option :api_key, type: :string, default: '<api_key>'
11
- class_option :secret, type: :string, default: '<secret>'
12
- class_option :old_secret, type: :string, default: '<old_secret>'
13
10
  class_option :scope, type: :array, default: ['read_products']
14
11
  class_option :embedded, type: :string, default: 'true'
15
- class_option :api_version, type: :string, default: ShopifyAPI::ApiVersion.latest_stable_version.to_s
12
+ class_option :api_version, type: :string, default: nil
13
+
14
+ def add_dotenv_gem
15
+ gem('dotenv-rails', group: [:test, :development])
16
+ end
16
17
 
17
18
  def create_shopify_app_initializer
18
19
  @application_name = format_array_argument(options['application_name'])
19
- @api_key = options['api_key']
20
- @secret = options['secret']
21
- @old_secret = options['old_secret']
22
20
  @scope = format_array_argument(options['scope'])
23
- @api_version = options['api_version']
21
+ @api_version = options['api_version'] || ShopifyAPI::Meta.admin_versions.find(&:latest_supported).handle
24
22
 
25
23
  template 'shopify_app.rb', 'config/initializers/shopify_app.rb'
26
24
  end
@@ -42,19 +40,38 @@ module ShopifyApp
42
40
  end
43
41
 
44
42
  def create_embedded_app_layout
45
- if embedded_app?
46
- copy_file 'embedded_app.html.erb', 'app/views/layouts/embedded_app.html.erb'
43
+ return unless embedded_app?
44
+
45
+ copy_file 'embedded_app.html.erb', 'app/views/layouts/embedded_app.html.erb'
46
+ copy_file '_flash_messages.html.erb', 'app/views/layouts/_flash_messages.html.erb'
47
+
48
+ if ShopifyApp.use_webpacker?
49
+ copy_file('shopify_app.js', 'app/javascript/shopify_app/shopify_app.js')
50
+ copy_file('flash_messages.js', 'app/javascript/shopify_app/flash_messages.js')
51
+ copy_file('shopify_app_index.js', 'app/javascript/shopify_app/index.js')
52
+ append_to_file('app/javascript/packs/application.js', 'require("shopify_app")')
53
+ else
47
54
  copy_file('shopify_app.js', 'app/assets/javascripts/shopify_app.js')
48
- copy_file '_flash_messages.html.erb', 'app/views/layouts/_flash_messages.html.erb'
49
- copy_file('flash_messages.js',
50
- 'app/assets/javascripts/flash_messages.js')
55
+ copy_file('flash_messages.js', 'app/assets/javascripts/flash_messages.js')
51
56
  end
52
57
  end
53
58
 
59
+ def create_user_agent_initializer
60
+ template 'user_agent.rb', 'config/initializers/user_agent.rb'
61
+ end
62
+
54
63
  def mount_engine
55
64
  route "mount ShopifyApp::Engine, at: '/'"
56
65
  end
57
66
 
67
+ def insert_hosts_into_development_config
68
+ inject_into_file(
69
+ 'config/environments/development.rb',
70
+ " config.hosts << /\\h+.ngrok.io/\n",
71
+ after: "Rails.application.configure do\n"
72
+ )
73
+ end
74
+
58
75
  private
59
76
 
60
77
  def embedded_app?
@@ -5,7 +5,11 @@
5
5
  <% application_name = ShopifyApp.configuration.application_name %>
6
6
  <title><%= application_name %></title>
7
7
  <%= stylesheet_link_tag 'application' %>
8
- <%= javascript_include_tag 'application', "data-turbolinks-track" => true %>
8
+ <% if ShopifyApp.use_webpacker? %>
9
+ <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
10
+ <% else %>
11
+ <%= javascript_include_tag 'application', "data-turbolinks-track" => true %>
12
+ <% end %>
9
13
  <%= csrf_meta_tags %>
10
14
  </head>
11
15
 
@@ -1,7 +1,7 @@
1
1
  ShopifyApp.configure do |config|
2
2
  config.application_name = "<%= @application_name %>"
3
- config.api_key = "<%= @api_key %>"
4
- config.secret = "<%= @secret %>"
3
+ config.api_key = ENV['SHOPIFY_API_KEY']
4
+ config.secret = ENV['SHOPIFY_API_SECRET']
5
5
  config.old_secret = "<%= @old_secret %>"
6
6
  config.scope = "<%= @scope %>" # Consult this page for more scope options:
7
7
  # https://help.shopify.com/en/api/getting-started/authentication/oauth/scopes
@@ -10,3 +10,6 @@ ShopifyApp.configure do |config|
10
10
  config.api_version = "<%= @api_version %>"
11
11
  config.session_repository = ShopifyApp::InMemorySessionStore
12
12
  end
13
+
14
+ # ShopifyApp::Utils.fetch_known_api_versions # Uncomment to fetch known api versions from shopify servers on boot
15
+ # ShopifyAPI::ApiVersion.version_lookup_mode = :raise_on_unknown # Uncomment to raise an error if attempting to use an api version that was not previously known
@@ -0,0 +1,2 @@
1
+ require('./shopify_app')
2
+ require('./flash_messages')
@@ -0,0 +1,5 @@
1
+ module ShopifyAPI
2
+ class Base < ActiveResource::Base
3
+ self.headers['User-Agent'] << " | ShopifyApp/#{ShopifyApp::VERSION}"
4
+ end
5
+ end
data/lib/shopify_app.rb CHANGED
@@ -4,32 +4,44 @@ require 'shopify_app/version'
4
4
  require 'shopify_api'
5
5
  require 'omniauth-shopify-oauth2'
6
6
 
7
- # config
8
- require 'shopify_app/configuration'
9
-
10
- # engine
11
- require 'shopify_app/engine'
12
-
13
- # utils
14
- require 'shopify_app/utils'
15
-
16
- # controller concerns
17
- require 'shopify_app/controller_concerns/localization'
18
- require 'shopify_app/controller_concerns/itp'
19
- require 'shopify_app/controller_concerns/login_protection'
20
- require 'shopify_app/controller_concerns/embedded_app'
21
- require 'shopify_app/controller_concerns/webhook_verification'
22
- require 'shopify_app/controller_concerns/app_proxy_verification'
23
-
24
- # jobs
25
- require 'shopify_app/jobs/webhooks_manager_job'
26
- require 'shopify_app/jobs/scripttags_manager_job'
27
-
28
- # managers
29
- require 'shopify_app/managers/webhooks_manager'
30
- require 'shopify_app/managers/scripttags_manager'
31
-
32
- # session
33
- require 'shopify_app/session/session_storage'
34
- require 'shopify_app/session/session_repository'
35
- require 'shopify_app/session/in_memory_session_store'
7
+ module ShopifyApp
8
+ def self.rails6?
9
+ Rails::VERSION::MAJOR >= 6
10
+ end
11
+
12
+ def self.use_webpacker?
13
+ rails6? &&
14
+ defined?(Webpacker) == 'constant' &&
15
+ !configuration.disable_webpacker
16
+ end
17
+
18
+ # config
19
+ require 'shopify_app/configuration'
20
+
21
+ # engine
22
+ require 'shopify_app/engine'
23
+
24
+ # utils
25
+ require 'shopify_app/utils'
26
+
27
+ # controller concerns
28
+ require 'shopify_app/controller_concerns/localization'
29
+ require 'shopify_app/controller_concerns/itp'
30
+ require 'shopify_app/controller_concerns/login_protection'
31
+ require 'shopify_app/controller_concerns/embedded_app'
32
+ require 'shopify_app/controller_concerns/webhook_verification'
33
+ require 'shopify_app/controller_concerns/app_proxy_verification'
34
+
35
+ # jobs
36
+ require 'shopify_app/jobs/webhooks_manager_job'
37
+ require 'shopify_app/jobs/scripttags_manager_job'
38
+
39
+ # managers
40
+ require 'shopify_app/managers/webhooks_manager'
41
+ require 'shopify_app/managers/scripttags_manager'
42
+
43
+ # session
44
+ require 'shopify_app/session/session_storage'
45
+ require 'shopify_app/session/session_repository'
46
+ require 'shopify_app/session/in_memory_session_store'
47
+ end