rundoc 0.0.2 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/check_changelog.yml +13 -0
  3. data/.gitignore +7 -0
  4. data/.travis.yml +8 -0
  5. data/CHANGELOG.md +26 -0
  6. data/Dockerfile +24 -0
  7. data/Gemfile +1 -0
  8. data/README.md +261 -92
  9. data/bin/rundoc +4 -60
  10. data/lib/rundoc.rb +15 -1
  11. data/lib/rundoc/cli.rb +84 -0
  12. data/lib/rundoc/code_command.rb +20 -5
  13. data/lib/rundoc/code_command/background.rb +9 -0
  14. data/lib/rundoc/code_command/background/log/clear.rb +17 -0
  15. data/lib/rundoc/code_command/background/log/read.rb +16 -0
  16. data/lib/rundoc/code_command/background/process_spawn.rb +96 -0
  17. data/lib/rundoc/code_command/background/start.rb +38 -0
  18. data/lib/rundoc/code_command/background/stop.rb +17 -0
  19. data/lib/rundoc/code_command/background/wait.rb +19 -0
  20. data/lib/rundoc/code_command/bash.rb +1 -1
  21. data/lib/rundoc/code_command/bash/cd.rb +21 -3
  22. data/lib/rundoc/code_command/file_command/append.rb +2 -0
  23. data/lib/rundoc/code_command/no_such_command.rb +4 -0
  24. data/lib/rundoc/code_command/pipe.rb +17 -4
  25. data/lib/rundoc/code_command/raw.rb +18 -0
  26. data/lib/rundoc/code_command/rundoc/depend_on.rb +37 -0
  27. data/lib/rundoc/code_command/rundoc/require.rb +41 -0
  28. data/lib/rundoc/code_command/rundoc_command.rb +6 -2
  29. data/lib/rundoc/code_command/website.rb +7 -0
  30. data/lib/rundoc/code_command/website/driver.rb +111 -0
  31. data/lib/rundoc/code_command/website/navigate.rb +29 -0
  32. data/lib/rundoc/code_command/website/screenshot.rb +28 -0
  33. data/lib/rundoc/code_command/website/visit.rb +47 -0
  34. data/lib/rundoc/code_section.rb +34 -78
  35. data/lib/rundoc/parser.rb +4 -3
  36. data/lib/rundoc/peg_parser.rb +282 -0
  37. data/lib/rundoc/version.rb +1 -1
  38. data/rundoc.gemspec +9 -3
  39. data/test/fixtures/build_logs/rundoc.md +56 -0
  40. data/test/fixtures/depend_on/dependency/rundoc.md +5 -0
  41. data/test/fixtures/depend_on/main/rundoc.md +10 -0
  42. data/test/fixtures/java/rundoc.md +9 -0
  43. data/test/fixtures/rails_4/rundoc.md +1 -1
  44. data/test/fixtures/rails_5/rundoc.md +76 -74
  45. data/test/fixtures/{rails_5_beta → rails_6}/rundoc.md +93 -87
  46. data/test/fixtures/require/dependency/rundoc.md +5 -0
  47. data/test/fixtures/require/main/rundoc.md +10 -0
  48. data/test/fixtures/screenshot/rundoc.md +10 -0
  49. data/test/rundoc/code_commands/append_file_test.rb +2 -2
  50. data/test/rundoc/code_commands/background_test.rb +69 -0
  51. data/test/rundoc/code_commands/bash_test.rb +1 -1
  52. data/test/rundoc/code_commands/pipe_test.rb +12 -2
  53. data/test/rundoc/code_commands/remove_contents_test.rb +1 -1
  54. data/test/rundoc/code_section_test.rb +6 -5
  55. data/test/rundoc/parser_test.rb +2 -8
  56. data/test/rundoc/peg_parser_test.rb +391 -0
  57. data/test/rundoc/regex_test.rb +1 -1
  58. data/test/rundoc/test_parse_java.rb +1 -1
  59. data/test/test_helper.rb +1 -1
  60. metadata +120 -12
@@ -1,5 +1,5 @@
1
1
  ```
2
- :::- rundoc
2
+ :::-- rundoc
3
3
  email = ENV['HEROKU_EMAIL'] || `heroku auth:whoami`
4
4
 
5
5
  Rundoc.configure do |config|
@@ -7,32 +7,36 @@ Rundoc.configure do |config|
7
7
  config.filter_sensitive(email => "developer@example.com")
8
8
  end
9
9
  ```
10
+
10
11
  <!--
11
12
  rundoc src:
12
- https://github.com/schneems/rundoc/blob/master/test/fixtures/rails_5/rundoc.md
13
+ https://github.com/schneems/rundoc/blob/master/test/fixtures/rails_6/rundoc.md
14
+
15
+ Command:
16
+ $ bin/rundoc build --path test/fixtures/rails_6/rundoc.md
13
17
  -->
14
18
 
15
- Ruby on Rails is a popular web framework written in [Ruby](http://www.ruby-lang.org/). This guide covers using Rails 5 on Heroku. For information about running previous versions of Rails on Heroku, see [Getting Started with Rails 4.x on Heroku](getting-started-with-rails4) or [Getting Started with Rails 3.x on Heroku](getting-started-with-rails3).
19
+ Ruby on Rails is a popular web framework written in [Ruby](http://www.ruby-lang.org/). This guide covers using Rails 6 on Heroku. For information on running previous versions of Rails on Heroku, see the tutorial for [Rails 5.x](getting-started-with-rails5) or [Rails 4.x](getting-started-with-rails4).
20
+
21
+ ```
22
+ :::-- $ ruby -e "exit 1 unless RUBY_VERSION == '2.6.6'"
23
+ ```
16
24
 
17
25
  For this guide you will need:
18
26
 
19
- - Basic Ruby/Rails knowledge.
20
- - A locally installed version of Ruby 2.2.0+, Rubygems, Bundler, and Rails 5+.
21
- - Basic Git knowledge.
27
+ - Basic familiarity with Ruby/Rails and Git
28
+ - A locally installed version of Ruby 2.5.0+, Rubygems, Bundler, and Rails 6+
22
29
  - A Heroku user account: [Signup is free and instant](https://signup.heroku.com/devcenter).
23
30
 
24
- ## Local workstation setup
25
-
26
- Install the [Heroku Toolbelt](https://toolbelt.heroku.com/) on your local workstation. This ensures that you have access to the [Heroku command-line client](/categories/command-line), Heroku Local, and the Git revision control system. You will also need [Ruby and Rails installed](http://guides.railsgirls.com/install).
31
+ ## Local setup
27
32
 
28
- Once installed, you'll have access to the `$ heroku` command from your command shell. Log in using the email address and password you used when creating your Heroku account:
33
+ Install the [Heroku CLI](heroku-cli#download-and-install) on your development machine.
29
34
 
30
-
31
- > callout Note that `$` symbol before commands indicates they should be run on the command line, prompt, or terminal with appropriate permissions. Do not copy the `$` symbol.
35
+ Once installed, the `heroku` command is available from your terminal. Log in using your Heroku account's email address and password:
32
36
 
33
37
  ```term
34
38
  $ heroku login
35
- Enter your Heroku credentials.
39
+ heroku: Enter your Heroku credentials
36
40
  Email: schneems@example.com
37
41
  Password:
38
42
  Could not find an existing public key.
@@ -41,41 +45,37 @@ Generating new SSH public key.
41
45
  Uploading ssh public key /Users/adam/.ssh/id_rsa.pub
42
46
  ```
43
47
 
44
- Press enter at the prompt to upload your existing `ssh` key or create a new one, used for pushing code later on.
45
-
46
- ## Write your app
47
-
48
- > callout To run on Heroku, your app must be configured to use the Postgres database, have all dependencies declared in your `Gemfile`.
48
+ Press Enter at the prompt to upload your existing `ssh` key or create a new one, used for pushing code later on.
49
49
 
50
+ ## Create a new Rails app (or upgrade an existing one)
50
51
 
51
- If you are starting from an existing app, [upgrade to Rails 5](http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html#upgrading-from-rails-4-2-to-rails-5-0) before continuing. If not, a vanilla Rails 5 app will serve as a suitable sample app. To build a new app make sure that you're using the Rails 5.x using `$ rails -v`. You can get the new version of rails by running,
52
-
53
- ```
54
- :::- $ git clone https://github.com/rails/rails.git
55
- ```
52
+ To create a new app, first make sure that you're using Rails 6.x by running `rails -v`. If necessary, you can get the new version of rails by running the following:
56
53
 
57
54
  ```term
58
- $ gem install rails --no-ri --no-rdoc
55
+ :::>> $ gem install rails --no-document
59
56
  ```
60
57
 
61
- Then create a new app:
58
+ Then create a new app and move into its root directory:
62
59
 
63
60
  ```term
64
- $ rails new myapp --database=postgresql
65
- :::-> $ ruby rails/railties/exe/rails new myapp --edge --database=postgresql
61
+ :::>- $ rails new myapp --database=postgresql
66
62
  ```
67
63
 
68
64
  Then move into your application directory.
69
65
 
70
66
  ```term
71
- :::> $ cd myapp
67
+ :::>- $ cd myapp
72
68
  ```
73
69
 
74
- > callout If you experience problems or get stuck with this tutorial, your questions may be answered in a later part of this document. If you experience a problem, try reading through the entire document and then go back to your issue. It can also be useful to review your previous steps to ensure they all executed correctly.
70
+ Create a database locally:
75
71
 
76
- ## Database
72
+ ```
73
+ :::>> $ bin/rails db:create
74
+ ```
75
+
76
+ ## Add the pg gem
77
77
 
78
- If you already have an app that was created without specifying `--database=postgresql` you will need to add the `pg` gem to your Rails project. Edit your `Gemfile` and change this line:
78
+ If you're using an existing app that was created without specifying `--database=postgresql`, you need to add the `pg` gem to your Rails project. Edit your `Gemfile` and change this line:
79
79
 
80
80
  ```ruby
81
81
  gem 'sqlite3'
@@ -87,7 +87,7 @@ To this:
87
87
  gem 'pg'
88
88
  ```
89
89
 
90
- > callout We highly recommend using PostgreSQL during development. Maintaining [parity between your development](http://www.12factor.net/dev-prod-parity) and deployment environments prevents subtle bugs from being introduced because of differences between your environments. [Install Postgres locally](https://devcenter.heroku.com/articles/heroku-postgresql#local-setup) now if it is not already on your system.
90
+ > callout We highly recommend using PostgreSQL during development. Maintaining [parity between your development](http://www.12factor.net/dev-prod-parity) and deployment environments prevents subtle bugs from being introduced because of differences between your environments. [Install Postgres locally](heroku-postgresql#local-setup) now if it is not already on your system.
91
91
 
92
92
  Now re-install your dependencies (to generate a new `Gemfile.lock`):
93
93
 
@@ -95,27 +95,25 @@ Now re-install your dependencies (to generate a new `Gemfile.lock`):
95
95
  $ bundle install
96
96
  ```
97
97
 
98
- To get more information on why this change is needed and how to configure your app to run Postgres locally, see [why you cannot use Sqlite3 on Heroku](https://devcenter.heroku.com/articles/sqlite3).
98
+ For more information on why Postgres is recommended instead of Sqlite3, see [why you cannot use Sqlite3 on Heroku](sqlite3).
99
99
 
100
- In addition to using the `pg` gem, you'll also need to ensure the `config/database.yml` is using the `postgresql` adapter.
101
-
102
- The development section of your `config/database.yml` file should look something like this:
100
+ In addition to using the `pg` gem, ensure that your `config/database.yml` file is using the `postgresql` adapter. The development section of your `config/database.yml` file should look something like this:
103
101
 
104
102
  ```term
105
- :::>> $ cat config/database.yml
103
+ :::>> $ cat config/database.yml
106
104
  ```
107
105
 
108
106
  Be careful here. If you omit the `sql` at the end of `postgresql` in the `adapter` section, your application will not work.
109
107
 
110
- ## Welcome page
108
+ ## Create a welcome page
111
109
 
112
- Rails 5 no longer has a static index page in production. When you're using a new app, there will not be a root page in production, so we need to create one. We will first create a controller called `welcome` for our home page to live:
110
+ Rails 6 no longer has a static index page in production by default. When you're using a new app, there will not be a root page in production, so we need to create one. We will first create a controller called `welcome` for our home page to live:
113
111
 
114
112
  ```term
115
- :::> $ rails generate controller welcome
113
+ :::>- $ rails generate controller welcome
116
114
  ```
117
115
 
118
- Next we'll add an index page.
116
+ Next we'll add an index page:
119
117
 
120
118
  ```html
121
119
  :::>> file.write app/views/welcome/index.html.erb
@@ -128,21 +126,23 @@ Next we'll add an index page.
128
126
  Now we need to make Rails route to this action. We'll edit `config/routes.rb` to set the index page to our new method:
129
127
 
130
128
  ```ruby
131
- :::>> file.append config/routes.rb#4
129
+ :::>> file.append config/routes.rb#2
132
130
  root 'welcome#index'
133
131
  ```
134
132
 
135
133
  You can verify that the page is there by running your server:
136
134
 
137
135
  ```term
138
- $ rails server
136
+ :::>> background.start("rails server", name: "server")
137
+ :::-- background.stop(name: "server")
139
138
  ```
140
139
 
141
- And visiting [http://localhost:3000](http://localhost:3000) in your browser. If you do not see the page, [use the logs](#view-the-logs) that are output to your server to debug.
140
+ And visiting [http://localhost:3000](http://localhost:3000) in your browser. If you do not see the page, [use the logs](#view-logs) that are output to your server to debug.
142
141
 
143
142
  ## Heroku gems
144
143
 
145
- Previous versions of Rails required you to add a gem to your project [rails_12factor](https://github.com/heroku/rails_12factor) to enable static asset serving and logging on Heroku. If you are deploying a new application this gem is not needed. If you are upgrading an existing application you can remove this gem provided you have the apprpriate configuration in your `config/environments/production.rb` file:
144
+ Previous versions of Rails required you to add a gem to your project [rails_12factor](https://github.com/heroku/rails_12factor) to enable static asset serving and logging on Heroku. If you are deploying a new application, this gem is not needed. If you are upgrading an existing application, you can remove this gem provided you have the appropriate configuration in your `config/environments/production.rb` file:
145
+
146
146
 
147
147
  ```ruby
148
148
  # config/environments/production.rb
@@ -155,13 +155,15 @@ if ENV["RAILS_LOG_TO_STDOUT"].present?
155
155
  end
156
156
  ```
157
157
 
158
- ## Specify Ruby version in app
158
+ ## Specify your Ruby version
159
+
160
+ Rails 6 requires Ruby 2.5.0 or above. Heroku has a recent version of Ruby installed by default, however you can specify an exact version by using the `ruby` DSL in your `Gemfile`. Depending on your version of Ruby that you are currently running it might look like this:
159
161
 
160
- Rails 5 requires Ruby 2.2.0 or above. Heroku has a recent version of Ruby installed by default, however you can specify an exact version by using the `ruby` DSL in your `Gemfile`.
161
162
 
162
163
  ```ruby
163
- :::>> file.append Gemfile
164
- ruby "2.4.1"
164
+ :::-- $ sed -i'' -e '/^ruby/d' ./Gemfile
165
+ :::-> file.append Gemfile#4
166
+ ruby "2.6.6"
165
167
  ```
166
168
 
167
169
  You should also be running the same version of Ruby locally. You can check this by running `$ ruby -v`. You can get more information on [specifying your Ruby version on Heroku here](https://devcenter.heroku.com/articles/ruby-versions).
@@ -171,11 +173,11 @@ You should also be running the same version of Ruby locally. You can check this
171
173
  Heroku relies on [Git](http://git-scm.com/), a distributed source control management tool, for deploying your project. If your project is not already in Git, first verify that `git` is on your system:
172
174
 
173
175
  ```term
174
- :::> $ git --help
176
+ :::>- $ git --help
175
177
  :::>> | $ head -n 5
176
178
  ```
177
179
 
178
- If you don't see any output or get `command not found` you will need to install it on your system. Verify that the [Heroku toolbelt](https://toolbelt.heroku.com/) is installed.
180
+ If you don't see any output or get `command not found` you need to install Git on your system.
179
181
 
180
182
  Once you've verified that Git works, first make sure you are in your Rails app directory by running `$ ls`:
181
183
 
@@ -188,9 +190,9 @@ The output should look like this:
188
190
  Now run these commands in your Rails app directory to initialize and commit your code to Git:
189
191
 
190
192
  ```term
191
- :::> $ git init
192
- :::> $ git add .
193
- :::> $ git commit -m "init"
193
+ :::>- $ git init
194
+ :::>- $ git add .
195
+ :::>- $ git commit -m "init"
194
196
  ```
195
197
 
196
198
  You can verify everything was committed correctly by running:
@@ -215,25 +217,25 @@ You can verify that the remote was added to your project by running:
215
217
  :::>> $ git config --list | grep heroku
216
218
  ```
217
219
 
218
- If you see `fatal: not in a git directory` then you are likely not in the correct directory. Otherwise you may deploy your code. After you deploy your code, you will need to migrate your database, make sure it is properly scaled, and use logs to debug any issues that come up.
220
+ If you see `fatal: not in a git directory` then you are likely not in the correct directory. Otherwise, you can deploy your code. After you deploy your code, you need to migrate your database, make sure it is properly scaled, and use logs to debug any issues that come up.
219
221
 
220
222
  Deploy your code:
221
223
 
222
224
  ```term
223
- :::>> $ git push heroku master
225
+ :::>> $ git push heroku main || git push heroku master
224
226
  ```
225
227
 
226
228
  It is always a good idea to check to see if there are any warnings or errors in the output. If everything went well you can migrate your database.
227
229
 
228
230
  ## Migrate your database
229
231
 
230
- If you are using the database in your application you need to manually migrate the database by running:
232
+ If you are using the database in your application, you need to manually migrate the database by running:
231
233
 
232
234
  ```term
233
235
  $ heroku run rake db:migrate
234
236
  ```
235
237
 
236
- Any commands after the `heroku run` will be executed on a Heroku [dyno](dynos). You can obtain an interactive shell session by running `$ heroku run bash`.
238
+ Any commands after the `heroku run` are executed on a Heroku [dyno](dynos). You can obtain an interactive shell session by running `$ heroku run bash`.
237
239
 
238
240
  ## Visit your application
239
241
 
@@ -242,7 +244,7 @@ You've deployed your code to Heroku. You can now instruct Heroku to execute a pr
242
244
  Let's ensure we have one dyno running the `web` process type:
243
245
 
244
246
  ```term
245
- :::> $ heroku ps:scale web=1
247
+ :::>- $ heroku ps:scale web=1
246
248
  ```
247
249
 
248
250
  You can check the state of the app's dynos. The `heroku ps` command lists the running dynos of your application:
@@ -263,7 +265,7 @@ You should now see the "Hello World" text we inserted above.
263
265
 
264
266
  Heroku gives you a default web URL for simplicity while you are developing. When you are ready to scale up and use Heroku for production you can add your own [custom domain](https://devcenter.heroku.com/articles/custom-domains).
265
267
 
266
- ## View the logs
268
+ ## View logs
267
269
 
268
270
  If you run into any problems getting your app to perform properly, you will need to check the logs.
269
271
 
@@ -281,11 +283,11 @@ $ heroku logs --tail
281
283
 
282
284
  ## Dyno sleeping and scaling
283
285
 
284
- By default, new applications are deployed to a free dyno. Free apps will "sleep" to conserve resources. You can find more information about this behavior by reading about [free dyno behavior](https://devcenter.heroku.com/articles/free-dyno-hours).
286
+ By default, new applications are deployed to a free dyno. Free apps will "sleep" to conserve resources. You can find more information about this behavior by reading about [free dyno behavior](free-dyno-hours).
285
287
 
286
288
  To avoid dyno sleeping, you can upgrade to a hobby or professional dyno type as described in the [Dyno Types](dyno-types) article. For example, if you migrate your app to a professional dyno, you can easily scale it by running a command telling Heroku to execute a specific number of dynos, each running your web process type.
287
289
 
288
- ## Rails console
290
+ ## Run the Rails console
289
291
 
290
292
  Heroku allows you to run commands in a [one-off dyno](one-off-dynos) - scripts and applications that only need to be executed when needed - using the `heroku run` command. Use this to launch a Rails console process attached to your local terminal for experimenting in your app's environment:
291
293
 
@@ -297,7 +299,7 @@ irb(main):001:0> puts 1+1
297
299
 
298
300
  Another useful command for debugging is `$ heroku run bash` which will spin up a new dyno and give you access to a bash session.
299
301
 
300
- ## Rake
302
+ ## Run Rake commands
301
303
 
302
304
  Rake can be run as an attached process exactly like the console:
303
305
 
@@ -305,9 +307,9 @@ Rake can be run as an attached process exactly like the console:
305
307
  $ heroku run rake db:migrate
306
308
  ```
307
309
 
308
- ## Webserver
310
+ ## Configure your webserver
309
311
 
310
- By default, your app's web process runs `rails server`, which uses Puma in Rails 5. If you are upgrading an app you'll need to add `puma` to your application `Gemfile`:
312
+ By default, your app's web process runs `rails server`, which uses Puma in Rails 6. If you are upgrading an app you'll need to add `puma` to your application `Gemfile`:
311
313
 
312
314
  ```ruby
313
315
  gem 'puma'
@@ -316,14 +318,14 @@ gem 'puma'
316
318
  Then run
317
319
 
318
320
  ```term
319
- :::> $ bundle install
321
+ :::>- $ bundle install
320
322
  ```
321
323
 
322
- Now you are ready to configure your app to use Puma. For this tutorial we will use the default `config/puma.rb` of that ships with Rails 5, but we recommend reading more about configuring your application for maximum performance by [reading the Puma documentation](https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server).
324
+ Now you are ready to configure your app to use Puma. For this tutorial we will use the default `config/puma.rb` of that ships with Rails 6, but we recommend reading more about configuring your application for maximum performance by [reading the Puma documentation](https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server).
323
325
 
324
326
  Finally you will need to tell Heroku how to run your Rails app by creating a `Procfile` in the root of your application directory.
325
327
 
326
- ### Procfile
328
+ ### Create a Procfile
327
329
 
328
330
  Change the command used to launch your web process by creating a file called [Procfile](procfile) and entering this:
329
331
 
@@ -332,11 +334,11 @@ Change the command used to launch your web process by creating a file called [Pr
332
334
  web: bundle exec puma -t 5:5 -p ${PORT:-3000} -e ${RACK_ENV:-development}
333
335
  ```
334
336
 
335
- > Note: The case of `Procfile` matters, the first letter must be uppercase.
337
+ > Note: This file must be named `Procfile` exactly.
336
338
 
337
339
  We recommend generating a Puma config file based on [our Puma documentation](https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server) for maximum performance.
338
340
 
339
- To use the Procfile locally you can use `heroku local`.
341
+ To use the Procfile locally, you can use `heroku local`.
340
342
 
341
343
  In addition to running commands in your `Procfile` `heroku local` can also help you manage environment variables locally through a `.env` file. Set the local `RACK_ENV` to development in your environment and a `PORT` to connect to. Before pushing to Heroku you'll want to test with the `RACK_ENV` set to production since this is the environment your Heroku app will run in.
342
344
 
@@ -350,30 +352,31 @@ In addition to running commands in your `Procfile` `heroku local` can also help
350
352
  You'll also want to add `.env` to your `.gitignore` since this is for local environment setup.
351
353
 
352
354
  ```term
353
- :::> $ echo ".env" >> .gitignore
354
- :::> $ git add .gitignore
355
- :::> $ git commit -m "add .env to .gitignore"
355
+ :::>- $ echo ".env" >> .gitignore
356
+ :::>- $ git add .gitignore
357
+ :::>- $ git commit -m "add .env to .gitignore"
358
+ ```
359
+
360
+ If you're running Rails 6.0.0 you'll need to create a `tmp/pids` directory:
361
+
362
+ ```term
363
+ :::>> $ mkdir -p tmp/pids
364
+ :::>> $ touch tmp/pids/.gitkeep
356
365
  ```
357
366
 
358
367
  Test your Procfile locally using Foreman. You can now start your web server by running:
359
368
 
360
369
  ```term
361
- $ heroku local
362
- [OKAY] Loaded ENV .env File as KEY=VALUE Format
363
- 11:06:35 AM web.1 | [18878] Puma starting in cluster mode...
364
- 11:06:35 AM web.1 | [18878] * Version 3.8.2 (ruby 2.4.1-p111), codename: Sassy Salamander
365
- 11:06:35 AM web.1 | [18878] * Min threads: 5, max threads: 5
366
- 11:06:35 AM web.1 | [18878] * Environment: development
367
- 11:06:35 AM web.1 | [18878] * Process workers: 2
368
- 11:06:35 AM web.1 | [18878] * Preloading application
370
+ :::>> background.start("heroku local", name: "local", wait: "Ctrl-C to stop", timeout: 15)
371
+ :::-- background.stop(name: "local")
369
372
  ```
370
373
 
371
374
  Looks good, so press `Ctrl+C` to exit and you can deploy your changes to Heroku:
372
375
 
373
376
  ```term
374
- :::> $ git add .
375
- :::> $ git commit -m "use puma via procfile"
376
- :::> $ git push heroku master
377
+ :::>- $ git add .
378
+ :::>- $ git commit -m "use puma via procfile"
379
+ :::>- $ git push heroku main || git push heroku master
377
380
  ```
378
381
 
379
382
  Check `ps`. You'll see that the web process uses your new command specifying Puma as the web server.
@@ -392,7 +395,7 @@ $ heroku logs
392
395
 
393
396
  There are several options for invoking the [Rails asset pipeline](http://guides.rubyonrails.org/asset_pipeline.html) when deploying to Heroku. For general information on the asset pipeline please see the [Rails 3.1+ Asset Pipeline on Heroku Cedar](rails-asset-pipeline) article.
394
397
 
395
- The `config.assets.initialize_on_precompile` option has been removed is and not needed for Rails 5. Also, any failure in asset compilation will now cause the push to fail. For Rails 5 asset pipeline support see the [Ruby Support](https://devcenter.heroku.com/articles/ruby-support#rails-5-x-applications) page.
398
+ The `config.assets.initialize_on_precompile` option has been removed is and not needed for Rails 6. Also, any failure in asset compilation will now cause the push to fail. For Rails 6 asset pipeline support see the [Ruby Support](ruby-support#rails-5-x-applications) page.
396
399
 
397
400
  ## Troubleshooting
398
401
 
@@ -440,6 +443,9 @@ end
440
443
 
441
444
  Confirm it works locally, then push to Heroku.
442
445
 
443
- ## Done
446
+ ## Next steps
447
+
448
+ Congratulations! You have deployed your first Rails 6 application to Heroku. Here's some recommended reading:
444
449
 
445
- You have deployed your first application to Heroku. The next step is to deploy your own application. You can read more about Ruby on Heroku at the [Dev Center](https://devcenter.heroku.com/categories/ruby).
450
+ * Visit the [Ruby support category](/categories/ruby-support) to learn more about using Ruby and Rails on Heroku.
451
+ * The [Deployment category](/categories/deployment) provides a variety of powerful integrations and features to help streamline and simplify your deployments.
@@ -0,0 +1,5 @@
1
+ ```
2
+ :::>> $ mkdir foo
3
+ :::>> $ cd foo
4
+ :::>> $ echo "hello" >> hello.txt
5
+ ```
@@ -0,0 +1,10 @@
1
+ # Hello
2
+
3
+ ```
4
+ :::-- rundoc.require "../dependency/rundoc.md"
5
+ ```
6
+
7
+ ```
8
+ :::>> $ ruby -e "raise 'nope' unless File.read('hello.txt').chomp == 'hello'"
9
+ ```
10
+
@@ -0,0 +1,10 @@
1
+ # Hello
2
+
3
+ ```
4
+ :::>> website.visit(name: "google", url: "https://www.google.com")
5
+ # session.visit("https://www.codetriage.com")
6
+ :::>> website.screenshot(name: "google", upload: "s3")
7
+ ```
8
+
9
+
10
+ ## There
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class AppendFileTest < Test::Unit::TestCase
3
+ class AppendFileTest < Minitest::Test
4
4
 
5
5
  def test_appends_to_a_file
6
6
  Dir.mktmpdir do |dir|
@@ -71,7 +71,7 @@ gem 'rails', '4.0.0'
71
71
  Dir.chdir(dir) do
72
72
  FileUtils.touch("file-1234.txt")
73
73
  FileUtils.touch("file-5678.txt")
74
- assert_raise do
74
+ assert_raises do
75
75
  cc = Rundoc::CodeCommand::FileCommand::Append.new("file-*.txt")
76
76
  cc << "some text"
77
77
  cc.call
@@ -0,0 +1,69 @@
1
+ require 'test_helper'
2
+
3
+ class BackgroundTest < Minitest::Test
4
+ def test_process_spawn_gc
5
+ Dir.mktmpdir do |dir|
6
+ Dir.chdir(dir) do
7
+ file = "foo.txt"
8
+ `echo 'foo' >> #{file}`
9
+
10
+ background_start = Rundoc::CodeCommand::Background::Start.new("tail -f #{file}",
11
+ name: "tail2",
12
+ wait: "f"
13
+ )
14
+
15
+ GC.start
16
+
17
+ output = background_start.call
18
+
19
+ assert_match("foo", output)
20
+ assert_equal(true, background_start.alive?)
21
+
22
+ background_stop = Rundoc::CodeCommand::Background::Stop.new(name: "tail2")
23
+ background_stop.call
24
+
25
+ assert_equal(false, background_start.alive?)
26
+ end
27
+ end
28
+ end
29
+
30
+ def test_background_start
31
+ Dir.mktmpdir do |dir|
32
+ Dir.chdir(dir) do
33
+
34
+ file = "foo.txt"
35
+ `echo 'foo' >> #{file}`
36
+
37
+ background_start = Rundoc::CodeCommand::Background::Start.new("tail -f #{file}",
38
+ name: "tail",
39
+ wait: "f"
40
+ )
41
+ output = background_start.call
42
+
43
+ assert_match("foo", output)
44
+ assert_equal(true, background_start.alive?)
45
+
46
+ log_read = Rundoc::CodeCommand::Background::Log::Read.new(name: "tail")
47
+ output = log_read.call
48
+
49
+ assert_equal("foo", output.chomp)
50
+
51
+ log_clear = Rundoc::CodeCommand::Background::Log::Clear.new(name: "tail")
52
+ output = log_clear.call
53
+ assert_equal("", output)
54
+
55
+ `echo 'bar' >> #{file}`
56
+
57
+ log_read = Rundoc::CodeCommand::Background::Log::Read.new(name: "tail")
58
+ output = log_read.call
59
+
60
+ assert_equal("bar", output.chomp)
61
+
62
+ background_stop = Rundoc::CodeCommand::Background::Stop.new(name: "tail")
63
+ background_stop.call
64
+
65
+ assert_equal(false, background_start.alive?)
66
+ end
67
+ end
68
+ end
69
+ end