Skip to content
Permalink
Branch: master
Commits on Mar 7, 2019
  1. f

    betamatt committed Mar 7, 2019
  2. Allow overriding stack with RUBY_STACK env var

    betamatt committed Mar 7, 2019
    Get access to old rubies
Commits on Feb 28, 2019
  1. Merge pull request heroku#858 from joshwlewis/master

    schneems committed Feb 28, 2019
    Build an export file in CI, too
Commits on Feb 27, 2019
  1. Setup export in tests too

    joshwlewis committed Feb 27, 2019
Commits on Feb 20, 2019
  1. Merge pull request heroku#854 from heroku/schneems/fix-bytes

    schneems committed Feb 20, 2019
    Ignore invalid byte encodings when detecting rails config
Commits on Feb 19, 2019
  1. Ignore invalid byte encodings when detecting rails config

    schneems committed Feb 13, 2019
    Previously if a customer had an invalid byte sequence emitted during boot up, it would raise an error:
    
    ```
    invalid byte sequence in UTF-8
    ```
    
    Which would prevent configuration detection from functioning correctly. 
    
    When detecting rails configuration, we know that the input we are trying to detect for success will be UTF-8. As a result, we can ignore any other encoded characters.
    
    This PR prevents an invalid byte sequence from blocking rails configuration detection.
    
    Reference internal support ticket number: 681812
    
    Here's a blog post on invalid byte sequences if you're interested https://thoughtbot.com/blog/fight-back-utf-8-invalid-byte-sequences.
  2. v199

    schneems committed Feb 11, 2019
Commits on Feb 11, 2019
  1. Merge pull request heroku#850 from heroku/schneems/bundler-multiple-m…

    schneems committed Feb 11, 2019
    …ajor-versions
    
    Bundler 2 support
Commits on Feb 7, 2019
  1. Remove code that will never get called

    schneems committed Feb 7, 2019
    Since we control the version, this code will never execute unless we regress to a REALLY old version. I'm deleting it.
Commits on Feb 6, 2019
  1. Fix a flappy test based on the bundler wrapper

    schneems committed Feb 5, 2019
    Usually this would take a LONG time as the test suite when run serially takes about an hour. The other thing that is tough about this, is it only fails on CI and not locally.
    
    On a hunch I guessed the failing behavior came only from `spec/helpers` which is all unit tested and therefore pretty fast. This allowed me to actually find the failing order.
    
    Via `$ heroku ci:debug`
    
    First I ran:
    
    ```
    $ bundle exec rspec spec/helpers --bisect --seed 1
    ```
    
    The `--seed` argument is used because otherwise the order is randomized on every run. It doesn't matter what value is used as long as it's consistent.
    
    This produce a "minimal failing example" of running:
    
    ```
    $ rspec './spec/helpers/fetcher_spec.rb[1:1]' './spec/helpers/rails_runner_spec.rb[1:3,1:5]' './spec/helpers/rake_runner_spec.rb[1:1,1:2]' --seed 1
    ```
    
    Sure enough this command fails 100% of the time.
    
    I knew the culprit had to be mutating something global. Previously I've been focused on files on disk but considering every example is now run inside of it's own temp directory then it is likely something else. The other culprit could be an environment variable.
    
    This lead me to look into the bundler wrapper which sure enoug mutates the env var `BUNDLE_GEMFILE`.
  2. Detect bundler version

    schneems committed Feb 5, 2019
    ## Problem 1
    
    Bundler 2.x cannot be used with a Gemfile.lock that specifies bundler 1.x:
    
    ```
    BUNDLED WITH
       1.16.4
    ```
    
    If you try, then Bundler 2.x will look for an installed bundler 1.x version and try to use it. If no such version exists on the system then an error is thrown:
    
    
    ```
    can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException)
    ```
    
    
    - rubygems/rubygems#2426
    - rubygems/rubygems#2515
    
    
    ## Problem 2
    
    Likewise a version of bundler 1.x cannot be used on a project where a `BUNDLED WITH` specifies 2.x:
    
    
    ```
    $ bundle -v
    1.17.3
    $ cat Gemfile.lock | grep -A 1 BUNDLED WITH
    BUNDLED WITH
      2.0.1
    $ bundle
    Traceback (most recent call last):
    	2: from /Users/rschneeman/.gem/ruby/2.6.0/bin/bundle:23:in `<main>'
    	1: from /Users/rschneeman/.rubies/ruby-2.6.0/lib/ruby/2.6.0/rubygems.rb:302:in `activate_bin_path'
    /Users/rschneeman/.rubies/ruby-2.6.0/lib/ruby/2.6.0/rubygems.rb:283:in `find_spec_for_exe': Could not find 'bundler' (2.0.0) required by your /private/tmp/default_ruby/Gemfile.lock. (Gem::GemNotFoundException)
    To update to the latest version installed on your system, run `bundle update --bundler`.
    To install the missing version, run `gem install bundler:2.0.0`
    ```
    
    This is due to a bug in Rubygems 3.x rubygems/rubygems#2592
    
    
    ## Proposed Solution
    
    This PR implements a solution where we have a different "blessed" version of bundler for each major version. 
    
    The way this is implemented is to read in a Gemfile.lock and to read in the `BUNDLED WITH` value. Then the major version is pulled out and converted into a "blessed" version.
    
    This allows for multiple major versions of bundler to be used on Heroku without sacrificing stability.
Commits on Feb 5, 2019
  1. Merge pull request heroku#853 from heroku/schneems/un-flappy

    schneems committed Feb 5, 2019
    Attempt to make rails runner tests less flappy
  2. Attempt to make rails runner tests less flappy

    schneems committed Feb 5, 2019
    Not sure why they flap, but this makes sure all examples are running in their own dir.
Commits on Jan 17, 2019
  1. Fix JVM Spec

    schneems committed Jan 17, 2019
  2. v198

    schneems committed Jan 17, 2019
Commits on Jan 10, 2019
  1. Merge pull request heroku#846 from heroku/schneems/2.5.3

    schneems committed Jan 10, 2019
    Update default ruby version to 2.5.3
  2. Merge pull request heroku#848 from heroku/schneems/no-more-RUBYOPT

    schneems committed Jan 10, 2019
    Close heroku#84 Allow apps to enable `RUBYOPT=--jit`
  3. Close heroku#847 Allow apps to enable `RUBYOPT=--jit`

    schneems committed Dec 28, 2018
    If you set:
    
    ```
    $ heroku config:set RUBYOT=--jit
    ```
    
    Then this will be a global value so when the buildpack attempts to detect ruby version by running:
    
    ```
    $ bundle platform --ruby
    ```
    
    It is executed with the RUBYOPT set. Since the version of Ruby the buildpack executes does not have `--jit` it fails:
    
    ```
    -----> Ruby app detected
    -----> Compiling Ruby/Rails
     !
     !     There was an error parsing your Gemfile, we cannot continue
     !     ruby: invalid option --jit  (-h will show valid options) (RuntimeError)
     !
     !     Push rejected, failed to compile Ruby app.
     !     Push failed
    ```
Commits on Dec 27, 2018
Commits on Dec 18, 2018
  1. V197

    schneems committed Dec 18, 2018
Commits on Dec 10, 2018
  1. Merge pull request heroku#832 from heroku/update-yarn

    schneems committed Dec 10, 2018
    Update included Yarn to latest 1.x version
  2. Merge pull request heroku#831 from heroku/update-node

    schneems committed Dec 10, 2018
    Update included Node to latest LTS version
Commits on Dec 3, 2018
  1. Fix url to point to new bucket

    Jeremy Morrell
    Jeremy Morrell committed Dec 3, 2018
  2. Fix url to point to new bucket

    Jeremy Morrell
    Jeremy Morrell committed Dec 3, 2018
  3. Update included Yarn to latest 1.x version

    Jeremy Morrell
    Jeremy Morrell committed Dec 3, 2018
  4. Update included Node to latest LTS version

    Jeremy Morrell
    Jeremy Morrell committed Dec 3, 2018
Commits on Oct 31, 2018
Older
You can’t perform that action at this time.