archangel 0.0.2 → 0.0.3

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 (72) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE.md +7 -15
  3. data/.github/PULL_REQUEST_TEMPLATE.md +0 -5
  4. data/.gitignore +1 -0
  5. data/.hound.yml +2 -2
  6. data/.jshintignore +5 -0
  7. data/.jshintrc +28 -0
  8. data/.nvmrc +1 -0
  9. data/CONTRIBUTING.md +13 -114
  10. data/Gemfile +3 -3
  11. data/README.md +12 -37
  12. data/Rakefile +11 -0
  13. data/app/controllers/archangel/application_controller.rb +1 -2
  14. data/archangel.gemspec +3 -1
  15. data/bin/archangel +15 -0
  16. data/docs/Developers.md +122 -1
  17. data/docs/Extension/Controllers.md +139 -0
  18. data/docs/Extension/Developers.md +27 -0
  19. data/docs/Extension/Helpers.md +17 -0
  20. data/docs/Extension/Ideas.md +131 -0
  21. data/docs/Extension/Models.md +32 -0
  22. data/docs/Extension/Policies.md +42 -0
  23. data/docs/Extension/Routes.md +26 -0
  24. data/docs/Extension/Uploaders.md +3 -0
  25. data/docs/Extension/Views.md +3 -0
  26. data/docs/Release.md +9 -3
  27. data/docs/Theme/Developers.md +7 -0
  28. data/lib/archangel/command/extension.rb +97 -0
  29. data/lib/archangel/command/templates/extension/.editorconfig +19 -0
  30. data/lib/archangel/command/templates/extension/.gitignore +11 -0
  31. data/lib/archangel/command/templates/extension/.rspec +2 -0
  32. data/lib/archangel/command/templates/extension/.rubocop.yml +32 -0
  33. data/lib/archangel/command/templates/extension/Gemfile +29 -0
  34. data/lib/archangel/command/templates/extension/MIT-LICENSE +21 -0
  35. data/lib/archangel/command/templates/extension/README.md +79 -0
  36. data/lib/archangel/command/templates/extension/Rakefile +25 -0
  37. data/lib/archangel/command/templates/extension/app/assets/javascripts/archangel/auth/%extension_name%.js.tt +3 -0
  38. data/lib/archangel/command/templates/extension/app/assets/javascripts/archangel/backend/%extension_name%.js.tt +3 -0
  39. data/lib/archangel/command/templates/extension/app/assets/javascripts/archangel/frontend/%extension_name%.js.tt +3 -0
  40. data/lib/archangel/command/templates/extension/app/assets/stylesheets/archangel/auth/%extension_name%.css.tt +5 -0
  41. data/lib/archangel/command/templates/extension/app/assets/stylesheets/archangel/backend/%extension_name%.css.tt +5 -0
  42. data/lib/archangel/command/templates/extension/app/assets/stylesheets/archangel/frontend/%extension_name%.css.tt +5 -0
  43. data/lib/archangel/command/templates/extension/bin/rails.tt +11 -0
  44. data/lib/archangel/command/templates/extension/config/locales/en.yml.tt +4 -0
  45. data/lib/archangel/command/templates/extension/config/routes.rb +5 -0
  46. data/lib/archangel/command/templates/extension/extension.gemspec +25 -0
  47. data/lib/archangel/command/templates/extension/lib/%extension_name%/engine.rb.tt +29 -0
  48. data/lib/archangel/command/templates/extension/lib/%extension_name%/factories.rb.tt +13 -0
  49. data/lib/archangel/command/templates/extension/lib/%extension_name%/version.rb.tt +5 -0
  50. data/lib/archangel/command/templates/extension/lib/%extension_name%.rb.tt +9 -0
  51. data/lib/archangel/command/templates/extension/lib/generators/%extension_name%/install/install_generator.rb.tt +42 -0
  52. data/lib/archangel/command/templates/extension/spec/rails_helper.rb.tt +41 -0
  53. data/lib/archangel/command/templates/extension/spec/spec_helper.rb +22 -0
  54. data/lib/archangel/command/templates/extension/spec/support/.keep +0 -0
  55. data/lib/archangel/liquid/drop.rb +21 -11
  56. data/lib/archangel/liquid_view.rb +7 -31
  57. data/lib/archangel/version.rb +1 -1
  58. data/lib/generators/archangel/dummy/dummy_generator.rb +1 -0
  59. data/package.json +8 -3
  60. data/spec/lib/archangel/command/extension_spec.rb +100 -0
  61. data/spec/lib/archangel/liquid/drop_spec.rb +10 -0
  62. data/spec/lib/archangel/liquid/drops/page_drop_spec.rb +77 -0
  63. data/spec/lib/archangel/liquid/drops/site_drop_spec.rb +78 -0
  64. data/spec/lib/archangel/liquid/filters/link_to_filter_spec.rb +0 -4
  65. data/spec/lib/archangel/liquid/tags/collection_tag_spec.rb +0 -1
  66. data/spec/lib/archangel/liquid/tags/collectionfor_tag_spec.rb +0 -1
  67. data/spec/lib/archangel/liquid/tags/theme_javascript_tag_spec.rb +4 -3
  68. data/spec/lib/archangel/liquid/tags/theme_stylesheet_tag_spec.rb +4 -3
  69. metadata +64 -6
  70. data/docs/ExtensionDevelopers.md +0 -3
  71. data/docs/ExtensionIdeas.md +0 -132
  72. data/docs/ThemeDevelopers.md +0 -3
@@ -0,0 +1,27 @@
1
+ # Extension Developers
2
+
3
+ Extensions are meant to extend the functionality of Archangel. Documentation for theme development is [also available](https://github.com/archangel/archangel/blob/master/docs/Theme/Developers.md).
4
+
5
+ Feeling bored? Looking for ideas? Take a look at possible [ideas for extensions](https://github.com/archangel/archangel/blob/master/docs/Extension/Ideas.md).
6
+
7
+ ## Generate an extension
8
+
9
+ Generate an Archangel extension with `archangel extension NAME`
10
+
11
+ To generate an extension at `PWD` with the name `archangel_foo`
12
+
13
+ ```
14
+ $ archangel extension foo
15
+ ```
16
+
17
+ ## Best Practices
18
+
19
+ The following are best practice guides for building and managing Archangel extensions.
20
+
21
+ * [Controllers](https://github.com/archangel/archangel/blob/master/docs/Extension/Controllers.md)
22
+ * [Helpers](https://github.com/archangel/archangel/blob/master/docs/Extension/Helpers.md)
23
+ * [Models](https://github.com/archangel/archangel/blob/master/docs/Extension/Models.md)
24
+ * [Policies](https://github.com/archangel/archangel/blob/master/docs/Extension/Policies.md)
25
+ * [Routes](https://github.com/archangel/archangel/blob/master/docs/Extension/Routes.md)
26
+ * [Views](https://github.com/archangel/archangel/blob/master/docs/Extension/Views.md)
27
+ * [Uploaders](https://github.com/archangel/archangel/blob/master/docs/Extension/Uploaders.md)
@@ -0,0 +1,17 @@
1
+ # Helpers
2
+
3
+ Helpers are separated by `frontend`, `backend` or `auth` namespaces. Each section should be separated for functional clarity.
4
+
5
+ ## Backend Helpers
6
+
7
+ For Backend helpers, create your helper at `app/helpers/archangel/backend/foos_helper.rb` add the following
8
+
9
+ ```
10
+ module Archangel
11
+ module Backend
12
+ module FoosHelper
13
+ ...
14
+ end
15
+ end
16
+ end
17
+ ```
@@ -0,0 +1,131 @@
1
+ # Extension Ideas
2
+
3
+ Feeling bored? Looking for ideas?
4
+
5
+ _ \* In no particular order_
6
+
7
+ * Preview
8
+ * Page preview
9
+ * Angular
10
+ * Helper extension to include for themes built with Angular
11
+ * React
12
+ * Helper extension to include for themes built with React
13
+ * Vue
14
+ * Helper extension to include for themes built with Vue
15
+ * Aurelia
16
+ * Helper extension to include for themes built with Aurelia
17
+ * Search
18
+ * Elasticsearch
19
+ * Ransack
20
+ * Comments
21
+ * Facebook
22
+ * Disqus
23
+ * Database
24
+ * Auto approve
25
+ * Manual approve
26
+ * Migrate
27
+ * Export for Wordpress
28
+ * Export for Refinary
29
+ * Import from Wordpress
30
+ * Import from Refinary
31
+ * Forms
32
+ * WYSIWYG for custom form builder
33
+ * Honeypot
34
+ * Time
35
+ * Captcha
36
+ * Multi-tenant
37
+ * Types
38
+ * Domain
39
+ * Subdomain
40
+ * Schema switching
41
+ * Manage domains
42
+ * CLI to create schemas
43
+ * Background worker to create schemas
44
+ * Notifications
45
+ * json_ld
46
+ * API
47
+ * CORS
48
+ * Rate limits
49
+ * GraphQL
50
+ * Social Like
51
+ * Types
52
+ * Facebook
53
+ * Database
54
+ * Toggle enabled/disabled by default
55
+ * Toggle enabled/disabled per page
56
+ * Social Share
57
+ * Toggle enabled/disabled by default
58
+ * Toggle enabled/disabled per page
59
+ * robots.txt
60
+ * RSS feed
61
+ * Sitemap
62
+ * Columns
63
+ * changefreq
64
+ * always
65
+ * hourly
66
+ * daily
67
+ * weekly
68
+ * monthly
69
+ * yearly
70
+ * never
71
+ * priority
72
+ * 0.0..1.0
73
+ * sitemap.xml
74
+ * sitemap.xml.gz
75
+ * Update robots.txt
76
+ * Rebuild on Page save (background worker)
77
+ * Notify search engines (background worker)
78
+ * 2FA
79
+ * Opt-in
80
+ * Force all
81
+ * Oauth
82
+ * Splash Page
83
+ * Types
84
+ * Overlay
85
+ * Redirect
86
+ * Start At
87
+ * End At
88
+ * Remember with Javascript cookie
89
+ * Cookie lifetime
90
+ * Pixel trackers
91
+ * Location
92
+ * Head
93
+ * Body (top)
94
+ * Body (bottom)
95
+ * Statistics/Analytics
96
+ * Google Analytics
97
+ * Graphs/Charts
98
+ * History/Versions
99
+ * Roll back to previous versions
100
+ * Activity
101
+ * Log activity in backend
102
+ * Icons
103
+ * favicon
104
+ * Apple
105
+ * Android
106
+ * Windows
107
+ * Stylesheet
108
+ * Site Stylesheet
109
+ * Per page Stylesheet
110
+ * Javascript
111
+ * Site Javascript
112
+ * Per page Javascript
113
+ * Community
114
+ * Allow registering
115
+ * User listing
116
+ * User profile
117
+ * User search/filter
118
+ * Friends/Followers
119
+ * Events
120
+ * Calendar
121
+ * Reoccurring events
122
+ * Reminders
123
+ * sms
124
+ * email
125
+ * Google Calendar integration
126
+ * iCloud Calendar integration
127
+ * Static
128
+ * Generate static frontend site
129
+ * Help
130
+ * Help and instructions for each section in Backend
131
+ * Monetize YouTube videos
@@ -0,0 +1,32 @@
1
+ # Models
2
+
3
+ Models are not separated by `frontend`, `backend` or `auth` and therefore do not need to be namespaced.
4
+
5
+ Create your model at `app/models/archangel/foo.rb` add the following.
6
+
7
+ ```
8
+ module Archangel
9
+ class Foo < ApplicationRecord
10
+ before_validation :parameterize_slug
11
+
12
+ validates :bar, presence: true
13
+ validates :slug, presence: true, uniqueness: true
14
+
15
+ belongs_to :site
16
+
17
+ protected
18
+
19
+ def parameterize_slug
20
+ self.slug = slug.to_s.downcase.parameterize
21
+ end
22
+ end
23
+ end
24
+ ```
25
+
26
+ To change the `id` for constructing a URL to this object you can override `#to_param` in your model to make `foo_path` construct a path using the record `slug` instead of the `id`. See [`#to_param`](https://apidock.com/rails/ActiveRecord/Base/to_param) for further explanation.
27
+
28
+ ```
29
+ def to_param
30
+ slug
31
+ end
32
+ ```
@@ -0,0 +1,42 @@
1
+ # Policies
2
+
3
+ Policies are not separated by `frontend`, `backend` or `auth` and therefore do not need to be namespaced. [Pundit](https://github.com/varvet/pundit) is used for authorization.
4
+
5
+ Create your policy at `app/policies/archangel/foo.rb` add the following.
6
+
7
+ ```
8
+ module Archangel
9
+ class FooPolicy < ApplicationPolicy
10
+ end
11
+ end
12
+ ```
13
+
14
+ Extending `ApplicationPolicy` will set default authorization throughout the controller. The only reason you would need anything more than this is if you require more complex authorization policies.
15
+
16
+ Custom routes that are not RESTful need to added.
17
+
18
+ ```
19
+ module Archangel
20
+ class FooPolicy < ApplicationPolicy
21
+ def custom?
22
+ scope.where(id: record.id).exists?
23
+ end
24
+ end
25
+ end
26
+ ```
27
+
28
+ To specifically check if the User is an `admin`, `ApplicationPolicy` has a method to do this.
29
+
30
+ ```
31
+ module Archangel
32
+ class FooPolicy < ApplicationPolicy
33
+ def destroy?
34
+ admin_user?
35
+ end
36
+
37
+ def custom?
38
+ admin_user?
39
+ end
40
+ end
41
+ end
42
+ ```
@@ -0,0 +1,26 @@
1
+ # Routes
2
+
3
+ Routes are separated by `frontend`, `backend` or `auth` namespaces. Each section should be separated for functional clarity.
4
+
5
+ ## Backend Routes
6
+
7
+ For Backend routes, open `config/routes.rb` and add the following
8
+
9
+ ```
10
+ Archangel::Engine.routes.draw do
11
+ namespace :backend, path: Archangel.config.backend_path do
12
+ # GET /backend/foos
13
+ # POST /backend/foos
14
+ # GET /backend/foos/new
15
+ # GET /backend/foos/[ID]/edit
16
+ # GET /backend/foos/[ID]
17
+ # PATCH /backend/foos/[ID]
18
+ # PUT /backend/foos/[ID]
19
+ # DELETE /backend/foos/[ID]
20
+ resources :foos do
21
+ # GET /backend/foos/custom
22
+ get :custom
23
+ end
24
+ end
25
+ end
26
+ ```
@@ -0,0 +1,3 @@
1
+ # Uploaders
2
+
3
+ TODO
@@ -0,0 +1,3 @@
1
+ # Views
2
+
3
+ TODO
data/docs/Release.md CHANGED
@@ -1,6 +1,12 @@
1
1
  # Releasing Gem
2
2
 
3
- 1. Bump the gem version in `lib/archangel/version.rb`
3
+ 1. Clean up generated files
4
+
5
+ ```
6
+ $ bundle exec rake clean
7
+ ```
8
+
9
+ 2. Bump the gem version in `lib/archangel/version.rb`
4
10
 
5
11
  Follow the rules of [Semantic Versioning](https://semver.org/). For example:
6
12
 
@@ -16,10 +22,10 @@
16
22
 
17
23
  This will create a new .gem file in `pkg/`. Fix any errors or warnings that come up.
18
24
 
19
- 3. Create the gem, tag it in Github and release to Rubygems
25
+ 4. Create the gem, tag it in Github and release to Rubygems
20
26
 
21
27
  ```
22
28
  $ bundle exec rake release
23
29
  ```
24
30
 
25
- 4. Profit!
31
+ 5. Profit!
@@ -0,0 +1,7 @@
1
+ # Theme Developers
2
+
3
+ Themes are meant to change the design of Archangel. Documentation for extension development is [also available](https://github.com/archangel/archangel/blob/master/docs/Extension/Developers.md).
4
+
5
+ ## Generate a theme
6
+
7
+ TODO
@@ -0,0 +1,97 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "thor"
4
+
5
+ module Archangel
6
+ ##
7
+ # Command line
8
+ #
9
+ module Command
10
+ ##
11
+ # Generate Archangel extension
12
+ #
13
+ class Extension < Thor::Group
14
+ include Thor::Actions
15
+
16
+ source_root File.expand_path("templates/extension", __dir__)
17
+
18
+ desc "Build an Archangel extension"
19
+ argument :extension_name, type: :string,
20
+ desc: "Extension name",
21
+ default: "sample"
22
+
23
+ ##
24
+ # Generate extension
25
+ #
26
+ # Usage
27
+ # archangel extension [EXTENSION_NAME]
28
+ # bundle exec bin/archangel extension [EXTENSION_NAME]
29
+ #
30
+ def generate
31
+ prefix_name
32
+
33
+ empty_directory extension_name
34
+
35
+ copy_directories
36
+ copy_files
37
+ end
38
+
39
+ ##
40
+ # Banner
41
+ #
42
+ # Say something nice
43
+ #
44
+ def banner
45
+ puts %(
46
+
47
+ ******************************************************************
48
+
49
+ Your extension has been generated with a gemspec dependency on
50
+ Archangel v#{archangel_version}
51
+
52
+ You look lovely today by the way.
53
+
54
+ ******************************************************************
55
+
56
+ )
57
+ end
58
+
59
+ no_tasks do
60
+ def class_name
61
+ Thor::Util.camel_case extension_name
62
+ end
63
+
64
+ def archangel_version
65
+ Archangel.version[/(.*)\./, 1]
66
+ end
67
+ end
68
+
69
+ no_tasks do
70
+ def prefix_name
71
+ ext_name = extension_name.downcase
72
+ ext_name = "archangel_#{ext_name}" unless ext_name =~ /^archangel_/
73
+
74
+ @extension_name = Thor::Util.snake_case(ext_name)
75
+ end
76
+
77
+ def copy_directories
78
+ %w[
79
+ app bin config lib spec
80
+ ].each { |dir| directory(dir, "#{extension_name}/#{dir}") }
81
+
82
+ chmod("#{extension_name}/bin/rails", 0o755)
83
+ end
84
+
85
+ def copy_files
86
+ %w[
87
+ .editorconfig .gitignore .rspec .rubocop.yml Gemfile MIT-LICENSE
88
+ Rakefile README.md
89
+ ].each { |tpl| template(tpl, "#{extension_name}/#{tpl}") }
90
+
91
+ template("extension.gemspec",
92
+ "#{extension_name}/#{extension_name}.gemspec")
93
+ end
94
+ end
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,19 @@
1
+ # EditorConfig is awesome: http://EditorConfig.org
2
+
3
+ root = true
4
+
5
+ [*]
6
+ charset = utf-8
7
+ end_of_line = lf
8
+ insert_final_newline = true
9
+ indent_style = space
10
+ indent_size = 2
11
+
12
+ [*.rb]
13
+ max_line_length = 80
14
+
15
+ [*.{css,erb,html,js,scss,ts}]
16
+ max_line_length = 120
17
+
18
+ [*.{md,json,yml}]
19
+ insert_final_newline = false
@@ -0,0 +1,11 @@
1
+ coverage/
2
+ pkg/
3
+ spec/dummy/
4
+ .DS_Store
5
+ .Trashes
6
+ Desktop.ini
7
+ Gemfile.lock
8
+ log/*.log
9
+ rspec.log
10
+ spec/examples.txt
11
+ Thumbs.db
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
@@ -0,0 +1,32 @@
1
+ AllCops:
2
+ Include:
3
+ - '**/Gemfile'
4
+ - '**/Rakefile'
5
+ Exclude:
6
+ - 'bin/**/*'
7
+ - 'db/migrate/**/*'
8
+ - 'spec/dummy/**/*'
9
+
10
+ Gemspec/RequiredRubyVersion:
11
+ Enabled: false
12
+
13
+ Metrics/BlockLength:
14
+ Exclude:
15
+ - '**/*.gemspec'
16
+ - 'spec/**/*.rb'
17
+
18
+ Metrics/ModuleLength:
19
+ Exclude:
20
+ - 'spec/**/*.rb'
21
+
22
+ Style/Documentation:
23
+ Enabled: false
24
+
25
+ Style/FrozenStringLiteralComment:
26
+ EnforcedStyle: always
27
+
28
+ Style/StringLiterals:
29
+ EnforcedStyle: double_quotes
30
+
31
+ Style/StringLiteralsInInterpolation:
32
+ EnforcedStyle: double_quotes
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gemspec
6
+
7
+ group :development do
8
+ gem "rubocop", "~> 0.52", require: false
9
+ end
10
+
11
+ group :development, :test do
12
+ gem "pry-byebug", "~> 3.5"
13
+ gem "sqlite3", ">= 1.3", platforms: %i[ruby mswin mswin64 mingw x64_mingw]
14
+ gem "thor", "~> 0.19"
15
+ end
16
+
17
+ group :test do
18
+ gem "capybara", "~> 2.17"
19
+ gem "coveralls", "~> 0.8"
20
+ gem "database_cleaner", "~> 1.6"
21
+ gem "factory_bot_rails", "~> 4.8"
22
+ gem "launchy", "~> 2.4"
23
+ gem "poltergeist", "~> 1.17"
24
+ gem "rails-controller-testing", "~> 1.0"
25
+ gem "rspec-rails", "~> 3.7"
26
+ gem "shoulda-callback-matchers", "~> 1.1"
27
+ gem "shoulda-matchers", "~> 3.1"
28
+ gem "simplecov", "~> 0.14"
29
+ end
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) <%= Time.now.year %> YOUR NAME
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,79 @@
1
+ # <%= class_name %>
2
+
3
+ Introduction goes here.
4
+
5
+ ## Installation
6
+
7
+ Add to your application's Gemfile
8
+
9
+ ```
10
+ gem "<%= extension_name %>", github: "USERNAME/<%= extension_name %>"
11
+ ```
12
+
13
+ Run the bundle command
14
+
15
+ ```
16
+ $ bundle install
17
+ ```
18
+
19
+ Run the install generator
20
+
21
+ ```
22
+ $ bundle exec rails g <%= extension_name %>:install
23
+ ```
24
+
25
+ If your server was running, restart it to find the assets properly.
26
+
27
+ ## Updating
28
+
29
+ Subsequent updates can be done by bumping the version in your Gemfile then adding the new migrations
30
+
31
+ ```
32
+ $ bundle exec rails <%= extension_name %>:install:migrations
33
+ ```
34
+
35
+ Run migrations
36
+
37
+ ```
38
+ $ bundle exec rails db:migrate
39
+ ```
40
+
41
+ ## Testing
42
+
43
+ First, generate a dummy application. You will be required to generate a dummy application before running tests.
44
+
45
+ ```
46
+ $ bundle exec rake dummy_app
47
+ ```
48
+
49
+ Run tests
50
+
51
+ ```
52
+ $ bundle exec rake
53
+ ```
54
+
55
+ or
56
+
57
+ ```
58
+ $ bundle exec rake spec
59
+ ```
60
+
61
+ or
62
+
63
+ ```
64
+ $ bundle exec rspec spec
65
+ ```
66
+
67
+ When testing your applications integration with this extension you may use it's factories. Simply add this require statement to your spec_helper:
68
+
69
+ ```
70
+ require "<%= extension_name %>/factories"
71
+ ```
72
+
73
+ ## Contributing
74
+
75
+ 1. Fork it ( https://github.com/USERNAME/<%= extension_name %>/fork )
76
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
77
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
78
+ 4. Push to the branch (`git push origin my-new-feature`)
79
+ 5. Create a new Pull Request
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ begin
4
+ require "bundler/setup"
5
+ rescue LoadError
6
+ puts "You must `gem install bundler` and `bundle install` to run rake tasks"
7
+ end
8
+
9
+ Bundler::GemHelper.install_tasks
10
+
11
+ require "bundler/gem_tasks"
12
+ require "rspec/core/rake_task"
13
+
14
+ require "archangel/testing_support/rake/dummy_rake"
15
+
16
+ RSpec::Core::RakeTask.new
17
+
18
+ task default: :spec
19
+
20
+ desc "Generates a dummy app for testing"
21
+ task :dummy_app do
22
+ ENV["LIB_NAME"] = "<%= extension_name %>"
23
+
24
+ Rake::Task["dummy:generate"].invoke
25
+ end
@@ -0,0 +1,3 @@
1
+ // <%= class_name %> auth scripts for Archangel
2
+ //
3
+ //= require_self
@@ -0,0 +1,3 @@
1
+ // <%= class_name %> backend scripts for Archangel
2
+ //
3
+ //= require_self
@@ -0,0 +1,3 @@
1
+ // <%= class_name %> frontend scripts for Archangel
2
+ //
3
+ //= require_self
@@ -0,0 +1,5 @@
1
+ /*
2
+ * <%= class_name %> auth styles for Archangel
3
+ *
4
+ *= require_self
5
+ */
@@ -0,0 +1,5 @@
1
+ /*
2
+ * <%= class_name %> backend styles for Archangel
3
+ *
4
+ *= require_self
5
+ */
@@ -0,0 +1,5 @@
1
+ /*
2
+ * <%= class_name %> frontend styles for Archangel
3
+ *
4
+ *= require_self
5
+ */