Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Commits on Nov 21, 2015
  1. @tute

    Add lang attribute to html element in layout

    tute committed
    Identifying the language of the document is important for a number of
    * It allows braille translation software to substitute control codes
    for accented characters, and insert control codes necessary to prevent
    erroneous creation of Grade 2 braille contractions.
    * Speech synthesizers that support multiple languages will be able to
    orient and adapt to the pronunciation and syntax that are specific to
    the language of the page, speaking the text in the appropriate accent
    with proper pronunciation.
    * Marking the language can benefit future developments in technology,
    for example users who are unable to translate between languages
    themselves will be able to use machines to translate unfamiliar
    * Marking the language can also assist user agents in providing
    definitions using a dictionary.
Commits on Nov 20, 2015
  1. @lpender @tute

    Ignore `.env.local` instead of `.env`

    lpender committed with tute
    Here is an common state that the current `.gitignore` supports:
    - The `.sample.env` (or like) file is updated with a set of environment variables after a feature is merged.
    - A developer pulls the latest from master and runs the test suite.
    - It fails with an opaque error message.
    A more robust workflow:
    - Version development environment variables in the `.env` file.
    - Overrides these locally with the `.env.local` file..
    * thoughtbot/dotfiles#442
    [fixes #563]
Commits on Nov 19, 2015
  1. @grantovich @tute

    Make Forego port match APPLICATION_HOST port

    grantovich committed with tute
    Suspenders previously included a `.foreman` file which specified that
    Foreman should use port 3000, and not the default of 5000 (rationale
    in a42ec7e). The switch from Foreman to Forego in 6b7614a removed this
    file since Forego doesn't support it, causing a reversion to port 5000
    and a mismatch with the `APPLICATION_HOST` and `ASSET_HOST` variables
    in the sample `.env` file.
    Forego does support specifying a port via the PORT environment
    variable, so this change adds that variable to the sample `.env` file.
    [closes #665]
    [closes #666]
  2. @toobulkeh @tute

    Set default app to staging

    toobulkeh committed with tute
    Per (Heroku Docs)[]
    using the `--remote` flag is much preferred over the `--app` flag. This
    default sets all heroku commands to use the staging app by default, and
    you're already able to use the `heroku --remote production` shortcut.
    [fixes #661]
Commits on Nov 17, 2015
  1. @toobulkeh @tute

    Fix spring binstub test

    toobulkeh committed with tute
    It appears that spring has yet again changed their binstub loading technique.
    References cbb95b6
    [fixes #664]
  2. @toobulkeh @tute

    Added Bullet to README

    toobulkeh committed with tute
    In reference to
    [fixes #663]
    [ci skip]
Commits on Nov 16, 2015
  1. @ReadmeCritic
Commits on Nov 15, 2015
  1. @tute file adjustments

    tute committed
  2. @dalailama3

    Releasing version 1.34

    dalailama3 committed
    [ci skip]
    [fixes #656]
Commits on Nov 13, 2015
  1. @seanpdoyle

    Raise on missing Sprockets assets in test

    seanpdoyle committed
    When testing features, we'd prefer to be notified of asset pipeline
    issues as early as possible.
  2. @tute

    Add RELEASING document

    tute committed
    [ci skip]
  3. @croaky

    Use Heroku Local (Forego) instead of Foreman

    croaky committed
    Heroku Local has replaced Foreman in the Heroku Toolbelt.
    The command `heroku local` has replaced `foreman`.
    Heroku Local makes use of [Forego] to accomplish its tasks
    and it is faster and has better cross-platform support.
  4. @zamith @tute

    Adds adapter for heroku actions

    zamith committed with tute
    Sets up the path for the fakes on every test run. Having it being done
    on a case by case basis was error prone and repetitive. This change sets
    the correct path in two places:
    1. Before the test suite, for any call that happens on the main test
    2. On the same thread that runs suspenders
    Check that the setup has the expected commands
  5. @tute

    Add bullet as development dependency

    tute committed
    Bullet notifies automatically if there is any request in the application
    where we are performing N+1 queries, or unused eager loading.
    With this check we make sure we eager load what is needed, and nothing
    more, without having to check each endpoint.
Commits on Nov 10, 2015
  1. @graysonwright

    Fix Circle deploys by removing redundant remote

    graysonwright committed
    The circle configuration tries to deploy the build to the heroku staging
    environment if it finishes successfully.
    Because both the .circle.yml and bin/setup scripts
    define the staging remote for git,
    the build fails with a warning about the duplicate remote.
    Only set the staging remote once, in the setup script.
    Remove the redundant source definition from `circle.yml`
  2. @graysonwright

    Fix spring binstub test

    graysonwright committed
    It appears that Spring has switched from using double-quotes in their
    binstub to using single-quotes. The change has broken one of our tests,
    where we are asserting that the binstub contains a line matching a
    regular expression.
    Update the regular expression to use single-quotes, to match those
    created by the binstub generator.
Commits on Nov 6, 2015
  1. @mike-burns

    Transfer copyright to thoughtbot entirely

    mike-burns committed
    It's been a blast being a copyright holder on this, but in reality all
    of thoughtbot should have the copyright.
    While here, make the date range match that specified in the README.
  2. @derekprior

    Remove email_validator

    derekprior committed
    If we need to validate email addresses we can add this gem manually.
    Having it in suspenders saves us no setup, costs us a small amount of
    runtime memory, and increases the amount of code we're running for no
    real reason.
Commits on Nov 4, 2015
  1. @rentziass @tute

    Change order in customize_gemfile in app_generator

    rentziass committed with tute
    I noticed that with a fresh gemset, apart from the dependencies that
    come with Suspenders, it was crashing during app generation while trying
    to configure simple_form, due to a missing "bundle install", which was
    meant to happen after that.
    This undos work done in 4b517a1.
Commits on Nov 2, 2015
  1. @sikachu

    Config Circle to use rake binstub instead

    sikachu committed
    There is no need to use `bundle exec` given we have binstub in `bin/`.
Commits on Nov 1, 2015
  1. @seanpdoyle

    Cleanup generated `bin/setup` file

    seanpdoyle committed
    According to the current definition of the [dev:prime][task] Rake
    task, chaining `db:setup` before `dev:prime` is unnecessary.
    Additionally, the generated Rails application uses Bundler's [binstubs],
    so we can replace `bundle exec rake` with `bin/rake`.
Commits on Oct 31, 2015
  1. @Fourfingerz @tute

    Add version command to CLI

    Fourfingerz committed with tute
    `suspenders --version` in the CLI, Suspenders responds with the message
    "No value provided for required arguments 'app_path'".
    This changeset adds `-v` and `--version` options to `bin/suspenders.rb`.
    Those commands will now return the proper suspenders version in the CLI.
    [closes #638]
Commits on Oct 30, 2015
  1. @tute

    No need to configure action_mailer_host in staging

    tute committed
    It inherits production's, which reads the same environmental variable.
Commits on Oct 28, 2015
  1. @tute

    Configure SimpleForm earlier

    tute committed
    A spec run in master looks like:
    [Simple Form] Simple Form is not configured in the application and will use the default values. Use `rails generate simple_form:install` to generate the Simple Form configuration.
    [Simple Form] Simple Form is not configured in the application and will use the default values. Use `rails generate simple_form:install` to generate the Simple Form configuration.
    [Simple Form] Simple Form is not configured in the application and will use the default values. Use `rails generate simple_form:install` to generate the Simple Form configuration.
    Finished in 22.78 seconds (files took 0.12645 seconds to load)
    1 example, 0 failures
    If we configure SimpleForm earlier in the process, we get the warning
    only once, during the generation of the initializer:
    [Simple Form] Simple Form is not configured in the application and will use the default values. Use `rails generate simple_form:install` to generate the Simple Form configuration.
    Finished in 19.64 seconds (files took 0.13412 seconds to load)
    1 example, 0 failures
    It might be an issue with SimpleForm that during the configuration of
    the gem it warns that it's not configured.
    [fixes #452]
    [fixes #640]
Commits on Oct 27, 2015
  1. @tute

    Remove old deprecation

    tute committed
    This deprecation note was added almost exactly four years ago:
    2011-10-21. This was before we released version 1, so it's not needed
Commits on Oct 23, 2015
  1. @aaronrenner @tute

    Fix deprecation warning from capybara-webkit

    aaronrenner committed with tute
    When enabling javascript testing in a new app, the developer would
    receive the following message in their rspec output:
        [DEPRECATION] block_unknown_urls is deprecated. Please use Capybara::Webkit.configure instead:
          Capybara::Webkit.configure do |config|
        This option is global and can be configured once (not in a `before` or `setup` block).
    This change creates spec/support/capybara_webkit.rb that contains the
    configuration and removes code in spec_helper.rb triggering the
    deprecation warning.
    [fixes #636]
  2. @tute

    Release v1.33.0

    tute committed
    [ci skip]
  3. @tute

    Add quiet_assets as development dependency

    tute committed
    I typically search the logs to find parameters, response codes and
    stacktraces. Although we don't need to see what assets have been loaded,
    those logs take up more space than the aforementioned ones.
    `quiet_assets` hide the assets logs in development, making the log for
    the landing page on my current suspenders project go from 64 lines
    detailing assets, to 13 relevant lines.
    We also add explicit quiet_assets configuration in
    `config/application.rb` file so that way we can easily disable this gem
    when we need to debug assets in development.
Commits on Oct 21, 2015
  1. @jferris

    Reduce number of Puma processes and threads

    jferris committed
    Using a simple Suspenders application, I profiled memory usage for our
    default configuration, as well as a few others. I found the following:
    * A Puma cluster uses a master process and multiple worker processes.
      The amount of memory used by a cluster is equal to the memory usage of
      the master process plus the possible bloated size of a worker process
      times the number of worker processes.
    * At boot, a simple Suspenders application uses about 117MB for the
      master process and 109M for each worker.
    * After the first request is served, a process increases to around 117M,
      like the master process.
    * The amount of potential bloat increases with each thread, because it's
      possible for every thread to be handling a bloated request at once.
    * Using [siege], I determined that the expected bloat in a simple
      scenario is around 10M per thread. This will be much worse in some
    This provides the following formula for maximum memory usage under load:
        master_usage + worker_count * (worker_usage + bloat * thread_count)
    For this simple Suspenders application, this formula provides the
    following worst-case usage:
        117 + 3 * (117 + 10 * 5) = 618
    This is over the 512MB limit for a 1x Heroku dyno, and the application
    is very simple.
    I recommend changing to a default of two worker processes and two
    threads per dyno, changing the usage to:
        117 + 2 * (117 + 10 * 2) = 391
    This provides reasonable performance with a high memory ceiling. When
    applications begin to show troublesome performance characteristics under
    load, developers can tune the application's process and thread count
    according to its real-world memory usage, possibly upgrading the dyno
    size as appropriate.
Commits on Oct 20, 2015
  1. @derekprior

    Don't load i18n tasks in production

    derekprior committed
    This gem is used in development and test and is not required in
    production. At minimum, loading it in production is a memory use issue
    (however small), but it likely also adds overhead to every translation
    to track used keys.
    This could explain some complaints we've seen of slow view rendering on
    apps that I know to have been recently generated by suspenders.
  2. @derekprior

    Move refills to the development group

    derekprior committed
    Refills is not a runtime dependency. The gem is used strictly as a
    generator in development mode. It's memory footprint is not
    insignificant, so not loading in production will give us more headroom
    on Heroku.
Commits on Oct 16, 2015
  1. @thorncp

    Generate empty spec/factories.rb file

    thorncp committed
    Our guides say
    > Use one factories.rb file per project.
    and the factory_girl_rails documentation says
    > If you use factory_girl for fixture replacement and already have a
    > factories.rb file in the directory that contains your tests,
    > factory_girl_rails will insert new factory definitions at the top of
    > factories.rb.
    Generating this file will allow use to conform to our guides more
    easily. Will close # 622.
Commits on Oct 15, 2015
  1. @mcmire

    Place shoulda-matchers config at shoulda_matchers.rb

    mcmire committed
    We commonly name support files named after the gem that they are
    configuring, there's no need to put "_config" at the end of the file
Commits on Oct 9, 2015
  1. @tute

    Release v1.32.0

    tute committed
    [ci skip]
  2. @mcmire @tute

    Install Foreman automatically in setup script

    mcmire committed with tute
    * Right now, the setup script informs you to install Foreman manually
      if is not already installed. Unfortunately, it's very easy to miss
      this message amid all of the other output when you're running the
      script for the first time.
    * Foreman is a staple in our development toolkit, and not having it
      installed is frustrating for designers who aren't as familiar with
      Ruby as developers are. Having them ask developers for help every time
      this occurs isn't a long-term solution.
    To satisfy the above:
    * Just ensure that Foreman is installed.
    [fixes #619]
Something went wrong with that request. Please try again.