shopify_app 6.3.0 → 6.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0b424982cf65b0c9b98ba51dd08c9c6a4ce992c3
4
- data.tar.gz: 10e9c18f779eec012ab057afd1c5e2d220900aa3
3
+ metadata.gz: 9fdbb7537a49e1636bfed63000bcad7c99080486
4
+ data.tar.gz: fd61682e6ec442674b7fd0e340ad25ea5c1a1ed1
5
5
  SHA512:
6
- metadata.gz: 439c8119016ab19b45dee3dcab077626438cea6d7c16c151e5c06cf441a7d3131e8660c29939f4e303a164412b7dbe048e8ba8bf43e77e6e851ebc0f0ad186ea
7
- data.tar.gz: cbfdb0d91cdd3af92b08bff988f1389f85ac348e923a63c8d43d7e98007835593b432d6240dcf4248de6ce9d05fa65e42623ca9b9b3559ca1560f58903b0bbe7
6
+ metadata.gz: 02d042ee94d3c5a9beab3a1c2df59472b88acf4a415c70982689f28af8ff5f5552f28b16a24901afea9071a5753da6e27cd6ffb8b3e0d9675666748c109fb052
7
+ data.tar.gz: 56d11b9ded7132222e769d140f60107c16ae67531dfbe3fa37351bdca0dd997eb64ff76666a2e7292e7b1076652d23669adeb270805e8db603f5720e4ab77d62
data/CHANGELOG CHANGED
@@ -1,3 +1,11 @@
1
+ 6.4.0
2
+ -----
3
+
4
+ * More semantic and accessible markup in the sessions/new, embedded_app, and product
5
+ index views.
6
+ * Moved all JavaScript to load at the bottom of the page instead of the head, for
7
+ page loading better performance.
8
+
1
9
  6.3.0
2
10
  -----
3
11
 
@@ -0,0 +1,73 @@
1
+ Quickstart
2
+ ==========
3
+
4
+ Build and deploy a new Shopify App to Heroku in minutes
5
+
6
+ 1. New Rails App (with postgres)
7
+ --------------------------------
8
+
9
+ ```
10
+ rails new test-app --database=postgresql
11
+ cd test-app
12
+ git init
13
+ git add .
14
+ git commit -m 'new rails app'
15
+ ```
16
+
17
+ 2. Create a new Heroku app
18
+ --------------------------
19
+
20
+ The next step is to create a new heroku app. Pull up your heroku dashboard and make a new app!
21
+
22
+ cli:
23
+ ```
24
+ heroku new
25
+ git remote -v
26
+ git remote set-url heroku git@heroku.com:<name>.git
27
+ ```
28
+
29
+ now we need to let git know where the remote server is so we'll be able to deploy later
30
+
31
+ web:
32
+ ```
33
+ https://dashboard.heroku.com/new
34
+ git remote add heroku git@heroku.com:appinfive.git
35
+ ```
36
+
37
+ 3. Create a new App in the partners area
38
+ -----------------------------------------
39
+ [https://app.shopify.com/services/partners/api_clients](https://app.shopify.com/services/partners/api_clients)
40
+ * set the callback url to `https://<name>.herokuapp.com/`
41
+ * choose an embedded app
42
+ * set the redirect_uri to `https://<name>.herokuapp.com/auth/shopify/callback`
43
+
44
+
45
+ 4. Add ShopifyApp to gemfile
46
+ ----------------------------
47
+ ```
48
+ vim Gemfile
49
+ add
50
+ gem 'shopify_app', '~> 6.0.6'
51
+
52
+ bundle install
53
+ ```
54
+
55
+ 5. Run the ShopifyApp generator
56
+ -------------------------------
57
+ ```
58
+ use the keys from your app in the partners area
59
+ rails generate shopify_app -api_key=a366cbafaccebd2f615aebdfc932fa1c -secret=8750306a895b3dbc7f4136c2ae2ea293 -redirect_uri=https://<name>.herokuapp.com/auth/shopify/callback
60
+ git add .
61
+ git commit -m 'generated shopify app'
62
+ ```
63
+
64
+ 6. Deploy
65
+ ---------
66
+ ```
67
+ git push heroku
68
+ heroku run rake db:migrate
69
+ ```
70
+
71
+ 7. Install the App!
72
+ -------------------
73
+ `https://<name>.herokuapp.com/`
data/README.md CHANGED
@@ -18,6 +18,7 @@ Check out this screencast on how to create and deploy a new Shopify App to Herok
18
18
 
19
19
  [https://vimeo.com/130247240](https://vimeo.com/130247240)
20
20
 
21
+ Or if you prefer text instructions the steps in the video are written out [here](https://github.com/Shopify/shopify_app/blob/master/QUICKSTART.md)
21
22
 
22
23
  Becoming a Shopify App Developer
23
24
  --------------------------------
@@ -122,7 +123,7 @@ end
122
123
  WebhooksManager
123
124
  ---------------
124
125
 
125
- ShopifyApp can manage your app's webhooks for you (requires ActiveJob). Set which webhooks you require in the initializer:
126
+ ShopifyApp can manage your app's webhooks for you by setting which webhooks you require in the initializer:
126
127
 
127
128
  ```ruby
128
129
  ShopifyApp.configure do |config|
@@ -149,6 +150,8 @@ end
149
150
 
150
151
  The module skips the `verify_authenticity_token` before_action and adds an action to verify that the webhook came from Shopify.
151
152
 
153
+ The WebhooksManager uses ActiveJob, if ActiveJob is not configured then by default Rails will run the jobs inline. However it is highly recommended to configure a proper background processing queue like sidekiq or resque in production.
154
+
152
155
 
153
156
  ShopifyApp::SessionRepository
154
157
  -----------------------------
@@ -175,6 +178,14 @@ $ bundle exec spring stop
175
178
 
176
179
  Run shopify_app generator again.
177
180
 
181
+ Testing an embedded app outside the Shopify admin
182
+ -------------------------------------------------
183
+
184
+ By default, loading your embedded app will redirect to the Shopify admin, with the app view loaded in an `iframe`. If you need to load your app outside of the Shopify admin (e.g., for performance testing), you can change `forceRedirect: false` to `true` in `ShopifyApp.init` block in the `embedded_app` view. To keep the redirect on in production but off in your `development` and `test` environments, you can use:
185
+
186
+ ```javascript
187
+ forceRedirect: <%= Rails.env.development? || Rails.env.test? ? 'false' : 'true' %>
188
+ ```
178
189
 
179
190
  Questions or problems?
180
191
  ----------------------
@@ -1,17 +1,94 @@
1
1
  <!DOCTYPE html>
2
- <html>
2
+ <html lang="en">
3
3
  <head>
4
- <title>Install Page</title>
4
+ <title>Shopify App — Installation</title>
5
+
6
+ <style>
7
+ html, body { padding: 0; margin: 0; }
8
+
9
+ body {
10
+ font-family: "ProximaNovaLight", "Helvetica Neue", Helvetica, Arial, sans-serif;
11
+ background-color: #f2f7fa;
12
+ }
13
+
14
+ h1 {
15
+ font-weight: 300;
16
+ font-size: 40px;
17
+ margin-bottom: 10px;
18
+ }
19
+
20
+ .subhead {
21
+ font-size: 17px;
22
+ line-height: 32px;
23
+ font-weight: 300;
24
+ color: #969A9C;
25
+ }
26
+
27
+ input {
28
+ width: 300px;
29
+ height: 50px;
30
+ padding: 10px;
31
+ border: 1px solid #479CCf;
32
+ color: #575757;
33
+ background-color: #ffffff;
34
+ box-sizing: border-box;
35
+ border-radius: 4px 0 0 4px;
36
+ font-size: 18px;
37
+ float: left;
38
+ }
39
+
40
+ button {
41
+ color: #ffffff;
42
+ background-color: #3793cb;
43
+ width: 100px;
44
+ height: 50px;
45
+ padding: 10px 20px 10px 20px;
46
+ box-sizing: border-box;
47
+ border: none;
48
+ text-shadow: 0 1px 0 #3188bc;
49
+ font-size: 18px;
50
+ cursor: pointer;
51
+ border-radius: 0 4px 4px 0;
52
+ float: right;
53
+ }
54
+
55
+ button:hover {
56
+ background-color: #479CCf;
57
+ }
58
+
59
+ form {
60
+ display: block;
61
+ }
62
+
63
+ .container {
64
+ text-align: center;
65
+ margin-top: 100px;
66
+ padding: 20px;
67
+ }
68
+
69
+ .container__form {
70
+ width: 400px;
71
+ margin: auto;
72
+ }
73
+ </style>
5
74
  </head>
6
75
  <body>
7
76
 
8
- <h2>Install the application</h2>
77
+ <main class="container" role="main">
78
+ <header>
79
+ <h1>Shopify App — Installation</h1>
80
+ <p class="subhead">
81
+ <label for="shop">Please enter the “myshopify” domain of your store</label>
82
+ </p>
83
+ </header>
9
84
 
10
- <form method="GET" action="login">
11
- <label>Type shop name:</label>
12
- <input type="text" name="shop" placeholder="blabla.myshopify.com"/>
13
- <button type='submit'>Install</button>
14
- </form>
85
+ <div class="container__form">
86
+ <form method="GET" action="login">
87
+ <input type="text" name="shop" id="shop" placeholder="blabla.myshopify.com"/>
88
+ <button type="submit">Install</button>
89
+ </form>
90
+ </div>
91
+ </main>
15
92
 
16
93
  </body>
17
94
  </html>
@@ -76,7 +76,7 @@ module ShopifyApp
76
76
  if embedded_app?
77
77
  prepend_to_file(
78
78
  'app/views/home/index.html.erb',
79
- File.read(File.expand_path(find_in_source_paths('shopify_app_ready_script.html')))
79
+ File.read(File.expand_path(find_in_source_paths('shopify_app_ready_script.html.erb')))
80
80
  )
81
81
  end
82
82
  end
@@ -1,3 +1,4 @@
1
+ <% content_for :javascript do %>
1
2
  <script type="text/javascript">
2
3
  var eventName = typeof(Turbolinks) !== 'undefined' ? 'page:change' : 'DOMContentLoaded';
3
4
 
@@ -11,3 +12,4 @@
11
12
  <% end %>
12
13
  });
13
14
  </script>
15
+ <% end %>
@@ -1,24 +1,40 @@
1
1
  <!DOCTYPE html>
2
2
  <html lang="en">
3
- <head>
4
- <title>Shopify Embedded Example App</title>
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>Shopify Embedded Example App</title>
6
+ <%= stylesheet_link_tag 'application' %>
7
+ <%= csrf_meta_tags %>
8
+ </head>
5
9
 
6
- <script src="//cdn.shopify.com/s/assets/external/app.js?<%= Time.now.strftime('%Y%m%d%H') %>"></script>
7
- <script type="text/javascript">
8
- ShopifyApp.init({
9
- apiKey: "<%= ShopifyApp.configuration.api_key %>",
10
- shopOrigin: "<%= "https://#{ @shop_session.url }" if @shop_session %>",
11
- debug: <%= Rails.env.development? ? 'true' : 'false' %>
12
- });
13
- </script>
10
+ <body>
11
+ <div class="app-wrapper">
12
+ <div class="app-content">
13
+ <main role="main">
14
+ <%= yield %>
15
+ </main>
16
+ </div>
17
+ </div>
14
18
 
15
- <%= stylesheet_link_tag 'application' %>
16
- <%= javascript_include_tag 'application' %>
17
- <%= csrf_meta_tags %>
18
- </head>
19
+ <%= render 'layouts/flash_messages' %>
19
20
 
20
- <body>
21
- <%= yield %>
22
- <%= render 'layouts/flash_messages' %>
23
- </body>
21
+ <script src="//cdn.shopify.com/s/assets/external/app.js?<%= Time.now.strftime('%Y%m%d%H') %>"></script>
22
+
23
+ <script type="text/javascript">
24
+ ShopifyApp.init({
25
+ apiKey: "<%= ShopifyApp.configuration.api_key %>",
26
+ shopOrigin: "<%= "https://#{ @shop_session.url }" if @shop_session %>",
27
+ debug: <%= Rails.env.development? ? 'true' : 'false' %>,
28
+ forceRedirect: false
29
+ });
30
+ </script>
31
+
32
+ <%= javascript_include_tag 'application', "data-turbolinks-track" => true %>
33
+
34
+ <% if content_for?(:javascript) %>
35
+ <div id="ContentForJavascript" data-turbolinks-temporary>
36
+ <%= yield :javascript %>
37
+ </div>
38
+ <% end %>
39
+ </body>
24
40
  </html>
@@ -1,12 +1,7 @@
1
- <h3>Products</h3>
2
- <table>
3
- <tbody>
4
- <% @products.each do |product| %>
5
- <tr>
6
- <td>
7
- <a href='https://<%="#{@shop_session.url}/admin/products/#{product.id}"%>' target="_blank"> <%= product.id %> </a>
8
- </td>
9
- </tr>
10
- <% end %>
11
- </tbody>
12
- </table>
1
+ <h2>Products</h2>
2
+
3
+ <ul>
4
+ <% @products.each do |product| %>
5
+ <li><%= link_to product.title, "https://#{@shop_session.url}/admin/products/#{product.id}", target: "_top" %></li>
6
+ <% end %>
7
+ </ul>
@@ -0,0 +1,11 @@
1
+ <% content_for :javascript do %>
2
+ <script type="text/javascript">
3
+ ShopifyApp.ready(function(){
4
+ ShopifyApp.Bar.initialize({
5
+ title: "Home",
6
+ icon: "<%= asset_path('favicon.ico') %>"
7
+ });
8
+ });
9
+ </script>
10
+ <% end %>
11
+
@@ -1,9 +1,5 @@
1
1
  provider :shopify,
2
2
  ShopifyApp.configuration.api_key,
3
3
  ShopifyApp.configuration.secret,
4
-
5
- :redirect_uri => ShopifyApp.configuration.redirect_uri,
6
-
7
- :callback_url => ShopifyApp.configuration.redirect_uri,
8
-
9
- :scope => ShopifyApp.configuration.scope
4
+ redirect_uri: ShopifyApp.configuration.redirect_uri,
5
+ scope: ShopifyApp.configuration.scope
@@ -25,7 +25,7 @@ module ShopifyApp
25
25
  redirect_to return_address
26
26
  else
27
27
  flash[:error] = "Could not log in to Shopify store."
28
- redirect_to action: 'new'
28
+ redirect_to login_url
29
29
  end
30
30
  end
31
31
 
@@ -33,7 +33,7 @@ module ShopifyApp
33
33
  session[:shopify] = nil
34
34
  session[:shopify_domain] = nil
35
35
  flash[:notice] = "Successfully logged out."
36
- redirect_to action: 'new'
36
+ redirect_to login_url
37
37
  end
38
38
 
39
39
  protected
@@ -1,3 +1,3 @@
1
1
  module ShopifyApp
2
- VERSION = '6.3.0'
2
+ VERSION = '6.4.0'
3
3
  end
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
11
11
  s.add_dependency('rails', '>= 3.1', '< 5.0')
12
12
 
13
13
  s.add_runtime_dependency('shopify_api', '~> 4.0.2')
14
- s.add_runtime_dependency('omniauth-shopify-oauth2', '~> 1.1.10')
14
+ s.add_runtime_dependency('omniauth-shopify-oauth2', '~> 1.1.11')
15
15
 
16
16
  s.add_development_dependency('rake')
17
17
  s.add_development_dependency('byebug')
@@ -1,4 +1,4 @@
1
- class ActiveSupport::TestCase
1
+ module GeneratorTestHelpers
2
2
  TEMPLATE_PATH = File.expand_path("../../app_templates", __FILE__)
3
3
 
4
4
  def provide_existing_application_controller
@@ -11,3 +11,7 @@ require 'byebug'
11
11
  Minitest.backtrace_filter = Minitest::BacktraceFilter.new
12
12
 
13
13
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
14
+
15
+ class ActiveSupport::TestCase
16
+ include GeneratorTestHelpers
17
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shopify_app
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.3.0
4
+ version: 6.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shopify
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-06 00:00:00.000000000 Z
11
+ date: 2016-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -50,14 +50,14 @@ dependencies:
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: 1.1.10
53
+ version: 1.1.11
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: 1.1.10
60
+ version: 1.1.11
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: rake
63
63
  requirement: !ruby/object:Gem::Requirement
@@ -140,6 +140,7 @@ files:
140
140
  - CONTRIBUTING.md
141
141
  - Gemfile
142
142
  - LICENSE
143
+ - QUICKSTART.md
143
144
  - README.md
144
145
  - RELEASING
145
146
  - Rakefile
@@ -155,7 +156,7 @@ files:
155
156
  - lib/generators/shopify_app/install/templates/index.html.erb
156
157
  - lib/generators/shopify_app/install/templates/omniauth.rb
157
158
  - lib/generators/shopify_app/install/templates/shopify_app.rb
158
- - lib/generators/shopify_app/install/templates/shopify_app_ready_script.html
159
+ - lib/generators/shopify_app/install/templates/shopify_app_ready_script.html.erb
159
160
  - lib/generators/shopify_app/install/templates/shopify_provider.rb
160
161
  - lib/generators/shopify_app/install/templates/shopify_session_repository.rb
161
162
  - lib/generators/shopify_app/routes/routes_generator.rb
@@ -1,8 +0,0 @@
1
- <script type="text/javascript">
2
- ShopifyApp.ready(function(){
3
- ShopifyApp.Bar.initialize({
4
- title: "Home",
5
- icon: "<%= asset_path('favicon.ico') %>"
6
- });
7
- });
8
- </script>