disco_app 0.15.2 → 0.16.1
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 +4 -4
- data/app/clients/disco_app/graphql_client.rb +85 -0
- data/app/controllers/disco_app/flow/actions_controller.rb +7 -0
- data/app/controllers/disco_app/flow/concerns/actions_controller.rb +47 -0
- data/app/jobs/disco_app/flow/process_action_job.rb +11 -0
- data/app/jobs/disco_app/flow/process_trigger_job.rb +11 -0
- data/app/jobs/disco_app/shop_job.rb +8 -9
- data/app/models/disco_app/concerns/renders_assets.rb +1 -1
- data/app/models/disco_app/concerns/shop.rb +4 -5
- data/app/models/disco_app/flow/action.rb +7 -0
- data/app/models/disco_app/flow/concerns/action.rb +24 -0
- data/app/models/disco_app/flow/concerns/trigger.rb +24 -0
- data/app/models/disco_app/flow/trigger.rb +7 -0
- data/app/services/disco_app/flow/create_action.rb +35 -0
- data/app/services/disco_app/flow/create_trigger.rb +34 -0
- data/app/services/disco_app/flow/process_action.rb +50 -0
- data/app/services/disco_app/flow/process_trigger.rb +52 -0
- data/config/routes.rb +7 -1
- data/db/migrate/20150525000000_create_shops_if_not_existent.rb +80 -80
- data/db/migrate/20170315062548_create_disco_app_sources.rb +2 -0
- data/db/migrate/20170315062629_add_sources_to_shop_subscriptions.rb +2 -0
- data/db/migrate/20170327214540_create_disco_app_users.rb +2 -1
- data/db/migrate/20170606160751_fix_disco_app_users_index.rb +2 -0
- data/db/migrate/20181229100327_create_flow_actions_and_triggers.rb +32 -0
- data/lib/disco_app/configuration.rb +4 -0
- data/lib/disco_app/version.rb +1 -1
- data/lib/generators/disco_app/disco_app_generator.rb +24 -8
- data/lib/generators/disco_app/templates/config/appsignal.yml +12 -0
- data/lib/generators/disco_app/templates/config/cable.yml.tt +11 -0
- data/lib/generators/disco_app/templates/config/database.yml.tt +6 -3
- data/lib/generators/disco_app/templates/config/environments/staging.rb +108 -0
- data/lib/generators/disco_app/templates/config/newrelic.yml +3 -0
- data/lib/generators/disco_app/templates/controllers/home_controller.rb +1 -0
- data/lib/generators/disco_app/templates/initializers/session_store.rb +1 -1
- data/lib/generators/disco_app/templates/root/.env +3 -0
- data/lib/generators/disco_app/templates/root/.rubocop.yml +223 -158
- data/test/dummy/config/database.yml +3 -0
- data/test/dummy/config/environments/staging.rb +85 -0
- data/test/dummy/config/secrets.yml +3 -0
- data/test/dummy/db/schema.rb +39 -11
- data/test/services/disco_app/flow/create_action_test.rb +51 -0
- data/test/services/disco_app/flow/create_trigger_test.rb +56 -0
- data/test/services/disco_app/flow/process_action_test.rb +68 -0
- data/test/services/disco_app/flow/process_trigger_test.rb +61 -0
- data/test/vcr/flow_trigger_invalid_title.yml +35 -0
- data/test/vcr/flow_trigger_valid.yml +38 -0
- metadata +66 -11
- data/app/clients/disco_app/rollbar_client.rb +0 -53
- data/app/clients/disco_app/rollbar_client_error.rb +0 -2
- data/lib/generators/disco_app/templates/initializers/rollbar.rb +0 -23
- data/lib/tasks/rollbar.rake +0 -24
@@ -1,53 +0,0 @@
|
|
1
|
-
require 'rest-client'
|
2
|
-
|
3
|
-
class DiscoApp::RollbarClient
|
4
|
-
|
5
|
-
API_URL = 'https://api.rollbar.com/api/1'
|
6
|
-
CREATE_PROJECT_ENDPOINT = '/projects'
|
7
|
-
ACCESS_TOKEN_ENDPOINT = '/project'
|
8
|
-
ACCESS_TOKEN_SCOPE = 'post_server_item'
|
9
|
-
|
10
|
-
def initialize(params)
|
11
|
-
@write_access_token = params[:write_account_access_token]
|
12
|
-
@read_access_token = params[:read_account_access_token]
|
13
|
-
end
|
14
|
-
|
15
|
-
# Create project on Rollbar, returns it new post server side access token
|
16
|
-
def create_project(name)
|
17
|
-
begin
|
18
|
-
response = RestClient::Request.execute(
|
19
|
-
method: :post,
|
20
|
-
headers: { content_type: :json },
|
21
|
-
url: create_api_url,
|
22
|
-
payload: { name: name.parameterize }.to_json
|
23
|
-
)
|
24
|
-
request_access_token(ActiveSupport::JSON.decode(response).dig('result', 'id'))
|
25
|
-
rescue RestClient::BadRequest => e
|
26
|
-
raise RollbarClientError.new(e.message)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
private
|
31
|
-
|
32
|
-
def request_access_token(project_id)
|
33
|
-
begin
|
34
|
-
response = RestClient.get(access_tokens_api_url(project_id))
|
35
|
-
# Only return post_server_item server side access token
|
36
|
-
post_server_access_token(ActiveSupport::JSON.decode(response)['result'])
|
37
|
-
rescue RestClient::BadRequest => e
|
38
|
-
raise RollbarClientError.new(e.message)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def create_api_url
|
43
|
-
API_URL + CREATE_PROJECT_ENDPOINT + "?access_token=#{@write_access_token}"
|
44
|
-
end
|
45
|
-
|
46
|
-
def access_tokens_api_url(project_id)
|
47
|
-
API_URL + ACCESS_TOKEN_ENDPOINT + "/#{project_id}/access_tokens?access_token=#{@read_access_token}"
|
48
|
-
end
|
49
|
-
|
50
|
-
def post_server_access_token(results)
|
51
|
-
results.select { |x| x['name'] == ACCESS_TOKEN_SCOPE }.first['access_token']
|
52
|
-
end
|
53
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
Rollbar.configure do |config|
|
2
|
-
# Fetch the access token from the environment.
|
3
|
-
config.access_token = ENV['ROLLBAR_ACCESS_TOKEN']
|
4
|
-
|
5
|
-
# Only use Rollbar in production when there's a token configured.
|
6
|
-
unless config.access_token and Rails.env.production?
|
7
|
-
config.enabled = false
|
8
|
-
end
|
9
|
-
|
10
|
-
# Enable delayed reporting (using Sidekiq)
|
11
|
-
config.use_sidekiq
|
12
|
-
|
13
|
-
# Enable "Person" feature of Rollbar in the context of a "Shop"
|
14
|
-
config.person_method = 'current_shop'
|
15
|
-
config.person_username_method = 'shopify_domain'
|
16
|
-
|
17
|
-
# Add custom handlers.
|
18
|
-
config.before_process << proc do |options|
|
19
|
-
if options[:exception].is_a?(ActiveResource::ClientError) and options[:exception].message.include?('Too Many Requests')
|
20
|
-
raise Rollbar::Ignore
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
data/lib/tasks/rollbar.rake
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
require 'yaml'
|
2
|
-
|
3
|
-
namespace :generate do
|
4
|
-
desc "Create Rollbar project for current shopify app, and return the ROLLBAR API TOKEN"
|
5
|
-
task rollbar_project: :environment do
|
6
|
-
begin
|
7
|
-
config_path = File.join(ENV['HOME'], '.disco_app.yml')
|
8
|
-
config = YAML.load_file(config_path)
|
9
|
-
rescue StandardError
|
10
|
-
abort("Could not load configuration file from #{config_path}, aborting.")
|
11
|
-
end
|
12
|
-
|
13
|
-
params = {
|
14
|
-
write_account_access_token: config['params']['ROLLBAR_ACCOUNT_ACCESS_TOKEN_WRITE'].to_s,
|
15
|
-
read_account_access_token: config['params']['ROLLBAR_ACCOUNT_ACCESS_TOKEN_READ'].to_s
|
16
|
-
}
|
17
|
-
|
18
|
-
project_access_token = DiscoApp::RollbarClient.new(params).create_project(ENV['APP_NAME'].blank? ? ENV['SHOPIFY_APP_NAME'] : ENV['APP_NAME'])
|
19
|
-
puts '#' * 80
|
20
|
-
puts 'New Rollbar project successfully created!'
|
21
|
-
puts "ROLLBAR_ACCESS_TOKEN = #{project_access_token}"
|
22
|
-
puts '#' * 80
|
23
|
-
end
|
24
|
-
end
|