├── .github
└── workflows
│ └── ci.yml
├── .gitignore
├── .rspec
├── CHANGELOG.md
├── Gemfile
├── Gemfile.lock
├── MIT-LICENSE
├── README.md
├── Rakefile
├── app
├── assets
│ ├── config
│ │ └── dokno_manifest.js
│ ├── images
│ │ └── dokno
│ │ │ └── .keep
│ ├── javascripts
│ │ ├── dokno.js
│ │ ├── dokno
│ │ │ └── application.js
│ │ ├── feather.min.js
│ │ └── init.js
│ └── stylesheets
│ │ └── dokno
│ │ ├── application.css
│ │ └── tailwind.min.css
├── controllers
│ └── dokno
│ │ ├── application_controller.rb
│ │ ├── articles_controller.rb
│ │ ├── categories_controller.rb
│ │ ├── pagination_concern.rb
│ │ └── user_concern.rb
├── helpers
│ └── dokno
│ │ └── application_helper.rb
├── models
│ └── dokno
│ │ ├── application_record.rb
│ │ ├── article.rb
│ │ ├── article_slug.rb
│ │ ├── category.rb
│ │ └── log.rb
└── views
│ ├── dokno
│ ├── _article_formatting.html.erb
│ ├── _article_panel.html.erb
│ ├── _panel_formatting.html.erb
│ ├── _reset_formatting.html.erb
│ ├── articles
│ │ ├── _article_form.html.erb
│ │ ├── edit.html.erb
│ │ ├── new.html.erb
│ │ └── show.html.erb
│ └── categories
│ │ ├── _category_form.html.erb
│ │ ├── edit.html.erb
│ │ ├── index.html.erb
│ │ └── new.html.erb
│ ├── layouts
│ └── dokno
│ │ └── application.html.erb
│ └── partials
│ ├── _category_header.html.erb
│ ├── _form_errors.html.erb
│ ├── _logs.html.erb
│ └── _pagination.html.erb
├── bin
└── rails
├── config
└── routes.rb
├── db
└── migrate
│ ├── 20201203190330_baseline.rb
│ ├── 20201211192306_add_review_due_at_to_articles.rb
│ └── 20201213165700_add_starred_to_article.rb
├── dokno.gemspec
├── lib
├── dokno.rb
├── dokno
│ ├── config
│ │ └── config.rb
│ ├── engine.rb
│ └── version.rb
├── generators
│ └── dokno
│ │ ├── install
│ │ └── install_generator.rb
│ │ └── templates
│ │ └── config
│ │ ├── dokno_template.md
│ │ └── initializers
│ │ └── dokno.rb
└── tasks
│ └── dokno_tasks.rake
└── spec
├── dummy
├── .ruby-version
├── Rakefile
├── app
│ ├── assets
│ │ ├── config
│ │ │ └── manifest.js
│ │ ├── images
│ │ │ └── .keep
│ │ └── stylesheets
│ │ │ └── application.css
│ ├── controllers
│ │ ├── application_controller.rb
│ │ ├── concerns
│ │ │ └── .keep
│ │ └── dummy_controller.rb
│ ├── helpers
│ │ └── application_helper.rb
│ ├── lib
│ │ └── user.rb
│ ├── models
│ │ ├── application_record.rb
│ │ └── concerns
│ │ │ └── .keep
│ └── views
│ │ ├── dummy
│ │ └── dummy.html.erb
│ │ └── layouts
│ │ └── application.html.erb
├── bin
│ ├── rails
│ ├── rake
│ └── setup
├── config.ru
├── config
│ ├── application.rb
│ ├── boot.rb
│ ├── database.yml
│ ├── dokno_template.md
│ ├── environment.rb
│ ├── environments
│ │ ├── development.rb
│ │ └── test.rb
│ ├── initializers
│ │ ├── application_controller_renderer.rb
│ │ ├── assets.rb
│ │ ├── backtrace_silencers.rb
│ │ ├── content_security_policy.rb
│ │ ├── cookies_serializer.rb
│ │ ├── dokno.rb
│ │ ├── filter_parameter_logging.rb
│ │ ├── inflections.rb
│ │ ├── mime_types.rb
│ │ └── wrap_parameters.rb
│ ├── locales
│ │ └── en.yml
│ ├── puma.rb
│ ├── routes.rb
│ └── spring.rb
├── db
│ ├── schema.rb
│ └── seeds.rb
├── lib
│ └── assets
│ │ └── .keep
├── log
│ └── .keep
└── public
│ ├── .keep
│ └── favicon.ico
├── features
└── index_spec.rb
├── helpers
└── dokno
│ └── application_helper_spec.rb
├── models
└── dokno
│ ├── article_spec.rb
│ └── category_spec.rb
├── rails_helper.rb
├── requests
└── dokno
│ ├── application_spec.rb
│ ├── article_spec.rb
│ └── category_spec.rb
└── spec_helper.rb
/.github/workflows/ci.yml:
--------------------------------------------------------------------------------
1 | name: CI RSpec
2 |
3 | on:
4 | push:
5 | branches: [ master ]
6 | pull_request:
7 | branches: [ master ]
8 |
9 | jobs:
10 | build:
11 |
12 | runs-on: ubuntu-latest
13 | defaults:
14 | run:
15 | working-directory: ./
16 |
17 | services:
18 | postgres:
19 | image: postgres:12.5
20 | ports:
21 | - 5432:5432
22 | env:
23 | POSTGRES_USER: postgres
24 | POSTGRES_PASSWORD: postgres
25 | options: >-
26 | --health-cmd pg_isready
27 | --health-interval 10s
28 | --health-timeout 5s
29 | --health-retries 5
30 |
31 | steps:
32 | - uses: actions/checkout@v2
33 |
34 | - name: Set up Ruby 3.2.2
35 | uses: ruby/setup-ruby@v1
36 | with:
37 | ruby-version: 3.2.2
38 |
39 | - name: Install Postgres client
40 | run: sudo apt-get -yqq install libpq-dev
41 |
42 | - name: Setup DB
43 | env:
44 | RAILS_ENV: test
45 | POSTGRES_USER: postgres
46 | POSTGRES_PASSWORD: postgres
47 | working-directory: ./spec/dummy
48 | run: |
49 | gem install bundler
50 | bundle install --jobs 4 --retry 3
51 | bin/rails db:create
52 | bin/rails db:migrate
53 |
54 | - name: Run Tests
55 | env:
56 | RAILS_ENV: test
57 | POSTGRES_USER: postgres
58 | POSTGRES_PASSWORD: postgres
59 | run: |
60 | gem install bundler
61 | bundle install --jobs 4 --retry 3
62 | bundle exec rspec
63 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .bundle/
3 | log/*.log
4 | pkg/
5 | coverage
6 | spec/dummy/db/*.sqlite3
7 | spec/dummy/db/*.sqlite3-journal
8 | spec/dummy/db/*.sqlite3-*
9 | spec/dummy/log/*.log
10 | spec/dummy/storage/
11 | spec/dummy/tmp/
12 | rspec_failures.txt
13 | *.gem
14 |
--------------------------------------------------------------------------------
/.rspec:
--------------------------------------------------------------------------------
1 | --require spec_helper
2 | --color
3 | --profile
4 | --format documentation
5 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 | All notable changes to this project are documented here.
3 |
4 | This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
5 |
6 | ## 1.4.14
7 | ### Updated
8 | - Development dependency security vulnerability gem updates
9 |
10 | ## 1.4.13
11 | ### Updated
12 | - Development dependency security vulnerability gem updates
13 |
14 | ## 1.4.12
15 | ### Updated
16 | - Development dependency security vulnerability gem updates
17 | - [GHSA-pxvg-2qj5-37jq](https://github.com/advisories/GHSA-pxvg-2qj5-37jq)
18 | - [GHSA-68xg-gqqm-vgj8](https://github.com/advisories/GHSA-68xg-gqqm-vgj8)
19 | - [GHSA-4g8v-vg43-wpgf](https://github.com/advisories/GHSA-4g8v-vg43-wpgf)
20 | - [GHSA-cr5q-6q9f-rq6q](https://github.com/advisories/GHSA-cr5q-6q9f-rq6q)
21 |
22 | ## 1.4.11
23 | ### Updated
24 | - Development dependency security vulnerability gem updates
25 | - [GHSA-3h57-hmj3-gj3p](https://github.com/advisories/GHSA-3h57-hmj3-gj3p)
26 | - [GHSA-579w-22j4-4749](https://github.com/advisories/GHSA-579w-22j4-4749)
27 | - [GHSA-hq7p-j377-6v63](https://github.com/advisories/GHSA-hq7p-j377-6v63)
28 | - [GHSA-5x79-w82f-gw8w](https://github.com/advisories/GHSA-5x79-w82f-gw8w)
29 | - [GHSA-486f-hjj9-9vhh](https://github.com/advisories/GHSA-486f-hjj9-9vhh)
30 | - [GHSA-3x8r-x6xp-q4vm](https://github.com/advisories/GHSA-3x8r-x6xp-q4vm)
31 | - [GHSA-qv4q-mr5r-qprj](https://github.com/advisories/GHSA-qv4q-mr5r-qprj)
32 | - [GHSA-pj73-v5mw-pm9j](https://github.com/advisories/GHSA-pj73-v5mw-pm9j)
33 | - [GHSA-9h9g-93gc-623h](https://github.com/advisories/GHSA-9h9g-93gc-623h)
34 | - [GHSA-rrfc-7g8p-99q8](https://github.com/advisories/GHSA-rrfc-7g8p-99q8)
35 | - [GHSA-mcvf-2q2m-x72m](https://github.com/advisories/GHSA-mcvf-2q2m-x72m)
36 | - [GHSA-228g-948r-83gx](https://github.com/advisories/GHSA-228g-948r-83gx)
37 | - [GHSA-2qc6-mcvw-92cw](https://github.com/advisories/GHSA-2qc6-mcvw-92cw)
38 | - [GHSA-c6qg-cjj8-47qp](https://github.com/advisories/GHSA-c6qg-cjj8-47qp)
39 | - [GHSA-8xww-x3g3-6jcv](https://github.com/advisories/GHSA-8xww-x3g3-6jcv)
40 | - [GHSA-j6gc-792m-qgm2](https://github.com/advisories/GHSA-j6gc-792m-qgm2)
41 | - [GHSA-p84v-45xj-wwqj](https://github.com/advisories/GHSA-p84v-45xj-wwqj)
42 | - [GHSA-23c2-gwp5-pxw9](https://github.com/advisories/GHSA-23c2-gwp5-pxw9)
43 | - [GHSA-93pm-5p5f-3ghx](https://github.com/advisories/GHSA-93pm-5p5f-3ghx)
44 | - [GHSA-rqv2-275x-2jq5](https://github.com/advisories/GHSA-rqv2-275x-2jq5)
45 | - [GHSA-65f5-mfpf-vfhj](https://github.com/advisories/GHSA-65f5-mfpf-vfhj)
46 | - [GHSA-9chr-4fjh-5rgw](https://github.com/advisories/GHSA-9chr-4fjh-5rgw)
47 |
48 | ## 1.4.10
49 | ### Updated
50 | - Security vulnerability gem updates
51 | - [GHSA-5ww9-9qp2-x524](https://github.com/advisories/GHSA-5ww9-9qp2-x524)
52 | - [GHSA-3hhc-qp5v-9p2j](https://github.com/advisories/GHSA-3hhc-qp5v-9p2j)
53 | - [GHSA-pg8v-g4xq-hww9](https://github.com/advisories/GHSA-pg8v-g4xq-hww9)
54 |
55 | ## 1.4.9
56 | ### Updated
57 | - Security vulnerability gem updates
58 | - [GHSA-h99w-9q5r-gjq9](https://github.com/advisories/GHSA-h99w-9q5r-gjq9)
59 |
60 | ## 1.4.8
61 | ### Updated
62 | - Security vulnerability gem updates
63 | - [GHSA-wh98-p28r-vrc9](https://github.com/advisories/GHSA-wh98-p28r-vrc9)
64 | - [GHSA-rmj8-8hhh-gv5h](https://github.com/advisories/GHSA-rmj8-8hhh-gv5h)
65 | - [GHSA-fq42-c5rg-92c2](https://github.com/advisories/GHSA-fq42-c5rg-92c2)
66 | - [GHSA-w749-p3v6-hccq](https://github.com/advisories/GHSA-w749-p3v6-hccq)
67 |
68 | ## 1.4.7
69 | ### Updated
70 | - Security vulnerability gem updates
71 | - [CVE-2021-41098](https://github.com/advisories/GHSA-2rr5-8q37-2w7h)
72 | - [CVE-2021-41136](https://github.com/advisories/GHSA-48w2-rm65-62xx)
73 |
74 | ## 1.4.6
75 | ### Updated
76 | - Security vulnerability gem updates
77 | - [CVE-2021-22942](https://github.com/advisories/GHSA-2rqw-v265-jf8c)
78 |
79 | ## 1.4.5
80 | ### Updated
81 | - Security vulnerability gem updates
82 | - [CVE-2021-32740](https://github.com/advisories/GHSA-jxhc-q857-3j6g)
83 |
84 | ## 1.4.4
85 | ### Updated
86 | - Security vulnerability gem updates
87 | - [CVE-2019-16770](https://github.com/puma/puma/security/advisories/GHSA-7xx3-m584-x994)
88 |
89 | ## 1.4.3
90 | ### Updated
91 | - Security vulnerability gem updates
92 | - [CVE-2021-22902](https://github.com/advisories/GHSA-g8ww-46x2-2p65)
93 |
94 | ## 1.4.1
95 | ### Updated
96 | - Security vulnerability gem updates
97 | - [CVE-2021-22880](https://github.com/advisories/GHSA-8hc4-xxm3-5ppp)
98 | - [CVE-2021-22881](https://github.com/advisories/GHSA-8877-prq4-9xfw)
99 | - [GHSA-vr8q-g5c7-m54m](https://github.com/advisories/GHSA-vr8q-g5c7-m54m)
100 |
101 | ## 1.4.0
102 | ### Added
103 | - `dokno-link` class to the `dokno_article_link` helper markup to facilitate link styling by the host
104 | - The ability to quickly return to the prior index page location when viewing an article
105 | - Caching of the category option list within the Category form
106 |
107 | ### Changed
108 | - Various code re-org
109 |
110 | ### Fixed
111 | - Problem when the host app has an improperly configured `app_user_object` setting raising a `nil` error during initialization
112 |
113 | ## 1.3.0
114 | ### Added
115 | - Up for review articles
116 | - Starred articles
117 |
118 | ## 1.2.1
119 | ### Fixed
120 | - Problem with invalidating the category option cache when no category is yet in the database
121 |
122 | ## 1.2.0
123 | ### Added
124 | - Search hotkey
125 | - Category context to article pages
126 | - Article counts to category options list
127 | - Capybara tests
128 |
129 | ## 1.1.1
130 | ### Added
131 | - Caching category hierarchy SELECT list OPTIONs
132 |
133 | ### Changed
134 | - Increased font weight in flyout articles
135 | - Removed extraneous metadata from printed articles
136 | - Improved Faker seed data
137 |
138 | ### Fixed
139 | - Search results count showed records on page instead of total results
140 | - Changing page number via input caused loss of category context
141 |
142 | ## 1.1.0
143 | ### Added
144 | - Ability to delete categories
145 | - User action flash status messages
146 | - Ability to close flyout articles by clicking outside of them
147 | - Clickable breadcrumbs to the top of article pages
148 | - Breadcrumbs to the top of category index pages when the category has 1+ parent
149 |
150 | ### Changed
151 | - Stripping all surrounding whitespace from `dokno_article_link` helper
152 | - Improved category hierarchy dropdown appearance
153 | - Auto-focusing on first field on all forms
154 |
155 | ## 1.0.0
156 | Public API. Usable release :tada:
157 |
158 | ### Added
159 | - 100% spec coverage
160 | - Search term highlighting on article index pages, detail pages, and print views
161 | - Article permalink support
162 | - Article view count tracking
163 | - Article change logging
164 | - Article index page pagination
165 | - Article index page sorting by title, views, and dates created or updated
166 |
167 | ### Changed
168 | - README
169 |
170 | ## 0.1.0
171 | ### Added
172 | - Baseline
173 |
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | source 'https://rubygems.org'
2 | git_source(:github) { |repo| "https://github.com/#{repo}.git" }
3 |
4 | gemspec
5 |
--------------------------------------------------------------------------------
/Gemfile.lock:
--------------------------------------------------------------------------------
1 | PATH
2 | remote: .
3 | specs:
4 | dokno (1.4.13)
5 | diffy (~> 3.4)
6 | redcarpet (~> 3.6)
7 |
8 | GEM
9 | remote: https://rubygems.org/
10 | specs:
11 | actioncable (8.0.2)
12 | actionpack (= 8.0.2)
13 | activesupport (= 8.0.2)
14 | nio4r (~> 2.0)
15 | websocket-driver (>= 0.6.1)
16 | zeitwerk (~> 2.6)
17 | actionmailbox (8.0.2)
18 | actionpack (= 8.0.2)
19 | activejob (= 8.0.2)
20 | activerecord (= 8.0.2)
21 | activestorage (= 8.0.2)
22 | activesupport (= 8.0.2)
23 | mail (>= 2.8.0)
24 | actionmailer (8.0.2)
25 | actionpack (= 8.0.2)
26 | actionview (= 8.0.2)
27 | activejob (= 8.0.2)
28 | activesupport (= 8.0.2)
29 | mail (>= 2.8.0)
30 | rails-dom-testing (~> 2.2)
31 | actionpack (8.0.2)
32 | actionview (= 8.0.2)
33 | activesupport (= 8.0.2)
34 | nokogiri (>= 1.8.5)
35 | rack (>= 2.2.4)
36 | rack-session (>= 1.0.1)
37 | rack-test (>= 0.6.3)
38 | rails-dom-testing (~> 2.2)
39 | rails-html-sanitizer (~> 1.6)
40 | useragent (~> 0.16)
41 | actiontext (8.0.2)
42 | actionpack (= 8.0.2)
43 | activerecord (= 8.0.2)
44 | activestorage (= 8.0.2)
45 | activesupport (= 8.0.2)
46 | globalid (>= 0.6.0)
47 | nokogiri (>= 1.8.5)
48 | actionview (8.0.2)
49 | activesupport (= 8.0.2)
50 | builder (~> 3.1)
51 | erubi (~> 1.11)
52 | rails-dom-testing (~> 2.2)
53 | rails-html-sanitizer (~> 1.6)
54 | activejob (8.0.2)
55 | activesupport (= 8.0.2)
56 | globalid (>= 0.3.6)
57 | activemodel (8.0.2)
58 | activesupport (= 8.0.2)
59 | activerecord (8.0.2)
60 | activemodel (= 8.0.2)
61 | activesupport (= 8.0.2)
62 | timeout (>= 0.4.0)
63 | activestorage (8.0.2)
64 | actionpack (= 8.0.2)
65 | activejob (= 8.0.2)
66 | activerecord (= 8.0.2)
67 | activesupport (= 8.0.2)
68 | marcel (~> 1.0)
69 | activesupport (8.0.2)
70 | base64
71 | benchmark (>= 0.3)
72 | bigdecimal
73 | concurrent-ruby (~> 1.0, >= 1.3.1)
74 | connection_pool (>= 2.2.5)
75 | drb
76 | i18n (>= 1.6, < 2)
77 | logger (>= 1.4.2)
78 | minitest (>= 5.1)
79 | securerandom (>= 0.3)
80 | tzinfo (~> 2.0, >= 2.0.5)
81 | uri (>= 0.13.1)
82 | addressable (2.8.7)
83 | public_suffix (>= 2.0.2, < 7.0)
84 | base64 (0.2.0)
85 | benchmark (0.4.0)
86 | bigdecimal (3.1.9)
87 | builder (3.3.0)
88 | byebug (12.0.0)
89 | capybara (3.40.0)
90 | addressable
91 | matrix
92 | mini_mime (>= 0.1.3)
93 | nokogiri (~> 1.11)
94 | rack (>= 1.6.0)
95 | rack-test (>= 0.6.3)
96 | regexp_parser (>= 1.5, < 3.0)
97 | xpath (~> 3.2)
98 | coderay (1.1.3)
99 | concurrent-ruby (1.3.5)
100 | connection_pool (2.5.0)
101 | crass (1.0.6)
102 | database_cleaner-active_record (2.2.0)
103 | activerecord (>= 5.a)
104 | database_cleaner-core (~> 2.0.0)
105 | database_cleaner-core (2.0.1)
106 | date (3.4.1)
107 | diff-lcs (1.6.1)
108 | diffy (3.4.3)
109 | docile (1.4.1)
110 | drb (2.2.1)
111 | erubi (1.13.1)
112 | faker (3.5.1)
113 | i18n (>= 1.8.11, < 2)
114 | globalid (1.2.1)
115 | activesupport (>= 6.1)
116 | i18n (1.14.7)
117 | concurrent-ruby (~> 1.0)
118 | io-console (0.8.0)
119 | irb (1.15.1)
120 | pp (>= 0.6.0)
121 | rdoc (>= 4.0.0)
122 | reline (>= 0.4.2)
123 | logger (1.7.0)
124 | loofah (2.24.0)
125 | crass (~> 1.0.2)
126 | nokogiri (>= 1.12.0)
127 | mail (2.8.1)
128 | mini_mime (>= 0.1.1)
129 | net-imap
130 | net-pop
131 | net-smtp
132 | marcel (1.0.4)
133 | matrix (0.4.2)
134 | method_source (1.1.0)
135 | mini_mime (1.1.5)
136 | minitest (5.25.5)
137 | net-imap (0.5.6)
138 | date
139 | net-protocol
140 | net-pop (0.1.2)
141 | net-protocol
142 | net-protocol (0.2.2)
143 | timeout
144 | net-smtp (0.5.1)
145 | net-protocol
146 | nio4r (2.7.4)
147 | nokogiri (1.18.7-arm64-darwin)
148 | racc (~> 1.4)
149 | pg (1.5.9)
150 | pp (0.6.2)
151 | prettyprint
152 | prettyprint (0.2.0)
153 | pry (0.15.2)
154 | coderay (~> 1.1)
155 | method_source (~> 1.0)
156 | pry-byebug (3.11.0)
157 | byebug (~> 12.0)
158 | pry (>= 0.13, < 0.16)
159 | psych (5.2.3)
160 | date
161 | stringio
162 | public_suffix (6.0.1)
163 | puma (6.6.0)
164 | nio4r (~> 2.0)
165 | racc (1.8.1)
166 | rack (3.1.12)
167 | rack-session (2.1.0)
168 | base64 (>= 0.1.0)
169 | rack (>= 3.0.0)
170 | rack-test (2.2.0)
171 | rack (>= 1.3)
172 | rackup (2.2.1)
173 | rack (>= 3)
174 | rails (8.0.2)
175 | actioncable (= 8.0.2)
176 | actionmailbox (= 8.0.2)
177 | actionmailer (= 8.0.2)
178 | actionpack (= 8.0.2)
179 | actiontext (= 8.0.2)
180 | actionview (= 8.0.2)
181 | activejob (= 8.0.2)
182 | activemodel (= 8.0.2)
183 | activerecord (= 8.0.2)
184 | activestorage (= 8.0.2)
185 | activesupport (= 8.0.2)
186 | bundler (>= 1.15.0)
187 | railties (= 8.0.2)
188 | rails-dom-testing (2.2.0)
189 | activesupport (>= 5.0.0)
190 | minitest
191 | nokogiri (>= 1.6)
192 | rails-html-sanitizer (1.6.2)
193 | loofah (~> 2.21)
194 | nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
195 | railties (8.0.2)
196 | actionpack (= 8.0.2)
197 | activesupport (= 8.0.2)
198 | irb (~> 1.13)
199 | rackup (>= 1.0.0)
200 | rake (>= 12.2)
201 | thor (~> 1.0, >= 1.2.2)
202 | zeitwerk (~> 2.6)
203 | rake (13.2.1)
204 | rdoc (6.13.1)
205 | psych (>= 4.0.0)
206 | redcarpet (3.6.1)
207 | regexp_parser (2.10.0)
208 | reline (0.6.0)
209 | io-console (~> 0.5)
210 | rexml (3.4.1)
211 | rspec-core (3.13.3)
212 | rspec-support (~> 3.13.0)
213 | rspec-expectations (3.13.3)
214 | diff-lcs (>= 1.2.0, < 2.0)
215 | rspec-support (~> 3.13.0)
216 | rspec-mocks (3.13.2)
217 | diff-lcs (>= 1.2.0, < 2.0)
218 | rspec-support (~> 3.13.0)
219 | rspec-rails (7.1.1)
220 | actionpack (>= 7.0)
221 | activesupport (>= 7.0)
222 | railties (>= 7.0)
223 | rspec-core (~> 3.13)
224 | rspec-expectations (~> 3.13)
225 | rspec-mocks (~> 3.13)
226 | rspec-support (~> 3.13)
227 | rspec-support (3.13.2)
228 | rubyzip (2.4.1)
229 | securerandom (0.4.1)
230 | selenium-webdriver (4.30.1)
231 | base64 (~> 0.2)
232 | logger (~> 1.4)
233 | rexml (~> 3.2, >= 3.2.5)
234 | rubyzip (>= 1.2.2, < 3.0)
235 | websocket (~> 1.0)
236 | simplecov (0.22.0)
237 | docile (~> 1.1)
238 | simplecov-html (~> 0.11)
239 | simplecov_json_formatter (~> 0.1)
240 | simplecov-html (0.13.1)
241 | simplecov_json_formatter (0.1.4)
242 | sprockets (4.2.1)
243 | concurrent-ruby (~> 1.0)
244 | rack (>= 2.2.4, < 4)
245 | sprockets-rails (3.5.2)
246 | actionpack (>= 6.1)
247 | activesupport (>= 6.1)
248 | sprockets (>= 3.0.0)
249 | stringio (3.1.6)
250 | thor (1.3.2)
251 | timeout (0.4.3)
252 | tzinfo (2.0.6)
253 | concurrent-ruby (~> 1.0)
254 | uri (1.0.3)
255 | useragent (0.16.11)
256 | websocket (1.2.11)
257 | websocket-driver (0.7.7)
258 | base64
259 | websocket-extensions (>= 0.1.0)
260 | websocket-extensions (0.1.5)
261 | xpath (3.2.0)
262 | nokogiri (~> 1.8)
263 | zeitwerk (2.7.2)
264 |
265 | PLATFORMS
266 | arm64-darwin-22
267 |
268 | DEPENDENCIES
269 | capybara
270 | database_cleaner-active_record
271 | dokno!
272 | faker
273 | pg
274 | pry-byebug
275 | puma
276 | rails (~> 8)
277 | rspec-rails
278 | selenium-webdriver
279 | simplecov
280 | sprockets-rails
281 |
282 | BUNDLED WITH
283 | 2.4.10
284 |
--------------------------------------------------------------------------------
/MIT-LICENSE:
--------------------------------------------------------------------------------
1 | Copyright 2020 Courtney Payne
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining
4 | a copy of this software and associated documentation files (the
5 | "Software"), to deal in the Software without restriction, including
6 | without limitation the rights to use, copy, modify, merge, publish,
7 | distribute, sublicense, and/or sell copies of the Software, and to
8 | permit persons to whom the Software is furnished to do so, subject to
9 | the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be
12 | included in all copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Dokno
2 |
3 | > [!WARNING]
4 | > This project is largely unmaintained now. I'll happily accept PRs to keep things in working order, but I no longer plan to make updates.
5 |
6 |  [](https://badge.fury.io/rb/dokno)
7 |
8 | Dokno (e.g., "I _do' kno'_ the answer") is a lightweight Rails Engine for storing and managing your app's domain knowledge.
9 |
10 | It provides a repository to store information about your app for posterity, such as term definitions, system logic and implementation details, background for past system design decisions, or anything else related to your app that would be beneficial for you and your users to know, now and in the future.
11 |
12 |
13 |
14 | ## Installation
15 | Add this line to your application's Gemfile:
16 | ```ruby
17 | gem 'dokno'
18 | ```
19 |
20 | From your app's root folder, run:
21 | ```bash
22 | $ bundle
23 | ```
24 |
25 | Run Dokno migrations to add the Dokno article and category tables to your db:
26 | ```bash
27 | $ rake db:migrate
28 | ```
29 |
30 | Mount Dokno in your `/config/routes.rb` at the desired path:
31 | ```ruby
32 | mount Dokno::Engine, at: "/help"
33 | ```
34 |
35 | Initialize Dokno configuration:
36 | ```bash
37 | $ rails g dokno:install
38 | ```
39 |
40 | To enable [in-context articles](#in-context-article-links) in your app, add the supporting partial to the bottom of your application's `app/views/layouts/application.html.erb`, just above the closing `