station 0.0.113 → 0.0.114

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 (43) hide show
  1. checksums.yaml +4 -4
  2. data/Dockerfile +9 -7
  3. data/Gemfile +1 -1
  4. data/Gemfile.lock +2 -2
  5. data/docs/How-To-Use.md +2 -0
  6. data/lib/nexmo_developer/.nvmrc +1 -1
  7. data/lib/nexmo_developer/.ruby-version +1 -1
  8. data/lib/nexmo_developer/Gemfile +8 -9
  9. data/lib/nexmo_developer/Gemfile.lock +101 -98
  10. data/lib/nexmo_developer/Runbook.md +4 -4
  11. data/lib/nexmo_developer/app/controllers/jobs_controller.rb +7 -7
  12. data/lib/nexmo_developer/app/controllers/static_controller.rb +2 -13
  13. data/lib/nexmo_developer/app/models/feedback/feedback.rb +2 -0
  14. data/lib/nexmo_developer/app/presenters/head.rb +5 -1
  15. data/lib/nexmo_developer/app/presenters/improve_page_presenter.rb +1 -1
  16. data/lib/nexmo_developer/app/services/orbit_feedback_notifier.rb +53 -0
  17. data/lib/nexmo_developer/app/services/translator/files_list_coordinator.rb +1 -1
  18. data/lib/nexmo_developer/app/views/contribute/guides/landing-pages.md +0 -10
  19. data/lib/nexmo_developer/app/views/contribute/guides/markdown-guide.md +0 -38
  20. data/lib/nexmo_developer/app/views/contribute/guides/platform.md +0 -1
  21. data/lib/nexmo_developer/app/webpacker/packs/application.js +0 -3
  22. data/lib/nexmo_developer/config/routes.rb +0 -2
  23. data/lib/nexmo_developer/lib/tasks/cache.rake +1 -1
  24. data/lib/nexmo_developer/lib/tasks/careers.rake +1 -1
  25. data/lib/nexmo_developer/lib/tasks/ci.rake +7 -7
  26. data/lib/nexmo_developer/lib/tasks/diff.rake +5 -5
  27. data/lib/nexmo_developer/lib/tasks/documentation.rake +1 -1
  28. data/lib/nexmo_developer/lib/tasks/generate_search_terms.rake +2 -2
  29. data/lib/nexmo_developer/lib/tasks/links.rake +6 -6
  30. data/lib/nexmo_developer/lib/tasks/smartling.rake +1 -1
  31. data/lib/nexmo_developer/version.rb +1 -1
  32. data/package.json +20 -22
  33. data/station.gemspec +4 -4
  34. data/yarn.lock +983 -2784
  35. metadata +47 -52
  36. data/lib/nexmo_developer/.dockerignore +0 -1
  37. data/lib/nexmo_developer/Dockerfile +0 -28
  38. data/lib/nexmo_developer/app/screenshots/webhook-url-for-delivery-receipt.js +0 -44
  39. data/lib/nexmo_developer/app/screenshots/webhook-url-for-inbound-message.js +0 -44
  40. data/lib/nexmo_developer/app/views/static/default_landing/partials/_submit_your_idea_form.html.erb +0 -58
  41. data/lib/nexmo_developer/app/webpacker/javascript/spotlight/index.js +0 -12
  42. data/lib/nexmo_developer/docker-compose.yml +0 -43
  43. data/lib/nexmo_developer/lib/tasks/screenshots.rake +0 -11
@@ -4,7 +4,7 @@ Nexmo Developer is a simple Rails application with a mounted Sinatra app that ha
4
4
 
5
5
  # Deployment
6
6
 
7
- NDP is hosted in Heroku and is automatically deployed every time a branch is merged into master via a Github integration.
7
+ NDP is hosted in Heroku and is automatically deployed every time a branch is merged into main via a Github integration.
8
8
  In case you want to force a deploy, you can always deploy NDP from [Heroku's dashboard](https://dashboard.heroku.com/apps/nexmo-developer).
9
9
 
10
10
  ## Required Resources
@@ -39,7 +39,7 @@ In case NDP is Down:
39
39
 
40
40
  * Check if [Heroku](https://status.heroku.com/) is having an outage. Unfortunately, if that is the case then there isn't much you can do about it (at least for now).
41
41
  * Otherwise, check the [logs](#logs) or [Bugsnag](#error-monitoring-and-reporting) to see if any issues show up and try to reproduce it locally.
42
- If the issue is related to the latest deploy, just revert the offending commits and the deploy again while you work on a fix. Once a fix is ready, open a Pull Request, make sure that it works in the corresponding Review App and finally after all the checks pass merge it into master.
42
+ If the issue is related to the latest deploy, just revert the offending commits and the deploy again while you work on a fix. Once a fix is ready, open a Pull Request, make sure that it works in the corresponding Review App and finally after all the checks pass merge it into main.
43
43
 
44
44
  # Available configuration options
45
45
 
@@ -53,7 +53,7 @@ To enable the Search form locally, the `ALGOLIA_SEARCH_KEY` environment variable
53
53
 
54
54
  # Common issues when running NDP locally
55
55
 
56
- NDP can be run locally either directly or using Docker, for more information about how to run it see the [Readme](https://github.com/Nexmo/nexmo-developer/blob/master/README.md#running-locally). When using docker, re-building the image should fix the following issues
56
+ NDP can be run locally either directly or using Docker, for more information about how to run it see the [Readme](https://github.com/Nexmo/nexmo-developer/blob/main/README.md#running-locally). When using docker, re-building the image should fix the following issues
57
57
 
58
58
  * `Could not find definition '<insert_file_here>' in '<path>'`: set the right `OAS_PATH` in `.env`, check `.env.example` for the default value.
59
59
 
@@ -66,4 +66,4 @@ NDP can be run locally either directly or using Docker, for more information abo
66
66
 
67
67
  * Webpacker errors:
68
68
  * `The engine "node" is incompatible with this module. Expected version...` We use [nvm](https://github.com/nvm-sh/nvm) as node's version manage, check that the right version of node is installed (specified in `.nvmrc`) and run `nvm use <version>`.
69
- * Make sure that all the packages are install by running `yarn install`
69
+ * Make sure that all the packages are installed by running `yarn install`
@@ -8,19 +8,19 @@ class JobsController < ApplicationController
8
8
  if params['ref'] == 'refs/heads/master'
9
9
  url = "https://api.travis-ci.org/repo/#{ENV['TRAVIS_REPO_ID']}/requests"
10
10
  RestClient.post(url, {
11
- "request": {
12
- "branch": 'master',
13
- "config": {
14
- "script": 'bundle exec rake diff:execute',
15
- "env": {
16
- "SSH_KEY_REQUIRED": true,
11
+ request: {
12
+ branch: 'master',
13
+ config: {
14
+ script: 'bundle exec rake diff:execute',
15
+ env: {
16
+ SSH_KEY_REQUIRED: true,
17
17
  },
18
18
  },
19
19
  },
20
20
  }.to_json, {
21
21
  content_type: :json,
22
22
  accept: :json,
23
- 'Authorization': "token #{ENV['TRAVIS_TOKEN']}",
23
+ Authorization: "token #{ENV['TRAVIS_TOKEN']}",
24
24
  'Travis-API-Version': '3',
25
25
  })
26
26
 
@@ -45,6 +45,8 @@ class StaticController < ApplicationController
45
45
  migrate_tropo
46
46
  end
47
47
 
48
+ @frontmatter = @landing_config
49
+ @document_title = @landing_config['title']
48
50
  @navigation = yaml_name.to_sym
49
51
  render layout: 'landing'
50
52
  end
@@ -145,19 +147,6 @@ class StaticController < ApplicationController
145
147
  end
146
148
  end
147
149
 
148
- def spotlight
149
- response = RestClient.post(
150
- 'https://hooks.zapier.com/hooks/catch/1936493/oyzjr4i/',
151
- params.permit(:name, :email_address, :background, :outline, :previous_content).to_h
152
- )
153
-
154
- if response.code == 200
155
- head :ok
156
- else
157
- head :unprocessable_entity
158
- end
159
- end
160
-
161
150
  def blog_cookie
162
151
  # This is the first touch time so we only want to set it if it's not already set
163
152
  set_utm_cookie('ft', Time.now.getutc.to_i) unless cookies[:ft]
@@ -26,6 +26,8 @@ module Feedback
26
26
  end
27
27
 
28
28
  def notify
29
+ OrbitFeedbackNotifier.call(self) if !owner.nil? && owner.email.present?
30
+
29
31
  return unless ENV['SLACK_WEBHOOK']
30
32
 
31
33
  FeedbackSlackNotifier.call(self)
@@ -26,11 +26,15 @@ class Head
26
26
  end
27
27
 
28
28
  def title
29
- @title ||= config.fetch('title') do
29
+ @title ||= title_from_frontmatter || config.fetch('title') do
30
30
  raise "You must provide a 'title' parameter in header_meta.yml"
31
31
  end
32
32
  end
33
33
 
34
+ def title_from_frontmatter
35
+ @frontmatter && (@frontmatter['meta_title'] || @frontmatter['title'])
36
+ end
37
+
34
38
  def description
35
39
  @description ||= Description.new(config: config, frontmatter: frontmatter).description
36
40
  end
@@ -4,7 +4,7 @@ class ImprovePagePresenter
4
4
  end
5
5
 
6
6
  def github_url
7
- @github_url ||= "https://github.com/#{docs_repo}/blob/#{ENV.fetch('branch', 'master')}/#{path_to_url}"
7
+ @github_url ||= "https://github.com/#{docs_repo}/blob/#{ENV.fetch('branch', 'main')}/#{path_to_url}"
8
8
  end
9
9
 
10
10
  def docs_repo
@@ -0,0 +1,53 @@
1
+ class OrbitFeedbackNotifier
2
+ CONFIG = YAML.load_file("#{Rails.configuration.docs_base_path}/config/business_info.yml")
3
+
4
+ def self.call(feedback)
5
+ new(feedback).post!
6
+ end
7
+
8
+ def initialize(feedback)
9
+ @feedback = feedback
10
+ end
11
+
12
+ def params
13
+ @params ||= {
14
+ id: @feedback.id,
15
+ email: @feedback.owner.email,
16
+ resource: "Offered #{@feedback.sentiment} feedback on #{@feedback.resource.uri}",
17
+ }
18
+ end
19
+
20
+ def uri
21
+ @uri ||= URI("https://app.orbit.love/api/v1/#{ENV['ORBIT_WORKSPACE_ID']}/activities")
22
+ end
23
+
24
+ def post!
25
+ return unless ENV['ORBIT_WORKSPACE_ID']
26
+
27
+ http = Net::HTTP.new(uri.host, uri.port)
28
+ http.use_ssl = true
29
+ req = Net::HTTP::Post.new(uri)
30
+ req['Accept'] = 'application/json'
31
+ req['Content-Type'] = 'application/json'
32
+ req['Authorization'] = "Bearer #{ENV['ORBIT_API_KEY']}"
33
+
34
+ req.body = {
35
+ activity: {
36
+ activity_type: 'adp:feedback',
37
+ key: "adp-feedback-#{params[:id]}",
38
+ title: 'Offered feedback on ADP',
39
+ description: params[:resource],
40
+ occurred_at: Time.zone.now.iso8601,
41
+ },
42
+ identity: {
43
+ source: 'email',
44
+ source_host: CONFIG['base_url'],
45
+ email: params[:email],
46
+ },
47
+ }
48
+
49
+ req.body = req.body.to_json
50
+
51
+ http.request(req)
52
+ end
53
+ end
@@ -13,7 +13,7 @@ module Translator
13
13
  end
14
14
 
15
15
  def files
16
- @files ||= `(git fetch origin master:master) && (git log --since="#{@days} days" --name-only --oneline --diff-filter=ACM --pretty=format: master #{Rails.configuration.docs_base_path}/_documentation/en #{Rails.configuration.docs_base_path}/_tutorials/en #{Rails.configuration.docs_base_path}/_use_cases/en) | uniq | awk 'NF'`.split("\n")
16
+ @files ||= `(git fetch origin main:main) && (git log --since="#{@days} days" --name-only --oneline --diff-filter=ACM --pretty=format: main #{Rails.configuration.docs_base_path}/_documentation/en #{Rails.configuration.docs_base_path}/_tutorials/en #{Rails.configuration.docs_base_path}/_use_cases/en) | uniq | awk 'NF'`.split("\n")
17
17
  end
18
18
 
19
19
  def process_files(files)
@@ -544,13 +544,3 @@ The `warning_callout` content block provides an element to render a warning mess
544
544
  content: # Warning message goes here
545
545
 
546
546
  ```
547
-
548
- ### Write for Nexmo
549
-
550
- The `write_for_nexmo` content block will provide a call to action element to Write for Nexmo with a Developer Spotlight graphic on the left-hand side and text advertising the Write for Nexmo program on the left-hand side.
551
-
552
- ```yaml
553
-
554
- - type: write_for_nexmo
555
-
556
- ```
@@ -359,44 +359,6 @@ If you are adding support for a changed header this would normally go above the
359
359
 
360
360
  [Go to the anchor](#anchor-example). I've placed at the top of this document.
361
361
 
362
- ## Screenshots
363
-
364
- Webpage screenshots can be scripted so that they only require sourcing once. Define a screenshot as such:
365
-
366
- ````
367
- ```screenshot
368
- script: app/screenshots/webhook-url-for-delivery-receipt.js
369
- ```
370
- ````
371
-
372
- Run the following command:
373
-
374
- ```
375
- $ rake screenshots:new
376
- ```
377
-
378
- This changes the original source document to add an `image` value pointing to the screenshot:
379
-
380
- ````
381
- ```screenshot
382
- script: app/screenshots/webhook-url-for-delivery-receipt.js
383
- image: public/assets/screenshots/da5f952d465355c19eb888fa1049844b31e090c2.png
384
- ```
385
- ````
386
-
387
- You can also update all examples by running the following command:
388
-
389
- ```
390
- $ rake screenshots:all
391
- ```
392
-
393
- Here is the example of the final rendered output:
394
-
395
- ```screenshot
396
- script: app/screenshots/webhook-url-for-delivery-receipt.js
397
- image: public/assets/screenshots/da5f952d465355c19eb888fa1049844b31e090c2.png
398
- ```
399
-
400
362
  ## Audio (custom plugin)
401
363
 
402
364
  The HTML `<audio>` element can be utilised in Markdown with the following syntax:
@@ -145,7 +145,6 @@ Frontmatter | No | [Implicit] | Strips frontmatter from documents
145
145
  PHPInliner | No | [Implicit] | Fixes a quirk with our code parser that requires PHP code to have `<?php` at the start. This filter adds an option onto PHP code examples that makes this not required.
146
146
  InlineEscape | No | [Extended] | Allows for escaping of inline code where normally the internals would be processes by the markdown. For example this isn't turned into a ``[label]`` when surrounded by two backticks.
147
147
  BlockEscape | No | [Extended] | Allows for escaping of code fences where normally the internals would be processes by the markdown.
148
- Screenshot | No | [Plugin] | Allows for screenshots be put into documentation that are captured by a headless browser so they can be easily refreshed.
149
148
  Anchor | No | [Extended] | Useful for when a title changes, an explicit anchor can be added and renders a non-visible anchor link to the same content.
150
149
  Audio | No | [Extended] | Used to embed audio examples using the `<audio>` element.
151
150
  Tooltip | No | [Extended] | Allows for ^[Toolips](Hello world!) to be added with a markdown-style syntax.
@@ -7,7 +7,6 @@
7
7
  // To reference this file, add <%= javascript_pack_tag 'application' %> to the appropriate
8
8
  // layout file, like app/views/layouts/application.html.erb
9
9
 
10
- import '@babel/polyfill'
11
10
  import '@vonagevolta/volta2/js/addons/prism'
12
11
 
13
12
  import Rails from "@rails/ujs"
@@ -39,7 +38,6 @@ import GithubCards from '../javascript/github_cards'
39
38
  import VoltaTabbedExamples from '../javascript/volta_tabbed_examples'
40
39
  import Format from '../javascript/format'
41
40
  import Scroll from '../javascript/scroll'
42
- import Spotlight from '../javascript/spotlight'
43
41
  import Notices from '../javascript/notices'
44
42
  import Feedback from '../javascript/components/feedback/Feedback.vue'
45
43
  import JwtGenerator from '../javascript/components/jwt_generator/JwtGenerator.vue'
@@ -62,7 +60,6 @@ $(document).ready(function() {
62
60
  Scroll()
63
61
  CodeSnippetEvents()
64
62
  new Sidenav()
65
- Spotlight()
66
63
  new Careers
67
64
  new LocaleSwitcher
68
65
 
@@ -57,8 +57,6 @@ Rails.application.routes.draw do
57
57
 
58
58
  get '(/:locale)/documentation', to: 'static#documentation', constraints: LocaleConstraint.new, as: :documentation
59
59
 
60
- post '/spotlight', to: 'static#spotlight'
61
-
62
60
  get '/community/slack', to: 'slack#join'
63
61
  post '/community/slack', to: 'slack#invite'
64
62
 
@@ -1,6 +1,6 @@
1
1
  namespace :cache do
2
2
  desc "Clear Rails' redis cache"
3
- task 'clear': :environment do
3
+ task clear: :environment do
4
4
  Rails.cache.clear
5
5
  end
6
6
  end
@@ -1,6 +1,6 @@
1
1
  namespace :careers do
2
2
  desc 'Expire careers cache'
3
- task 'expire_cache': :environment do
3
+ task expire_cache: :environment do
4
4
  p 'Expiring cache...'
5
5
  Greenhouse.expire_cache
6
6
  p 'Done'
@@ -2,7 +2,7 @@ require_relative '../common_errors'
2
2
 
3
3
  namespace :ci do
4
4
  desc 'Verify all pages to make sure that no exceptions are thrown'
5
- task 'verify_pages': :environment do
5
+ task verify_pages: :environment do
6
6
  document_paths =
7
7
  [
8
8
  "#{Rails.configuration.docs_base_path}/_documentation/en/**/*.md",
@@ -24,7 +24,7 @@ namespace :ci do
24
24
  end
25
25
 
26
26
  desc 'Verify side navigation to make sure every page has valid YAML metadata'
27
- task 'verify_navigation': :environment do
27
+ task verify_navigation: :environment do
28
28
  session = ActionDispatch::Integration::Session.new(Rails.application)
29
29
  res = session.get '/documentation'
30
30
 
@@ -35,7 +35,7 @@ namespace :ci do
35
35
  end
36
36
 
37
37
  desc 'Render all OAS based API references'
38
- task 'verify_oas_reference': :environment do
38
+ task verify_oas_reference: :environment do
39
39
  session = ActionDispatch::Integration::Session.new(Rails.application)
40
40
  OpenApiConstraint.list.each do |name|
41
41
  res = session.get "/api/#{name}"
@@ -48,7 +48,7 @@ namespace :ci do
48
48
  end
49
49
 
50
50
  desc 'Ensure all OAS error URLS resolve'
51
- task 'verify_error_urls_resolve': :environment do
51
+ task verify_error_urls_resolve: :environment do
52
52
  session = ActionDispatch::Integration::Session.new(Rails.application)
53
53
  session.host! 'localhost' unless Rails.env.test?
54
54
 
@@ -114,7 +114,7 @@ namespace :ci do
114
114
  end
115
115
  end
116
116
 
117
- task 'check_word_blocklist': :environment do
117
+ task check_word_blocklist: :environment do
118
118
  markdown_files =
119
119
  [
120
120
  "#{Rails.configuration.docs_base_path}/_documentation/en/**/*.md",
@@ -145,7 +145,7 @@ namespace :ci do
145
145
  end
146
146
  end
147
147
 
148
- task 'check_ruby_version': :environment do
148
+ task check_ruby_version: :environment do
149
149
  # We treat .ruby-version as the canonical source
150
150
  ruby_version = File.read('.ruby-version').strip
151
151
 
@@ -154,7 +154,7 @@ namespace :ci do
154
154
  gemfile_version = gemfile.match(/RUBY VERSION.*ruby (\d+\.\d+\.\d+).*BUNDLED WITH/m)[1].strip
155
155
 
156
156
  # How about Docker?
157
- docker = File.read('Dockerfile')
157
+ docker = File.read('../../Dockerfile')
158
158
  docker_version = docker.match(/FROM ruby:(\d+\.\d+\.\d+).*/)[1].strip
159
159
 
160
160
  errors = []
@@ -1,6 +1,6 @@
1
1
  namespace :diff do
2
2
  desc 'Build files for comparison'
3
- task 'execute': :environment do
3
+ task execute: :environment do
4
4
  puts 'Building base'.colorize(:yellow)
5
5
  Rake::Task['diff:build:base'].invoke
6
6
 
@@ -15,24 +15,24 @@ namespace :diff do
15
15
  end
16
16
 
17
17
  desc 'Build files for comparison'
18
- task 'build:base': :environment do
18
+ task 'build:base' => :environment do
19
19
  Diff.generate(mode: 'base')
20
20
  end
21
21
 
22
22
  desc 'Build files for comparison'
23
- task 'build:compare': :environment do
23
+ task 'build:compare' => :environment do
24
24
  Diff.generate(mode: 'compare')
25
25
  end
26
26
 
27
27
  desc 'Build files for comparison'
28
- task 'compare:cli': :environment do
28
+ task 'compare:cli' => :environment do
29
29
  diff = Diff.new
30
30
  diff.diff(:color)
31
31
  diff.report_cli
32
32
  end
33
33
 
34
34
  desc 'Build files for comparison'
35
- task 'compare:pr': :environment do
35
+ task 'compare:pr' => :environment do
36
36
  diff = Diff.new
37
37
  diff.diff(:text)
38
38
  diff.report_pull_request
@@ -1,6 +1,6 @@
1
1
  namespace :documentation do
2
2
  desc 'Verify all pages have meta_title and description keys'
3
- task 'check_keys': :environment do
3
+ task check_keys: :environment do
4
4
  documentation_path = "#{Rails.configuration.docs_base_path}/_documentation/**/*.md"
5
5
  documents = []
6
6
 
@@ -21,7 +21,7 @@ namespace :search_terms do
21
21
  end
22
22
 
23
23
  desc 'Clear the index in Algolia'
24
- task 'algolia:clear': :environment do
24
+ task 'algolia:clear' => :environment do
25
25
  unless ENV['ALGOLIA_APPLICATION_ID']
26
26
  puts 'Not rebuilding search index, Algolia Application ID not set'
27
27
  next
@@ -32,7 +32,7 @@ namespace :search_terms do
32
32
  end
33
33
 
34
34
  desc 'Refresh the Algolia index'
35
- task 'algolia:refresh': :environment do
35
+ task 'algolia:refresh' => :environment do
36
36
  Rake::Task['search_terms:algolia:clear'].invoke
37
37
  Rake::Task['search_terms:algolia:generate'].invoke
38
38
  end
@@ -2,7 +2,7 @@ require 'terminal-table'
2
2
 
3
3
  namespace :links do
4
4
  desc 'Generate a report of all links FROM a given page'
5
- task 'report_outbound': :environment do
5
+ task report_outbound: :environment do
6
6
  ARGV.each { |a| task a.to_sym }
7
7
  filter = ARGV[1]
8
8
  table = Terminal::Table.new do |t|
@@ -18,7 +18,7 @@ namespace :links do
18
18
  end
19
19
 
20
20
  desc 'Generate a report of all links TO a given page'
21
- task 'report_inbound': :environment do
21
+ task report_inbound: :environment do
22
22
  ARGV.each { |a| task a.to_sym }
23
23
  filter = ARGV[1]
24
24
  table = Terminal::Table.new do |t|
@@ -34,21 +34,21 @@ namespace :links do
34
34
  end
35
35
 
36
36
  desc 'Show all pages with no outbound links'
37
- task 'no_links_outbound': :environment do
37
+ task no_links_outbound: :environment do
38
38
  get_links_on_a_page("#{Rails.configuration.docs_base_path}/_documentation/**/*.md").each do |from, to|
39
39
  puts from if to.empty?
40
40
  end
41
41
  end
42
42
 
43
43
  desc 'Show all pages with no inbound links'
44
- task 'no_links_inbound': :environment do
44
+ task no_links_inbound: :environment do
45
45
  get_links_to_a_page("#{Rails.configuration.docs_base_path}/_documentation/**/*.md").each do |to, from|
46
46
  puts to if from.empty?
47
47
  end
48
48
  end
49
49
 
50
50
  desc 'Generate graph of all links out of pages'
51
- task 'graph_outbound': :environment do
51
+ task graph_outbound: :environment do
52
52
  ARGV.each { |a| task a.to_sym }
53
53
  filter = ARGV[1]
54
54
  additional_title = ''
@@ -69,7 +69,7 @@ namespace :links do
69
69
  end
70
70
 
71
71
  desc 'Generate graph of all links to pages'
72
- task 'graph_inbound': :environment do
72
+ task graph_inbound: :environment do
73
73
  ARGV.each { |a| task a.to_sym }
74
74
  filter = ARGV[1]
75
75
  additional_title = ''