heroku_hatchet 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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