diff --git a/README.md b/README.md index a275c9822..91f0c00ff 100644 --- a/README.md +++ b/README.md @@ -457,6 +457,23 @@ Questions or problems? - [Ask questions!](https://ecommerce.shopify.com/c/shopify-apis-and-technology) - [Read the docs!](https://help.shopify.com/api/guides) +Rails 6 Compatibility +--------------------------- + +### Disable Webpacker +If you are using sprockets in rails 6 or want to generate a shopify_app without webpacker run the install task by running + +``` +SHOPIFY_APP_DISABLE_WEBPACKER=1 rails generate shopify_app +``` + +and then in your ShopifyApp configuration block, add + +``` +ShopifyApp.configure do |config| + config.disable_webpacker = true +end +``` Upgrading from 8.6 to 9.0.0 --------------------------- diff --git a/app/views/shopify_app/sessions/enable_cookies.html.erb b/app/views/shopify_app/sessions/enable_cookies.html.erb index 387a748c7..3bec9310e 100644 --- a/app/views/shopify_app/sessions/enable_cookies.html.erb +++ b/app/views/shopify_app/sessions/enable_cookies.html.erb @@ -20,11 +20,7 @@ window.returnTo = "<%= params[:return_to] %>" - <% if ShopifyApp.rails6? %> - <%= javascript_pack_tag('shopify_app_enable_cookies', crossorigin: 'anonymous', integrity: true) %> - <% else %> - <%= javascript_include_tag('shopify_app/enable_cookies', crossorigin: 'anonymous', integrity: true) %> - <% end %> + <%= javascript_include_tag('shopify_app/enable_cookies', crossorigin: 'anonymous', integrity: true) %> <%= diff --git a/app/views/shopify_app/sessions/request_storage_access.html.erb b/app/views/shopify_app/sessions/request_storage_access.html.erb index 34a84731b..a263882c2 100644 --- a/app/views/shopify_app/sessions/request_storage_access.html.erb +++ b/app/views/shopify_app/sessions/request_storage_access.html.erb @@ -63,10 +63,6 @@ -<% if ShopifyApp.rails6? %> - <%= javascript_pack_tag('shopify_app_request_storage_access', crossorigin: 'anonymous', integrity: true) %> -<% else %> - <%= javascript_include_tag('shopify_app/request_storage_access', crossorigin: 'anonymous', integrity: true) %> -<% end %> +<%= javascript_include_tag('shopify_app/request_storage_access', crossorigin: 'anonymous', integrity: true) %> diff --git a/app/views/shopify_app/sessions/top_level_interaction.html.erb b/app/views/shopify_app/sessions/top_level_interaction.html.erb index fc2e1d9ca..72a4c6300 100644 --- a/app/views/shopify_app/sessions/top_level_interaction.html.erb +++ b/app/views/shopify_app/sessions/top_level_interaction.html.erb @@ -21,11 +21,7 @@ window.redirectUrl = "<%= @url %>"; - <% if ShopifyApp.rails6? %> - <%= javascript_pack_tag('shopify_app_top_level', crossorigin: 'anonymous', integrity: true) %> - <% else %> - <%= javascript_include_tag('shopify_app/top_level', crossorigin: 'anonymous', integrity: true) %> - <% end %> + <%= javascript_include_tag('shopify_app/top_level', crossorigin: 'anonymous', integrity: true) %>
diff --git a/app/views/shopify_app/shared/redirect.html.erb b/app/views/shopify_app/shared/redirect.html.erb index dea31729a..371d359a1 100644 --- a/app/views/shopify_app/shared/redirect.html.erb +++ b/app/views/shopify_app/shared/redirect.html.erb @@ -5,11 +5,7 @@ Redirecting… - <% if ShopifyApp.rails6? %> - <%= javascript_pack_tag('shopify_app_redirect', crossorigin: 'anonymous', integrity: true) %> - <% else %> - <%= javascript_include_tag('shopify_app/redirect', crossorigin: 'anonymous', integrity: true) %> - <% end %> + <%= javascript_include_tag('shopify_app/redirect', crossorigin: 'anonymous', integrity: true) %> <%= diff --git a/lib/generators/shopify_app/install/install_generator.rb b/lib/generators/shopify_app/install/install_generator.rb index 6642fa90f..44ab31980 100644 --- a/lib/generators/shopify_app/install/install_generator.rb +++ b/lib/generators/shopify_app/install/install_generator.rb @@ -41,37 +41,17 @@ def create_and_inject_into_omniauth_initializer def create_embedded_app_layout return unless embedded_app? - if ShopifyApp.rails6? - copy_file 'embedded_app.html.erb', 'app/views/layouts/embedded_app.html.erb' - copy_file '_flash_messages.html.erb', 'app/views/layouts/_flash_messages.html.erb' + copy_file 'embedded_app.html.erb', 'app/views/layouts/embedded_app.html.erb' + copy_file '_flash_messages.html.erb', 'app/views/layouts/_flash_messages.html.erb' + + if ShopifyApp.use_webpacker? copy_file('shopify_app.js', 'app/javascript/shopify_app/shopify_app.js') copy_file('flash_messages.js', 'app/javascript/shopify_app/flash_messages.js') copy_file('shopify_app_index.js', 'app/javascript/shopify_app/index.js') - - %w( - itp_helper - partition_cookies - redirect - storage_access - storage_access_redirect - top_level_interaction - ).each do |filename| - copy_file( - "../../../../../app/assets/javascripts/shopify_app/#{filename}.js", - "app/javascript/shopify_app/#{filename}.js", - ) - end - - copy_file('redirect.js', 'app/javascript/packs/shopify_app_redirect.js') - copy_file('enable_cookies.js', 'app/javascript/packs/shopify_app_enable_cookies.js') - copy_file('request_storage_access.js', 'app/javascript/packs/shopify_app_request_storage_access.js') - copy_file('top_level.js', 'app/javascript/packs/shopify_app_top_level.js') append_to_file('app/javascript/packs/application.js', 'require("shopify_app")') else - copy_file 'embedded_app.html.erb', 'app/views/layouts/embedded_app.html.erb' copy_file('shopify_app.js', 'app/assets/javascripts/shopify_app.js') - copy_file '_flash_messages.html.erb', 'app/views/layouts/_flash_messages.html.erb' copy_file('flash_messages.js', 'app/assets/javascripts/flash_messages.js') end end diff --git a/lib/generators/shopify_app/install/templates/embedded_app.html.erb b/lib/generators/shopify_app/install/templates/embedded_app.html.erb index 186d0cb4d..b4f3eb15a 100644 --- a/lib/generators/shopify_app/install/templates/embedded_app.html.erb +++ b/lib/generators/shopify_app/install/templates/embedded_app.html.erb @@ -5,7 +5,7 @@ <% application_name = ShopifyApp.configuration.application_name %> <%= application_name %> <%= stylesheet_link_tag 'application' %> - <% if ShopifyApp.rails6? %> + <% if ShopifyApp.use_webpacker? %> <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %> <% else %> <%= javascript_include_tag 'application', "data-turbolinks-track" => true %> diff --git a/lib/generators/shopify_app/install/templates/enable_cookies.js b/lib/generators/shopify_app/install/templates/enable_cookies.js deleted file mode 100644 index b1ee55099..000000000 --- a/lib/generators/shopify_app/install/templates/enable_cookies.js +++ /dev/null @@ -1,3 +0,0 @@ -require('shopify_app/itp_helper') -require('shopify_app/storage_access') -require('shopify_app/partition_cookies') diff --git a/lib/generators/shopify_app/install/templates/redirect.js b/lib/generators/shopify_app/install/templates/redirect.js deleted file mode 100644 index 43da8190c..000000000 --- a/lib/generators/shopify_app/install/templates/redirect.js +++ /dev/null @@ -1 +0,0 @@ -require('shopify_app/redirect') diff --git a/lib/generators/shopify_app/install/templates/request_storage_access.js b/lib/generators/shopify_app/install/templates/request_storage_access.js deleted file mode 100644 index ee17d32b6..000000000 --- a/lib/generators/shopify_app/install/templates/request_storage_access.js +++ /dev/null @@ -1,3 +0,0 @@ -require('shopify_app/itp_helper') -require('shopify_app/storage_access') -require('shopify_app/storage_access_redirect') diff --git a/lib/generators/shopify_app/install/templates/top_level.js b/lib/generators/shopify_app/install/templates/top_level.js deleted file mode 100644 index a6286f42b..000000000 --- a/lib/generators/shopify_app/install/templates/top_level.js +++ /dev/null @@ -1,2 +0,0 @@ -require('shopify_app/itp_helper') -require('shopify_app/top_level_interaction') diff --git a/lib/shopify_app.rb b/lib/shopify_app.rb index b3759a2d1..c43715e54 100644 --- a/lib/shopify_app.rb +++ b/lib/shopify_app.rb @@ -9,6 +9,12 @@ def self.rails6? Rails::VERSION::MAJOR >= 6 end + def self.use_webpacker? + rails6? && + defined?(Webpacker) == 'constant' && + !configuration.disable_webpacker + end + # config require 'shopify_app/configuration' diff --git a/lib/shopify_app/configuration.rb b/lib/shopify_app/configuration.rb index 72415c526..29aa75aba 100644 --- a/lib/shopify_app/configuration.rb +++ b/lib/shopify_app/configuration.rb @@ -28,6 +28,9 @@ class Configuration # configure myshopify domain for local shopify development attr_accessor :myshopify_domain + # ability to have webpacker installed but not used in this gem and the generators + attr_accessor :disable_webpacker + # allow namespacing webhook jobs attr_accessor :webhook_jobs_namespace @@ -36,6 +39,7 @@ def initialize @myshopify_domain = 'myshopify.com' @scripttags_manager_queue_name = Rails.application.config.active_job.queue_name @webhooks_manager_queue_name = Rails.application.config.active_job.queue_name + @disable_webpacker = ENV['SHOPIFY_APP_DISABLE_WEBPACKER'].present? end def login_url