heroku_hatchet 0.0.2 → 0.1.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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +14 -0
  3. data/CHANGELOG.md +4 -0
  4. data/README.md +2 -2
  5. data/Rakefile +6 -0
  6. data/hatchet.gemspec +3 -1
  7. data/hatchet.json +3 -2
  8. data/lib/hatchet.rb +2 -0
  9. data/lib/hatchet/anvil_app.rb +28 -18
  10. data/lib/hatchet/app.rb +19 -5
  11. data/lib/hatchet/git_app.rb +5 -2
  12. data/lib/hatchet/tasks.rb +17 -7
  13. data/lib/hatchet/version.rb +1 -1
  14. data/test/fixtures/buildpacks/heroku-buildpack-ruby/.gitignore +4 -0
  15. data/test/fixtures/buildpacks/heroku-buildpack-ruby/CHANGELOG.md +378 -0
  16. data/test/fixtures/buildpacks/heroku-buildpack-ruby/Gemfile +10 -0
  17. data/test/fixtures/buildpacks/heroku-buildpack-ruby/LICENSE +9 -0
  18. data/test/fixtures/buildpacks/heroku-buildpack-ruby/README.md +192 -0
  19. data/test/fixtures/buildpacks/heroku-buildpack-ruby/Rakefile +358 -0
  20. data/test/fixtures/buildpacks/heroku-buildpack-ruby/bin/compile +13 -0
  21. data/test/fixtures/buildpacks/heroku-buildpack-ruby/bin/detect +12 -0
  22. data/test/fixtures/buildpacks/heroku-buildpack-ruby/bin/release +9 -0
  23. data/test/fixtures/buildpacks/heroku-buildpack-ruby/hatchet.json +25 -0
  24. data/test/fixtures/buildpacks/heroku-buildpack-ruby/lib/language_pack.rb +27 -0
  25. data/test/fixtures/buildpacks/heroku-buildpack-ruby/lib/language_pack/base.rb +175 -0
  26. data/test/fixtures/buildpacks/heroku-buildpack-ruby/lib/language_pack/bundler_lockfile.rb +19 -0
  27. data/test/fixtures/buildpacks/heroku-buildpack-ruby/lib/language_pack/disable_deploys.rb +17 -0
  28. data/test/fixtures/buildpacks/heroku-buildpack-ruby/lib/language_pack/no_lockfile.rb +16 -0
  29. data/test/fixtures/buildpacks/heroku-buildpack-ruby/lib/language_pack/rack.rb +43 -0
  30. data/test/fixtures/buildpacks/heroku-buildpack-ruby/lib/language_pack/rails2.rb +91 -0
  31. data/test/fixtures/buildpacks/heroku-buildpack-ruby/lib/language_pack/rails3.rb +86 -0
  32. data/test/fixtures/buildpacks/heroku-buildpack-ruby/lib/language_pack/rails4.rb +66 -0
  33. data/test/fixtures/buildpacks/heroku-buildpack-ruby/lib/language_pack/ruby.rb +681 -0
  34. data/test/fixtures/buildpacks/heroku-buildpack-ruby/lib/language_pack/shell_helpers.rb +62 -0
  35. data/test/fixtures/buildpacks/heroku-buildpack-ruby/spec/bugs_spec.rb +11 -0
  36. data/test/fixtures/buildpacks/heroku-buildpack-ruby/spec/no_lockfile_spec.rb +10 -0
  37. data/test/fixtures/buildpacks/heroku-buildpack-ruby/spec/rails23_spec.rb +11 -0
  38. data/test/fixtures/buildpacks/heroku-buildpack-ruby/spec/rails3_spec.rb +22 -0
  39. data/test/fixtures/buildpacks/heroku-buildpack-ruby/spec/rails4_spec.rb +12 -0
  40. data/test/fixtures/buildpacks/heroku-buildpack-ruby/spec/rubies_spec.rb +38 -0
  41. data/test/fixtures/buildpacks/heroku-buildpack-ruby/spec/spec_helper.rb +35 -0
  42. data/test/fixtures/buildpacks/heroku-buildpack-ruby/support/s3/hmac +79 -0
  43. data/test/fixtures/buildpacks/heroku-buildpack-ruby/support/s3/s3 +223 -0
  44. data/test/fixtures/buildpacks/heroku-buildpack-ruby/vendor/syck_hack.rb +64 -0
  45. data/test/hatchet/allow_failure_anvil_test.rb +21 -0
  46. data/test/hatchet/allow_failure_git_test.rb +17 -0
  47. data/test/hatchet/anvil_test.rb +7 -7
  48. data/test/hatchet/config_test.rb +4 -2
  49. data/test/hatchet/git_test.rb +2 -2
  50. metadata +89 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8ab96e76acbc9193b2bda5f8ac7ada60364008f2
4
- data.tar.gz: 794c94bfde39543b8ac96e69321cca5fa9122680
3
+ metadata.gz: 27c6dcf4b94d7ffa2ff13c22681fb82ce164743f
4
+ data.tar.gz: a5184d0c3128783bb2b3eb8dbd7ba86e0197d57b
5
5
  SHA512:
6
- metadata.gz: f0be209eafbe2220d4685d373c34b96922e1b427312713e42deba1006954c95031adf3c4f91f72bf1b5cb776503128b05a6c4ad3bef0ef179b80e793507ea4eb
7
- data.tar.gz: 9844f35fe14d22d00bc2448b209fe8f4754e8df48959b18a6efcaf4ad632d9d21b1b4db7e2b77c0bd4c30265c709521d7b99dc37cd147099e88a8ca1f849fa1d
6
+ metadata.gz: 12b6562ee9a6b76be96cba750285c8d7674452ff50ba6f07beeef0898ba941ec1a0124b0ec47235cdeb41b41bab44c4c5c08f7ea50030d8bf8cf1d714b7b6ab5
7
+ data.tar.gz: 9f5efa38ed5b0d8a03e161ebab5acf0758b24f8c14cc2348b911eae83db68d4572d304e7014660b7860f2a36eaaa2e1759a4d18a911124221fd948b161ae473a
data/.travis.yml ADDED
@@ -0,0 +1,14 @@
1
+ ---
2
+ language: ruby
3
+ rvm:
4
+ - 2.0.0
5
+ before_script: bundle exec rake hatchet:setup_travis
6
+ script: bundle exec parallel_test test/hatchet -n 6
7
+
8
+
9
+ env:
10
+ global:
11
+ - secure: |-
12
+ SfUgPagZILPjm4rjkYlEck76PUE47dimpNZgUtUf7wTAbe6EE83QmnRl6uDT
13
+ eSdxuY9uNFoTwNLC0J+mRiDAJtAQxBsst8wFoc3diK2o8Ojnor5yd3cxddBv
14
+ uvJK6optVPzDveg7rjC7zsELzWYvzWW9enZ6gr8BY/cIPIWTXMw=
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.1.0
2
+
3
+ - Failed deploys now raise an exception
4
+
1
5
  ## 0.0.2
2
6
 
3
7
  - Added ability to run inline commands with no block (such as `app.run('ruby -v')`)
data/README.md CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  ![](http://f.cl.ly/items/2M2O2Q2I2x0e1M1P2936/Screen%20Shot%202013-01-06%20at%209.59.38%20PM.png)
4
4
 
5
- ## What
5
+ Hatchet is a an integration testing library for developing Heroku buildpacks.
6
6
 
7
- The Hatchet is a an integration testing library for developing Heroku buildpacks.
7
+ [![Build Status](https://travis-ci.org/heroku/hatchet.png?branch=master)](https://travis-ci.org/heroku/hatchet)
8
8
 
9
9
  ## Install
10
10
 
data/Rakefile CHANGED
@@ -5,3 +5,9 @@ require 'hatchet/tasks'
5
5
 
6
6
  task :default => [:test]
7
7
 
8
+ test_task = Rake::TestTask.new(:test) do |t|
9
+ t.libs << 'lib'
10
+ t.libs << 'test'
11
+ t.pattern = 'test/hatchet/**/*_test.rb'
12
+ t.verbose = false
13
+ end
data/hatchet.gemspec CHANGED
@@ -20,9 +20,11 @@ Gem::Specification.new do |gem|
20
20
 
21
21
  gem.add_dependency "heroku-api"
22
22
  gem.add_dependency "activesupport"
23
- gem.add_development_dependency "rake"
24
23
  gem.add_dependency "anvil-cli"
25
24
  gem.add_dependency "excon"
26
25
  gem.add_dependency "thor"
26
+
27
+ gem.add_development_dependency "rake"
28
+ gem.add_development_dependency "parallel_tests"
27
29
  end
28
30
 
data/hatchet.json CHANGED
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "hatchet": {"directory": "test/fixtures"},
3
- "rails3": ["sharpstone/rails3_mri_193"],
4
- "rails2": ["sharpstone/rails2blog"]
3
+ "rails3": ["sharpstone/rails3_mri_193"],
4
+ "rails2": ["sharpstone/rails2blog"],
5
+ "bundler": ["sharpstone/no_lockfile"]
5
6
  }
data/lib/hatchet.rb CHANGED
@@ -5,6 +5,8 @@ require 'active_support/core_ext/object/blank'
5
5
  require 'json'
6
6
  require 'stringio'
7
7
  require 'fileutils'
8
+ require 'stringio'
9
+
8
10
 
9
11
  module Hatchet
10
12
  class App
@@ -5,38 +5,48 @@ module Hatchet
5
5
  class AnvilApp < App
6
6
 
7
7
  def initialize(directory, options = {})
8
- @buildpack = options[:buildpack]
8
+ @buildpack = options[:buildpack]
9
9
  @buildpack ||= File.expand_path('.')
10
10
  super
11
11
  end
12
12
 
13
13
  def push!
14
- slug_url = nil
15
-
16
- begin
17
- stderr_orig = $stderr
18
- stdout_orig = $stdout
19
- string_io = StringIO.new
20
- $stderr = string_io
21
- slug_url = Anvil::Engine.build(".", :buildpack => @buildpack, :pipeline => true)
14
+ out, err = wrap_stdout_and_rescue(Anvil::Builder::BuildError) do
15
+ slug_url = Anvil::Engine.build(".", :buildpack => @buildpack, :pipeline => true)
22
16
  puts "Releasing to http://#{@name}.herokuapp.com"
23
17
  response = release(@name, slug_url)
24
18
  while response.status == 202
25
19
  response = Excon.get("#{release_host}#{response.headers["Location"]}")
26
20
  end
27
- rescue Anvil::Builder::BuildError => e
28
- output = $stderr.dup
29
- stdout_orig.puts output.string # print the errors to the test output
30
- return [false, output.string]
31
- ensure
32
- $stderr = stderr_orig
33
- $stdout = stdout_orig
34
21
  end
35
22
 
36
- [true, string_io.string]
23
+ err.string
37
24
  end
38
25
 
39
- def teardown!
26
+ def wrap_stdout_and_rescue(error, &block)
27
+ wrap_stdout do |orig_out, orig_err|
28
+ begin
29
+ yield orig_out, orig_err
30
+ rescue error => e
31
+ return [$stdout.dup, $stderr.dup] if @allow_failure
32
+ orig_out.puts $stderr.dup.string # print the errors to the test output
33
+ raise e
34
+ end
35
+ end
36
+ end
37
+
38
+ def wrap_stdout(orig_out = $stdout, orig_err = $stderr, &block)
39
+ $stderr = StringIO.new
40
+ $stdout = StringIO.new
41
+ yield orig_out, orig_err
42
+ puts [$stdout.dup, $stderr.dup].inspect
43
+ return $stdout.dup, $stderr.dup
44
+ ensure
45
+ $stdout = orig_out
46
+ $stderr = orig_err
47
+ end
48
+
49
+ def teardown!
40
50
  super
41
51
  FileUtils.rm_rf("#{directory}/.anvil")
42
52
  end
data/lib/hatchet/app.rb CHANGED
@@ -2,10 +2,20 @@ module Hatchet
2
2
  class App
3
3
  attr_reader :name, :directory
4
4
 
5
+ class FailedDeploy < StandardError
6
+ def initialize(app, output)
7
+ msg = "could not deploy #{app.name} using #{app.class} if this was expected " <<
8
+ "add `allow_failure: true` to your deploy hash\n\n" <<
9
+ "output : #{output.inspect}"
10
+ super(msg)
11
+ end
12
+ end
13
+
5
14
  def initialize(repo_name, options = {})
6
- @directory = config.path_for_name(repo_name)
7
- @name = options[:name] || "test-app-#{Time.now.to_f}".gsub('.', '-')
8
- @debug = options[:debug] || options[:debugging]
15
+ @directory = config.path_for_name(repo_name)
16
+ @name = options[:name] || "test-app-#{Time.now.to_f}".gsub('.', '-')
17
+ @debug = options[:debug] || options[:debugging]
18
+ @allow_failure = options[:allow_failure] || false
9
19
  end
10
20
 
11
21
  # config is read only, should be threadsafe
@@ -65,13 +75,17 @@ module Hatchet
65
75
  def deploy(&block)
66
76
  Dir.chdir(directory) do
67
77
  self.setup!
68
- result, output = self.push!
69
- block.call(self, heroku, output)
78
+ @output = self.push!
79
+ block.call(self, heroku, output) if block.present?
70
80
  end
71
81
  ensure
72
82
  self.teardown!
73
83
  end
74
84
 
85
+ def output
86
+ @output
87
+ end
88
+
75
89
  private
76
90
  def api_key
77
91
  @api_key ||= ENV['HEROKU_API_KEY'] || `heroku auth:token`.chomp
@@ -18,8 +18,11 @@ module Hatchet
18
18
  end
19
19
 
20
20
  def push!
21
- output = `git push #{git_repo} master`
22
- [$?.success?, output]
21
+ output = `git push #{git_repo} master 2>&1`
22
+ if !$?.success?
23
+ raise FailedDeploy.new(self, output) unless @allow_failure
24
+ end
25
+ return output
23
26
  end
24
27
  end
25
28
  end
data/lib/hatchet/tasks.rb CHANGED
@@ -1,10 +1,20 @@
1
1
  require 'rake'
2
2
  require 'rake/testtask'
3
3
 
4
- Rake::TestTask.new(:test) do |t|
5
- t.libs << 'lib'
6
- t.libs << 'test'
7
- t.pattern = 'test/hatchet/**/*_test.rb'
8
- t.verbose = false
9
- end
10
-
4
+ namespace :hatchet do
5
+ task :setup_travis do
6
+ puts "== Setting Up Travis =="
7
+ ['bundle exec hatchet install',
8
+ %Q{echo "\nHost heroku.com\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config},
9
+ %Q{echo "\nHost github.com\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config},
10
+ 'wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh',
11
+ 'ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa',
12
+ 'heroku keys:add',
13
+ 'heroku login'
14
+ ].each do |command|
15
+ puts "== Running: #{command}"
16
+ `#{command}`
17
+ end
18
+ puts "== Done =="
19
+ end
20
+ end
@@ -1,3 +1,3 @@
1
1
  module Hatchet
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -0,0 +1,4 @@
1
+ repos/*
2
+ .DS_Store
3
+ vendor/bundler/*
4
+ vendor/bundle/*
@@ -0,0 +1,378 @@
1
+ ## v61 (4/18/2013)
2
+
3
+ Features:
4
+
5
+ * Start caching the rubygems version used.
6
+
7
+ Bugfixes:
8
+
9
+ * Rebuild bundler cache if rubygems 2 is detected. Bugfixes in later rubygems.
10
+
11
+ ## v60 (4/17/2013)
12
+
13
+ Security:
14
+
15
+ * Disable Java RMI Remote Classloading for CVE-2013-1537, <https://bugzilla.redhat.com/show_bug.cgi?id=952387>
16
+
17
+ ## v59 (4/4/2013)
18
+
19
+ Bugfixes:
20
+
21
+ * Change JVM S3 bucket
22
+
23
+ ## v58 (3/19/2013)
24
+
25
+ Bugfixes:
26
+
27
+ * Fix ruby 1.8.7 not being able to compile native extensions
28
+
29
+ ## v57 (3/18/2013)
30
+
31
+ Bugfixes:
32
+
33
+ * Fix git gemspec bug in bundler
34
+
35
+ ## v56 (3/11/2013)
36
+
37
+ Bugfixes:
38
+
39
+ * Upgrade bundler to 1.3.2 to fix --dry-clean/Would have removed bug in bundle clean, part 2.
40
+
41
+ ## v55 (3/7/2013)
42
+
43
+ Bugfixes:
44
+
45
+ * Revert back to Bundler 1.3.0.pre.5, see https://gist.github.com/mattonrails/e063caf86962995e7ba0
46
+
47
+ ## v54 (3/7/2013)
48
+
49
+ Bugfixes:
50
+
51
+ * Upgrade bundler to 1.3.2 to fix --dry-clean/Would have removed bug in bundle clean
52
+
53
+ ## v53 (3/6/2013)
54
+
55
+ Bugfixes:
56
+
57
+ * bin/detect for Rails 3 and 4 will use railties for detection vs the rails gem
58
+ * bin/detect does not error out when Gemfile + Gemfile.lock are missing
59
+
60
+ ## v52 (2/25/2013)
61
+
62
+ Bugfixes:
63
+
64
+ * Revert back to 1.3.0.pre.5 due to bundler warnings
65
+
66
+ ## v51 (2/25/2013)
67
+
68
+ Features:
69
+
70
+ * Initial Rails 4 beta support
71
+ * Upgrade bundler to 1.3.0
72
+
73
+ Bugfixes:
74
+
75
+ * Better buildpack detection through Gemfile.lock gems
76
+
77
+ ## v50 (1/31/2013)
78
+
79
+ Features:
80
+
81
+ * Restore ruby deploys back to normal
82
+
83
+ ## v49 (1/30/2013)
84
+
85
+ Features:
86
+
87
+ * Re-enable ruby deploys for apps just using the heroku cache
88
+ * Display ruby version change when busting the cache
89
+
90
+ ## v48 (1/30/2013)
91
+
92
+ Features:
93
+
94
+ * Update deploy error message copy to link to status incident.
95
+
96
+ ## v47 (1/30/2013)
97
+
98
+ Features:
99
+
100
+ * Disable ruby deploys due to rubygems.org compromise
101
+
102
+ ## v46 (1/10/2013)
103
+
104
+ Features:
105
+
106
+ * Upgrade Bundler to 1.3.0.pre.5
107
+ * bundler binstubs now go in vendor/bundle/bin
108
+
109
+ ## v45 (12/14/2012)
110
+
111
+ Features:
112
+
113
+ * Stop setting env vars in bin/release now that login-shell is released
114
+ * Enable Invoke Dynamic on JRuby by default
115
+ * GEM_PATH is now updated on each push
116
+
117
+ ## v44 (12/14/2012)
118
+
119
+ Faulty Release
120
+
121
+ ## v43 (12/13/2012)
122
+
123
+ Features:
124
+
125
+ * Upgrade Bundler to 1.3.0.pre.2
126
+
127
+ ## v42 (11/26/2012)
128
+
129
+ Features:
130
+
131
+ * Upgrade Bundler to 1.2.2 to fix Ruby 2.0.0/YAML issues
132
+
133
+ ## v41 (11/1/2012)
134
+
135
+ Features:
136
+
137
+ * Enable ruby 2.0.0 support for testing
138
+
139
+ ## v40 (10/14/2012)
140
+
141
+ Features:
142
+
143
+ * Cache version of the buildpack we used to deploy
144
+ * Purge cache when v38 is detected
145
+
146
+ ## v39 (10/14/2012)
147
+
148
+ Bugfixes:
149
+
150
+ * Don't display cache clearing message for new apps
151
+ * Actually clear bundler cache on ruby version change
152
+
153
+ ## v38 (10/14/2012)
154
+
155
+ Bugfixes:
156
+
157
+ * Stop bundle cache from continually growing
158
+
159
+ ## v37 (10/12/2012)
160
+
161
+ Bugfixes:
162
+
163
+ * Remove temporary workaround from v36.
164
+ * Clear bundler cache upon Ruby version change
165
+
166
+ ## v36 (10/12/2012)
167
+
168
+ Bugfixes:
169
+
170
+ * Always clear the cache for ruby 1.9.3 as a temporary workaround due to the security upgrade
171
+
172
+ ## v35 (9/19/2012)
173
+
174
+ Features:
175
+
176
+ * Upgrade to Bundler 1.2.1
177
+ * Display bundle clean output
178
+ * More resilent to rubygems.org API outages
179
+
180
+ Bugfixes:
181
+
182
+ * `bundle clean` works again
183
+
184
+ ## v34 (8/30/2012)
185
+
186
+ Features:
187
+
188
+ * Upgrade to Bundler 1.2.0
189
+
190
+ ## v33 (8/9/2012)
191
+
192
+ Features:
193
+
194
+ * Upgrade to Bundler 1.2.0.rc.2
195
+ * vendor JDK7 for JRuby, but disable invoke dynamic
196
+
197
+ ## v29 (7/19/2012)
198
+
199
+ Features:
200
+
201
+ * support .profile.d/ruby.sh
202
+ * sync stdout so that the buildpack streams even in non-interactive shells
203
+ * Upgrade to Bundler 1.2.0.rc
204
+
205
+ ## v28 (7/16/2012)
206
+
207
+ Features:
208
+
209
+ * Vendor OpenJDK6 into slug when using JRuby
210
+ * ruby version support for ruby 1.8.7 via bundler's ruby DSL
211
+
212
+ Bugfixes:
213
+
214
+ * sqlite3 error gets displayed again
215
+
216
+ ## v27 (6/14/2012)
217
+
218
+ Bugfixes:
219
+
220
+ * Remove `vendor/bundle` message only appears when dir actually exists
221
+
222
+ ## v26 (6/14/2012)
223
+
224
+ Features:
225
+
226
+ * print message when assets:precompile finishes successfully
227
+ * Remove `vendor/bundle` if user commits it to their git repo.
228
+
229
+ ## v25 (6/12/2012)
230
+
231
+ Features:
232
+
233
+ * support "ruby-xxx-jruby-yyy" for jruby detection packages
234
+
235
+ ## v24 (6/7/2012)
236
+
237
+ Features:
238
+
239
+ * removes bundler cache in the slug, to minimize slug size (@stevenh512, #16)
240
+ * optimize push time with caching
241
+
242
+ ## v23 (5/8/2012)
243
+
244
+ Bugfixes:
245
+
246
+ * fix ruby version bug with "fatal:-Not-a-git-repository"
247
+
248
+ ## v22 (5/7/2012)
249
+
250
+ Features:
251
+
252
+ * bundler 1.2.0.pre
253
+ * ruby version support for ruby 1.9.2/1.9.3 via bundler's ruby DSL
254
+
255
+ Deprecation:
256
+
257
+ * ENV['RUBY_VERSION'] in favor of bundler's ruby DSL
258
+
259
+ ## v21 (3/21/2012)
260
+
261
+ Features:
262
+
263
+ * bundler 1.1.2
264
+
265
+ ## v20 (3/12/2012)
266
+
267
+ Features:
268
+
269
+ * bundler 1.1.0 \o/
270
+
271
+ ## v19 (1/25/2012)
272
+
273
+ Bugfixes:
274
+
275
+ * fix native extension building for rbx 2.0.0dev
276
+
277
+ ## v18 (1/18/2012)
278
+
279
+ Features:
280
+
281
+ * JRuby support
282
+ * rbx 2.0.0dev support
283
+
284
+ Bugfixes:
285
+
286
+ * force db password to be a string in the yaml file
287
+
288
+ ## v17 (12/29/2011)
289
+
290
+ Features:
291
+
292
+ * bundler 1.1.rc.7
293
+
294
+ ## v16 (12/29/2011)
295
+
296
+ Features:
297
+
298
+ * pass DATABASE_URL to rails 3.1 assets:precompile rake task detection
299
+
300
+ ## v15 (12/27/2011)
301
+
302
+ Features:
303
+
304
+ * bundler 1.1.rc.6
305
+
306
+ ## v14 (12/22/2011)
307
+
308
+ Bugfixes:
309
+
310
+ * stop freedom patching syck in ruby 1.9.3+
311
+
312
+ ## v13 (12/15/2011)
313
+
314
+ Features:
315
+
316
+ * bundler 1.1.rc.5
317
+
318
+ ## v12 (12/13/2011)
319
+
320
+ Bugfixes:
321
+
322
+ * syck workaround for yaml/psych issues
323
+
324
+ ## v11 (12/12/2011)
325
+
326
+ Features:
327
+
328
+ * bundler 1.1.rc.3
329
+
330
+ ## v10 (11/23/2011)
331
+
332
+ Features:
333
+
334
+ * bundler binstubs
335
+ * dynamic slug_vendor_base detection
336
+
337
+ Bugfixes:
338
+
339
+ * don't show sqlite3 error if it's in a bundle without group on failed bundle install
340
+
341
+ ## v9 (11/14/2011)
342
+
343
+ Features:
344
+
345
+ * rbx 1.2.4 support
346
+ * print out RUBY_VERSION being used
347
+
348
+ Bugfixes:
349
+
350
+ * don't leave behind ruby_versions.yml
351
+
352
+ ## v8 (11/8/2011)
353
+
354
+ Features:
355
+
356
+ * use vm as part of RUBY_VERSION
357
+
358
+ ## v7 (11/8/2011)
359
+
360
+ Features:
361
+
362
+ * ruby 1.9.3 support
363
+ * specify ruby versions using RUBY_VERSION build var
364
+
365
+ Bugfixes:
366
+
367
+ * move "bin/" to the front of the PATH, so apps can override existing bins
368
+
369
+ ## v6 (11/2/2011)
370
+
371
+ Features:
372
+
373
+ * add sqlite3 warning when detected on bundle install error
374
+
375
+ Bugfixes:
376
+
377
+ * Change gem detection to use lockfile parser
378
+ * use `$RACK_ENV` when thin is detected for rack apps