initialize 0.0.2 → 1.0.0
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.
- checksums.yaml +4 -4
- data/README.md +72 -2
- data/initialize.gemspec +2 -2
- data/lib/initialize/patch.rb +10 -0
- data/lib/initialize/version.rb +1 -1
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 76d6a733de9590fbac166f9075124a940d360a3b
|
4
|
+
data.tar.gz: 56f1dac5bf848004a360a77397d32a439419dc0e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 10bb0fefc26a6f733dca5f0a4c6e56d074c36d0599539ed0ac416c62f48c456909e8ee7f4917f34358b972ff5d120bf11c5ca263cc12bd5194f4bf6864732a1b
|
7
|
+
data.tar.gz: 5b38cda7cd43d0e347b1a0bd9f89137e09840104eaeb0b81d8d81612ae01079ad0ca25b8ed2ef1840846a7c05ee60e9686bf2456c0046a6a416e32cfb5c863aa
|
data/README.md
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# initialize [](http://rubygems.org/gems/initialize)
|
2
2
|
|
3
|
-
Ruby gem.
|
3
|
+
Ruby gem to completely customize the execution order of Rails config initializers.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
7
|
-
Add this line to your application's Gemfile
|
7
|
+
Add this line to your application's `Gemfile`:
|
8
8
|
|
9
9
|
```ruby
|
10
10
|
gem 'initialize'
|
@@ -15,3 +15,73 @@ And then execute:
|
|
15
15
|
```bash
|
16
16
|
$ bundle install
|
17
17
|
```
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
For example, say you have the following Ruby on Rails application:
|
22
|
+
|
23
|
+
```
|
24
|
+
├── app
|
25
|
+
├── bin
|
26
|
+
├── config
|
27
|
+
│ ├── environments
|
28
|
+
│ ├── initializers
|
29
|
+
│ │ ├── assets.rb
|
30
|
+
│ │ ├── backtrace_silencers.rb
|
31
|
+
│ │ ├── configure_rollbar.rb
|
32
|
+
│ │ ├── filter_parameter_logging.rb
|
33
|
+
│ │ ├── inflections.rb
|
34
|
+
│ │ ├── init_hub_settings.rb
|
35
|
+
│ │ ├── load_extensions.rb
|
36
|
+
│ │ ├── mime_types.rb
|
37
|
+
│ │ ├── schedule_app_launches.rb
|
38
|
+
│ │ ├── schedule_app_upgrades.rb
|
39
|
+
│ │ ├── schedule_hub_upgrades.rb
|
40
|
+
│ │ ├── schedule_ngrok.rb
|
41
|
+
│ │ ├── schedule_task_executions.rb
|
42
|
+
│ │ ├── session_store.rb
|
43
|
+
│ │ └── wrap_parameters.rb
|
44
|
+
│ ├── application.rb
|
45
|
+
│ ├── boot.rb
|
46
|
+
│ ├── database.yml
|
47
|
+
│ ├── environment.rb
|
48
|
+
│ ├── routes.rb
|
49
|
+
│ └── secrets.yml
|
50
|
+
├── db
|
51
|
+
├── lib
|
52
|
+
├── public
|
53
|
+
├── Gemfile
|
54
|
+
├── Gemfile.lock
|
55
|
+
├── Rakefile
|
56
|
+
└── README.md
|
57
|
+
```
|
58
|
+
|
59
|
+
By default, Rails will run the files in `config/initializers` in alphabetical (filename) order, which isn't always what you want. To get around this, [the Rails team suggests prefixing initializer filenames with a numeric value](http://guides.rubyonrails.org/configuring.html#using-initializer-files), but such a solution is not the most elegant in my opinion.
|
60
|
+
|
61
|
+
With this gem, elegant control is back in your hands; you can define an `initializers` array in `config/application.rb` like so:
|
62
|
+
|
63
|
+
```ruby
|
64
|
+
class Application < Rails::Application
|
65
|
+
config.initializers = [
|
66
|
+
"assets",
|
67
|
+
"backtrace_silencers",
|
68
|
+
"filter_parameter_logging",
|
69
|
+
"inflections",
|
70
|
+
"mime_types",
|
71
|
+
"session_store",
|
72
|
+
"wrap_parameters",
|
73
|
+
"load_extensions",
|
74
|
+
"init_hub_settings",
|
75
|
+
"configure_rollbar",
|
76
|
+
"schedule_ngrok",
|
77
|
+
"schedule_hub_upgrades",
|
78
|
+
"schedule_app_upgrades",
|
79
|
+
"schedule_app_launches",
|
80
|
+
"schedule_task_executions"
|
81
|
+
]
|
82
|
+
end
|
83
|
+
```
|
84
|
+
|
85
|
+
Notice how the ordering of initializers is not alphabetical? When the application starts, initializers will run in the order that they appear in the array!
|
86
|
+
|
87
|
+
Additionally, this opens up interesting possibilities for your Rails application, like (for example) enabling/disabling specific initializers based on some condition determined at runtime.
|
data/initialize.gemspec
CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = Initialize::VERSION
|
9
9
|
spec.authors = ["Luke Horvat"]
|
10
10
|
spec.email = ["lukehorvat@gmail.com"]
|
11
|
-
spec.summary = %q{Ruby gem.}
|
12
|
-
spec.description = %q{Ruby gem.}
|
11
|
+
spec.summary = %q{Ruby gem to customize the run order of Rails initializers.}
|
12
|
+
spec.description = %q{Ruby gem to completely customize the execution order of Rails config initializers.}
|
13
13
|
spec.homepage = "https://github.com/lukehorvat/initialize"
|
14
14
|
spec.license = "MIT"
|
15
15
|
spec.files = `git ls-files -z`.split("\x0")
|
data/lib/initialize/patch.rb
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
=begin
|
2
|
+
Monkey-patch the "run" method of Rails::Initializable::Initializer so that it executes
|
3
|
+
initializers in a custom order defined by the user, not alphabetical order.
|
4
|
+
|
5
|
+
Relevant reference files from Rails core:
|
6
|
+
- https://github.com/rails/rails/blob/v4.2.5.2/railties/lib/rails/initializable.rb
|
7
|
+
- https://github.com/rails/rails/blob/v4.2.5.2/railties/lib/rails/engine.rb
|
8
|
+
- https://github.com/rails/rails/blob/v4.2.5.2/railties/lib/rails/application.rb
|
9
|
+
=end
|
10
|
+
|
1
11
|
module Initialize
|
2
12
|
module Patch
|
3
13
|
def run(*args)
|
data/lib/initialize/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: initialize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luke Horvat
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -38,7 +38,8 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.0'
|
41
|
-
description: Ruby gem
|
41
|
+
description: Ruby gem to completely customize the execution order of Rails config
|
42
|
+
initializers.
|
42
43
|
email:
|
43
44
|
- lukehorvat@gmail.com
|
44
45
|
executables: []
|
@@ -74,8 +75,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
74
75
|
version: '0'
|
75
76
|
requirements: []
|
76
77
|
rubyforge_project:
|
77
|
-
rubygems_version: 2.
|
78
|
+
rubygems_version: 2.4.5.1
|
78
79
|
signing_key:
|
79
80
|
specification_version: 4
|
80
|
-
summary: Ruby gem.
|
81
|
+
summary: Ruby gem to customize the run order of Rails initializers.
|
81
82
|
test_files: []
|