bootscale 0.5.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8a7aaf845e800f1f64c2c2ef8441ad54aff38c2c
4
- data.tar.gz: 6b0a73fe2db054d04ba54d487182ce17f42709a1
3
+ metadata.gz: 8f9aae3eeb86052322d2ae6b745e8c0f0385e2d4
4
+ data.tar.gz: 0bbe7af30e7de21a6641771d8571d3f63efb9e1a
5
5
  SHA512:
6
- metadata.gz: fc644b8650d023e093830e9f3c940bf50a13cb1f5e8fe642bedade1e4dd28b1bb533dcd0f12368a9a1bf0bf5486ed2513e940fa0228701b9c9ef768b637dc845
7
- data.tar.gz: 34aada56e016d3eee070415109268a1afac1a16ef00833c3df7f7d76d8c46db37be3f7dbf3a8ea8c5e2751e861faa85234acb217f86bb121a2e9547333f56404
6
+ metadata.gz: 7a54144b441ef4dd3a233a8d22ce838ff6a3a13d8204a5304bd614bbd2f88b3c415b0ab62f62281e48df3a396ad2470a594387f9312997d5d6748b2d2dce5388
7
+ data.tar.gz: 72699fc3cf785bfa26ba3b25917978ec4f109a3b71260f92320d9b6db6f419f378e0550592f3473a5d901c7231cebfa868f0cb259285db87df892852b68336b0
data/README.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # Bootscale
2
2
 
3
+ [![Build Status](https://travis-ci.org/byroot/bootscale.svg)](http://travis-ci.org/byroot/bootscale)
4
+ [![Gem Version](https://badge.fury.io/rb/bootscale.png)](http://badge.fury.io/rb/byroot/bootscale)
5
+
3
6
  Speedup applications boot by caching file locations during require calls.
4
7
 
5
8
  Speed gain depends on your number of gems. Under 100 gems you likely won't see the difference,
@@ -39,7 +42,20 @@ end
39
42
 
40
43
  ## Faster cache loading
41
44
 
42
- Add the `msgpack` gem and `require 'msgpack'` to gain ~10-30ms of extra load speed by using msgpack.
45
+ In order to gain ~10-30ms of extra load speed, you can use the msgpack gem:
46
+
47
+ ```ruby
48
+ # Gemfile
49
+ gem 'msgpack', require: false
50
+ gem 'bootscale', require: false
51
+ ```
52
+
53
+ ```ruby
54
+ # config/application.rb (or wherever you have the require of bundler/setup)
55
+ require 'bundler/setup'
56
+ require 'msgpack'
57
+ require 'bootscale/setup'
58
+ ```
43
59
 
44
60
  ## Under the hood
45
61
 
@@ -48,6 +64,10 @@ patches `require` + `autoload` to use these absolute paths, thereby avoiding hav
48
64
 
49
65
  Problem outlined in this [talk](https://www.youtube.com/watch?v=kwkbrOwLsZY)
50
66
 
67
+ ## Troubleshooting
68
+
69
+ If you're experiencing problems with loading your application and are unable to successfully run `Bootscale.regenerate`, try deleting the `tmp/bootscale` folder.
70
+
51
71
  ## Contributing
52
72
 
53
73
  Bug reports and pull requests are welcome on GitHub at https://github.com/byroot/bootscale.
@@ -1,4 +1,5 @@
1
1
  require 'digest/md5'
2
+ require_relative 'utils'
2
3
 
3
4
  module Bootscale
4
5
  class FileStorage
@@ -14,7 +15,7 @@ module Bootscale
14
15
  def dump(load_path, cache)
15
16
  path = cache_path(load_path)
16
17
  FileUtils.mkdir_p(File.dirname(path))
17
- File.write(path, Serializer.dump(cache), mode: 'wb+')
18
+ Utils.atomic_write(path) { |f| f.write(Serializer.dump(cache)) }
18
19
  end
19
20
 
20
21
  private
@@ -0,0 +1,30 @@
1
+ module Bootscale
2
+ module Utils
3
+ # Write to a file atomically. Useful for situations where you
4
+ # don't want other processes or threads to see half-written files.
5
+ #
6
+ # Utils.atomic_write('important.file') do |file|
7
+ # file.write('hello')
8
+ # end
9
+ #
10
+ # Returns nothing.
11
+ def self.atomic_write(filename)
12
+ dirname, basename = File.split(filename)
13
+ basename = [
14
+ basename,
15
+ Thread.current.object_id,
16
+ Process.pid,
17
+ rand(1000000)
18
+ ].join('.'.freeze)
19
+ tmpname = File.join(dirname, basename)
20
+
21
+ File.open(tmpname, 'wb+') do |f|
22
+ yield f
23
+ end
24
+
25
+ File.rename(tmpname, filename)
26
+ ensure
27
+ File.delete(tmpname) if File.exist?(tmpname)
28
+ end
29
+ end
30
+ end
@@ -1,3 +1,3 @@
1
1
  module Bootscale
2
- VERSION = '0.5.1'
2
+ VERSION = '0.5.2'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bootscale
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean Boussier
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-02 00:00:00.000000000 Z
11
+ date: 2016-06-27 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Inspired by Aaron Patterson's talk on the subject
14
14
  email:
@@ -25,6 +25,7 @@ files:
25
25
  - lib/bootscale/entry.rb
26
26
  - lib/bootscale/file_storage.rb
27
27
  - lib/bootscale/setup.rb
28
+ - lib/bootscale/utils.rb
28
29
  - lib/bootscale/version.rb
29
30
  homepage: https://github.com/byroot/bootscale
30
31
  licenses: []
@@ -45,7 +46,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
45
46
  version: '0'
46
47
  requirements: []
47
48
  rubyforge_project:
48
- rubygems_version: 2.4.6
49
+ rubygems_version: 2.5.1
49
50
  signing_key:
50
51
  specification_version: 4
51
52
  summary: Speedup applications boot by caching require calls