rails_readonly_injector 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +5 -0
- data/Appraisals +7 -0
- data/CHANGELOG.md +2 -0
- data/Gemfile.lock +110 -2
- data/README.md +17 -10
- data/cucumber-rails-1.6.0.pre.gem +0 -0
- data/gemfiles/rails_5_2.gemfile +10 -0
- data/lib/rails_readonly_injector/version.rb +1 -1
- data/rails_readonly_injector.gemspec +1 -1
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dee81bdb9e36457740b1f0bf42b0a426b71c529b
|
4
|
+
data.tar.gz: e1be2bdd0040986a650f2937173ef155ab03e1cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ba266967fd09dcbda610866e85757a92181232ab4c396c635fa0e3c697cb012c6a3219f00cd4f607d9a4e5b5967ae985306c7974fa1a68d400ab60127e938fdc
|
7
|
+
data.tar.gz: 8e764d1c867cb779f52e61434e2ecf7f392d9967efaf5abf6d048c11b94448f913240eaf303d2659bc876558a3728bd512dc8b170f1350078cb0edf3dca2234b
|
data/.travis.yml
CHANGED
@@ -13,6 +13,8 @@ branches:
|
|
13
13
|
only:
|
14
14
|
- master
|
15
15
|
|
16
|
+
before_install:
|
17
|
+
- /bin/bash -c '[[ $BUNDLE_GEMFILE = *"rails_5_2"* ]] && { echo "Installing Cucumber-rails v1.6.0.pre..."; gem install cucumber-rails-1.6.0.pre.gem; }' || echo "Desired rails version is < 5.2. Skipping Cucumber 1.6.0.pre installation...";
|
16
18
|
|
17
19
|
before_script:
|
18
20
|
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
@@ -29,6 +31,7 @@ gemfile:
|
|
29
31
|
- gemfiles/rails_4_2.gemfile
|
30
32
|
- gemfiles/rails_5_0.gemfile
|
31
33
|
- gemfiles/rails_5_1.gemfile
|
34
|
+
- gemfiles/rails_5_2.gemfile
|
32
35
|
|
33
36
|
matrix:
|
34
37
|
fast_finish: true
|
@@ -41,6 +44,8 @@ matrix:
|
|
41
44
|
gemfile: gemfiles/rails_5_0.gemfile
|
42
45
|
- rvm: 2.1.3
|
43
46
|
gemfile: gemfiles/rails_5_1.gemfile
|
47
|
+
- rvm: 2.1.3
|
48
|
+
gemfile: gemfiles/rails_5_2.gemfile
|
44
49
|
- rvm: 2.2.7
|
45
50
|
gemfile: gemfiles/rails_3.gemfile
|
46
51
|
- rvm: 2.3.6
|
data/Appraisals
CHANGED
@@ -43,4 +43,11 @@ appraise 'rails_5_1' do
|
|
43
43
|
gem 'cucumber-rails', '~> 1.5.0', group: :test, require: false
|
44
44
|
gem 'rspec-rails', '~> 3.7.2', group: :test
|
45
45
|
gem 'database_cleaner', '~> 1.0.1'
|
46
|
+
end
|
47
|
+
|
48
|
+
appraise 'rails_5_2' do
|
49
|
+
gem 'rails', '~> 5.2.0'
|
50
|
+
gem 'cucumber-rails', '~> 1.6.0.pre', group: :test, require: false
|
51
|
+
gem 'rspec-rails', '~> 3.7.2', group: :test
|
52
|
+
gem 'database_cleaner', '~> 1.0.1'
|
46
53
|
end
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,26 +1,134 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rails_readonly_injector (
|
4
|
+
rails_readonly_injector (1.0.0)
|
5
|
+
rails (>= 3.0, <= 5.2)
|
5
6
|
|
6
7
|
GEM
|
7
8
|
remote: https://rubygems.org/
|
8
9
|
specs:
|
10
|
+
actioncable (5.2.0)
|
11
|
+
actionpack (= 5.2.0)
|
12
|
+
nio4r (~> 2.0)
|
13
|
+
websocket-driver (>= 0.6.1)
|
14
|
+
actionmailer (5.2.0)
|
15
|
+
actionpack (= 5.2.0)
|
16
|
+
actionview (= 5.2.0)
|
17
|
+
activejob (= 5.2.0)
|
18
|
+
mail (~> 2.5, >= 2.5.4)
|
19
|
+
rails-dom-testing (~> 2.0)
|
20
|
+
actionpack (5.2.0)
|
21
|
+
actionview (= 5.2.0)
|
22
|
+
activesupport (= 5.2.0)
|
23
|
+
rack (~> 2.0)
|
24
|
+
rack-test (>= 0.6.3)
|
25
|
+
rails-dom-testing (~> 2.0)
|
26
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
27
|
+
actionview (5.2.0)
|
28
|
+
activesupport (= 5.2.0)
|
29
|
+
builder (~> 3.1)
|
30
|
+
erubi (~> 1.4)
|
31
|
+
rails-dom-testing (~> 2.0)
|
32
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
33
|
+
activejob (5.2.0)
|
34
|
+
activesupport (= 5.2.0)
|
35
|
+
globalid (>= 0.3.6)
|
36
|
+
activemodel (5.2.0)
|
37
|
+
activesupport (= 5.2.0)
|
38
|
+
activerecord (5.2.0)
|
39
|
+
activemodel (= 5.2.0)
|
40
|
+
activesupport (= 5.2.0)
|
41
|
+
arel (>= 9.0)
|
42
|
+
activestorage (5.2.0)
|
43
|
+
actionpack (= 5.2.0)
|
44
|
+
activerecord (= 5.2.0)
|
45
|
+
marcel (~> 0.3.1)
|
46
|
+
activesupport (5.2.0)
|
47
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
48
|
+
i18n (>= 0.7, < 2)
|
49
|
+
minitest (~> 5.1)
|
50
|
+
tzinfo (~> 1.1)
|
9
51
|
appraisal (2.2.0)
|
10
52
|
bundler
|
11
53
|
rake
|
12
54
|
thor (>= 0.14.0)
|
55
|
+
arel (9.0.0)
|
56
|
+
builder (3.2.3)
|
57
|
+
concurrent-ruby (1.0.5)
|
58
|
+
crass (1.0.4)
|
59
|
+
erubi (1.7.1)
|
60
|
+
globalid (0.4.1)
|
61
|
+
activesupport (>= 4.2.0)
|
62
|
+
i18n (1.0.1)
|
63
|
+
concurrent-ruby (~> 1.0)
|
64
|
+
loofah (2.2.2)
|
65
|
+
crass (~> 1.0.2)
|
66
|
+
nokogiri (>= 1.5.9)
|
67
|
+
mail (2.7.0)
|
68
|
+
mini_mime (>= 0.1.1)
|
69
|
+
marcel (0.3.2)
|
70
|
+
mimemagic (~> 0.3.2)
|
71
|
+
method_source (0.9.0)
|
72
|
+
mimemagic (0.3.2)
|
73
|
+
mini_mime (1.0.0)
|
74
|
+
mini_portile2 (2.3.0)
|
75
|
+
minitest (5.11.3)
|
76
|
+
nio4r (2.3.0)
|
77
|
+
nokogiri (1.8.2)
|
78
|
+
mini_portile2 (~> 2.3.0)
|
79
|
+
rack (2.0.4)
|
80
|
+
rack-test (1.0.0)
|
81
|
+
rack (>= 1.0, < 3)
|
82
|
+
rails (5.2.0)
|
83
|
+
actioncable (= 5.2.0)
|
84
|
+
actionmailer (= 5.2.0)
|
85
|
+
actionpack (= 5.2.0)
|
86
|
+
actionview (= 5.2.0)
|
87
|
+
activejob (= 5.2.0)
|
88
|
+
activemodel (= 5.2.0)
|
89
|
+
activerecord (= 5.2.0)
|
90
|
+
activestorage (= 5.2.0)
|
91
|
+
activesupport (= 5.2.0)
|
92
|
+
bundler (>= 1.3.0)
|
93
|
+
railties (= 5.2.0)
|
94
|
+
sprockets-rails (>= 2.0.0)
|
95
|
+
rails-dom-testing (2.0.3)
|
96
|
+
activesupport (>= 4.2.0)
|
97
|
+
nokogiri (>= 1.6)
|
98
|
+
rails-html-sanitizer (1.0.4)
|
99
|
+
loofah (~> 2.2, >= 2.2.2)
|
100
|
+
railties (5.2.0)
|
101
|
+
actionpack (= 5.2.0)
|
102
|
+
activesupport (= 5.2.0)
|
103
|
+
method_source
|
104
|
+
rake (>= 0.8.7)
|
105
|
+
thor (>= 0.18.1, < 2.0)
|
13
106
|
rake (10.5.0)
|
107
|
+
sprockets (3.7.1)
|
108
|
+
concurrent-ruby (~> 1.0)
|
109
|
+
rack (> 1, < 3)
|
110
|
+
sprockets-rails (3.2.1)
|
111
|
+
actionpack (>= 4.0)
|
112
|
+
activesupport (>= 4.0)
|
113
|
+
sprockets (>= 3.0.0)
|
14
114
|
thor (0.20.0)
|
115
|
+
thread_safe (0.3.6)
|
116
|
+
tzinfo (1.2.5)
|
117
|
+
thread_safe (~> 0.1)
|
118
|
+
websocket-driver (0.7.0)
|
119
|
+
websocket-extensions (>= 0.1.0)
|
120
|
+
websocket-extensions (0.1.3)
|
121
|
+
yard (0.9.12)
|
15
122
|
|
16
123
|
PLATFORMS
|
17
124
|
ruby
|
18
125
|
|
19
126
|
DEPENDENCIES
|
20
|
-
appraisal (~> 2.2
|
127
|
+
appraisal (~> 2.2)
|
21
128
|
bundler (~> 1.16)
|
22
129
|
rails_readonly_injector!
|
23
130
|
rake (~> 10.0)
|
131
|
+
yard (~> 0.9.12)
|
24
132
|
|
25
133
|
BUNDLED WITH
|
26
134
|
1.16.1
|
data/README.md
CHANGED
@@ -25,14 +25,16 @@ Or install it yourself as:
|
|
25
25
|
|
26
26
|
## Usage
|
27
27
|
|
28
|
-
In order to switch a complete site into read-only mode, you will first need to set the action to occur when an attempt to commit changes to the database is made, from within a controller.
|
28
|
+
In order to switch a complete site into read-only mode, you will first need to set the action to occur when an attempt to commit changes to the database is made, from within a controller. This action will be executed from within the context of the referring controller.
|
29
|
+
|
30
|
+
Usually, this won't need to change once the application has booted, so I recommend defining it within an initializer, as follows:
|
29
31
|
|
30
32
|
```
|
31
33
|
# config/initializers/rails_readonly_injector.rb
|
32
34
|
RailsReadonlyInjector.config do |config|
|
33
35
|
config.controller_rescue_action = lambda do |context|
|
34
36
|
# Define actions to be performed if changes to a read-only model are attempted to be committed to the database.
|
35
|
-
# This lambda expression is evaluated from within the
|
37
|
+
# This lambda expression is evaluated from within the context of the referring controller.
|
36
38
|
|
37
39
|
# You may want to set a redirect, or flash an error message, or something, here.
|
38
40
|
# e.g.
|
@@ -42,13 +44,19 @@ RailsReadonlyInjector.config do |config|
|
|
42
44
|
end
|
43
45
|
```
|
44
46
|
|
45
|
-
When you want to switch a site into read-only mode, you can then simply
|
47
|
+
When you want to switch a site into read-only mode, you can then simply
|
48
|
+
* set `RailsReadOnlyInjector.config.read_only` to true, and then
|
49
|
+
* call `RailsReadonlyInjector.reload!` to (re-)load the configuration.
|
50
|
+
|
51
|
+
Alternatively, you can also set `read_only` from within the configuration block inside the initializer.
|
46
52
|
|
47
53
|
If you want to reset the configuration to the defaults, you can simply call `RailsReadonlyInjector.reset_configuration!` from anywhere in your application.
|
48
54
|
|
49
55
|
If you want to check whether read-only mode is currently enabled, you can use `RailsReadonlyInjector.in_read_only_mode?`.
|
50
56
|
|
51
57
|
## Configuration Options
|
58
|
+
The following configuration options can be set through `RailsReadonlyInjector.config`:
|
59
|
+
|
52
60
|
- `read_only` => Whether the site should be in read-only mode. (Default: false)
|
53
61
|
- `classes_to_exclude` => An array of classes that should be _exempt_ from read-only mode. (Default: `[]`)
|
54
62
|
- `classes_to_include` => An array of classes that should be set to read-only mode. (Defaults to `ActiveRecord::Base.descendants` on Rails 3-4, and `ApplicationRecord.descendants` on Rails 5.0+)
|
@@ -58,16 +66,15 @@ If you want to check whether read-only mode is currently enabled, you can use `R
|
|
58
66
|
|
59
67
|
After checking out the repo, run `bundle install` to install the dependencies.
|
60
68
|
|
61
|
-
RSpec specs and Cucumber features are stored in `rspec_specs` and `cucumber_features`, respectively. When `bundle exec rake` is run against an appraisal, the contents of these folders are copied to the necessary folders under the temporary rails application that
|
62
|
-
|
63
|
-
To run tests for a specific version of Rails, simply run `bundle exec appraisal {APPRAISAL} bundle exec rake`, where `{APPRAISAL}` is one of the appraisals found under `Appraisals`.
|
69
|
+
RSpec specs and Cucumber features are stored in `rspec_specs` and `cucumber_features`, respectively. When `bundle exec rake` is run against an appraisal, the contents of these folders are copied to the necessary folders under the temporary rails application that `bundle exec rake` generates into `tmp/rails_app`.
|
64
70
|
|
65
|
-
|
71
|
+
To run tests for a specific version of Rails, simply run `bundle exec appraisal {APPRAISAL} bundle exec rake`, where `{APPRAISAL}` is one of the appraisals found under `Appraisals`. e.g. `bundle exec appraisal rails_4_1 bundle exec rake`
|
66
72
|
|
67
|
-
|
68
|
-
* `dev:run_specs` => Synchronises specs from `rspec_specs` into the temporary rails application, and runs them against the application.
|
69
|
-
* `dev:run_tests` => Runs both `dev:run_features` and `dev:run_specs`.
|
73
|
+
If you don't want to re-build the temporary application each time you run tests, you can execute the following rake tasks against an appraisal:
|
70
74
|
|
75
|
+
* `dev:run_features` => Synchronises features from `cucumber_features` into the temporary rails application, and runs cucumber against the temporary application.
|
76
|
+
* `dev:run_specs` => Synchronises specs from `rspec_specs` into the temporary rails application, and runs rspec against the temporary application.
|
77
|
+
* `dev:run_tests` => Runs both `dev:run_features` and `dev:run_specs`, and ret on failure.
|
71
78
|
|
72
79
|
## Contributing
|
73
80
|
|
Binary file
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "https://rubygems.org"
|
4
|
+
|
5
|
+
gem "rails", "~> 5.2.0"
|
6
|
+
gem "cucumber-rails", "~> 1.6.0.pre", group: :test, require: false
|
7
|
+
gem "rspec-rails", "~> 3.7.2", group: :test
|
8
|
+
gem "database_cleaner", "~> 1.0.1"
|
9
|
+
|
10
|
+
gemspec path: "../"
|
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
|
|
22
22
|
|
23
23
|
spec.required_ruby_version = ">= 2.1.3"
|
24
24
|
|
25
|
-
spec.add_runtime_dependency "rails", [">= 3.0", "
|
25
|
+
spec.add_runtime_dependency "rails", [">= 3.0", "<= 5.2"]
|
26
26
|
|
27
27
|
spec.add_development_dependency "bundler", "~> 1.16"
|
28
28
|
spec.add_development_dependency "rake", "~> 10.0"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_readonly_injector
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Walter
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-04-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -17,7 +17,7 @@ dependencies:
|
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '3.0'
|
20
|
-
- - "
|
20
|
+
- - "<="
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: '5.2'
|
23
23
|
type: :runtime
|
@@ -27,7 +27,7 @@ dependencies:
|
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '3.0'
|
30
|
-
- - "
|
30
|
+
- - "<="
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '5.2'
|
33
33
|
- !ruby/object:Gem::Dependency
|
@@ -107,6 +107,7 @@ files:
|
|
107
107
|
- Rakefile
|
108
108
|
- bin/console
|
109
109
|
- bin/setup
|
110
|
+
- cucumber-rails-1.6.0.pre.gem
|
110
111
|
- cucumber_features/configuration.feature
|
111
112
|
- cucumber_features/step_definitions/.gitkeep
|
112
113
|
- cucumber_features/step_definitions/generic_steps.rb
|
@@ -124,6 +125,7 @@ files:
|
|
124
125
|
- gemfiles/rails_4_2.gemfile
|
125
126
|
- gemfiles/rails_5_0.gemfile
|
126
127
|
- gemfiles/rails_5_1.gemfile
|
128
|
+
- gemfiles/rails_5_2.gemfile
|
127
129
|
- lib/rails_readonly_injector.rb
|
128
130
|
- lib/rails_readonly_injector/configuration.rb
|
129
131
|
- lib/rails_readonly_injector/version.rb
|