turbo-sprockets-rails3 0.2.1 → 0.2.2
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.
- data/README.md +16 -1
- data/lib/turbo-sprockets/tasks/assets.rake +39 -0
- data/lib/turbo-sprockets/version.rb +1 -1
- metadata +1 -1
data/README.md
CHANGED
@@ -8,7 +8,8 @@
|
|
8
8
|
|
9
9
|
### Disclaimer
|
10
10
|
|
11
|
-
|
11
|
+
`turbo-sprockets-rails3` can now be considered relatively stable. A lot of compatibility issues and bugs have been solved, so you shouldn't run into any problems.
|
12
|
+
However, please do test it out on your local machine before deploying to a production site, and open an issue on GitHub if you have any problems. By using this software you agree to the terms and conditions in the [MIT license](https://github.com/ndbroadbent/turbo-sprockets-rails3/blob/master/MIT-LICENSE).
|
12
13
|
|
13
14
|
## Supported Versions
|
14
15
|
|
@@ -39,6 +40,20 @@ Go on, run `rake assets:precompile` again, and it should be a whole lot faster t
|
|
39
40
|
|
40
41
|
Enjoy your lightning fast deploys!
|
41
42
|
|
43
|
+
## Removing Expired Assets
|
44
|
+
|
45
|
+
`turbo-sprockets-rails3` can now remove expired assets after each compile. It will run the `assets:clean_expired` task after `assets:precompile`, if the environment variable `CLEAN_EXPIRED_ASSETS` is set to `true`.
|
46
|
+
Any assets that are no longer referenced by `manifest.yml`, and are older than 7 days (by default) will be deleted.
|
47
|
+
|
48
|
+
You can expire old assets after precompile by running `CLEAN_EXPIRED_ASSETS=true rake assets:precompile`.
|
49
|
+
|
50
|
+
You can configure the expiry time by setting `config.assets.expire_after` in `config/environments/production.rb`.
|
51
|
+
An expiry time of 2 weeks could be configured with the following code:
|
52
|
+
|
53
|
+
```ruby
|
54
|
+
config.assets.expire_after 2.weeks
|
55
|
+
```
|
56
|
+
|
42
57
|
## Compatibility
|
43
58
|
|
44
59
|
### [asset_sync](https://github.com/rumblelabs/asset_sync)
|
@@ -102,6 +102,40 @@ namespace :assets do
|
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
105
|
+
desc "Remove old assets that aren't referenced by manifest.yml"
|
106
|
+
task :clean_expired do
|
107
|
+
invoke_or_reboot_rake_task "assets:clean_expired:all"
|
108
|
+
end
|
109
|
+
|
110
|
+
namespace :clean_expired do
|
111
|
+
task :all do
|
112
|
+
# Remove assets that aren't referenced by manifest.yml,
|
113
|
+
# and are older than `config.assets.expire_after` (default 7 days).
|
114
|
+
config = ::Rails.application.config
|
115
|
+
expire_after = config.assets.expire_after || 7.days
|
116
|
+
public_asset_path = File.join(::Rails.public_path, config.assets.prefix)
|
117
|
+
|
118
|
+
# Also handle gzipped assets
|
119
|
+
known_assets = config.assets.digests.to_a.flatten.map do |asset|
|
120
|
+
[asset, "#{asset}.gz"]
|
121
|
+
end.flatten
|
122
|
+
known_assets += %w(manifest.yml sources_manifest.yml)
|
123
|
+
|
124
|
+
Dir.glob(File.join(public_asset_path, '**/*')).each do |asset|
|
125
|
+
next if File.directory?(asset)
|
126
|
+
logical_path = asset.sub("#{public_asset_path}/", '')
|
127
|
+
|
128
|
+
unless logical_path.in?(known_assets)
|
129
|
+
# Delete asset if older than expire_after seconds
|
130
|
+
if File.mtime(asset) < (Time.now - expire_after)
|
131
|
+
::Rails.logger.debug "Removing expired asset: #{logical_path}"
|
132
|
+
FileUtils.rm_f asset
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
105
139
|
desc "Remove compiled assets"
|
106
140
|
task :clean do
|
107
141
|
invoke_or_reboot_rake_task "assets:clean:all"
|
@@ -138,4 +172,9 @@ task_enhancements.each do |task_name, actions|
|
|
138
172
|
actions.each do |proc|
|
139
173
|
Rake::Task[task_name].enhance &proc
|
140
174
|
end
|
175
|
+
end
|
176
|
+
|
177
|
+
# Clean expired assets after asset precompile, if CLEAN_EXPIRED_ASSETS is set
|
178
|
+
Rake::Task["assets:precompile:all"].enhance do
|
179
|
+
Rake::Task["assets:clean_expired:all"].invoke if ENV['CLEAN_EXPIRED_ASSETS'].in? %w(true yes 1)
|
141
180
|
end
|